HDFS中NameNode工作机制
1.NameNode的主要功能
(1)负责客户端请求的响应;

(2)负责元数据的管理。

2.元数据管理
namenode对数据管理采用了三种存储形式:

(1)内存元数据;

(2)磁盘元数据镜像文件;

(3)数据操作日志文件(可以通过日志运算出元数据)。

2.1元数据的存储机制
(1)内存中有一份完整的元数据(meta data);

(2)磁盘中有一个元数据镜像文件(fsimage),fsimage是HDFS文件系统存于硬盘中的元数据检查点,里面记录了自最后一次检查点之前HDFS文件系统中所有目录和文件的序列化信息;

(3)用于衔接内存meta data和持久化元数据镜像fsimage之间的操作日志(edits文件);edits保存了自最后一次检查点之后所有针对HDFS文件系统的操作,比如:增加文件、重命名文件、删除目录等等。

这两种文件存放在${dfs.namenode.name.dir}/current/目录下,文件名以edits_和fsimage_命名,该目录为NameNode上的本地目录。为了保证这两种元数据文件的高可用性,一般的做法,将dfs.namenode.name.dir设置成以逗号分隔的多个目录,这多个目录至少不要在一块磁盘上,最好放在不同的机器上。

2.2手动查看元数据
由于这fsimage和edits是经过序列化的,非文本的,因此无法直接查看,Hadoop2.X中,hdfs提供了查看这两种文件的工具。

(1)命令hdfs oiv用于将fsimage文件转换成其他格式的,如文本文件、XML文件。

该命令需要以下参数:

必须参数:-i 输入fsimage文件,-o 输出文件路径,如果该路径已存在,则覆盖.

可选参数:-p 将fsimage转换成哪种格式,有Ls/XML/FileDistribution,默认为Ls。

-h 显示帮助信息。

(2)命令hdfs oev用于查看edits文件

该命令需要以下参数:

必须参数:-i 输入edits文件,如果是xml后缀,表示XML格式,其他表示二进制。

可选参数:-p 将edits转换成哪种格式,有Ls/XML/FileDistribution,默认为Ls。

-h 显示帮助信息。

-f 重置输入edits文件中的transaction IDs。

-r 使用recovery模式,跳过edits中的错误记录。

-v 打印处理时的输出。

2.3 元数据的checkpoint
每隔一段时间,会由secondary namenode将namenode上积累的所有edits和一个最新的fsimage下载到本地,并加载到内存进行merge,这个过程称为checkpoint。

checkpoint操作的触发条件配置参数,在hdfs-site.xml文件配置

dfs.namenode.checkpoint.check.period=  #检查触发条件是否满足的频率,60秒

dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary   // 配置从Active namenode 下载的镜像文件临时存放的节点。

dfs.namenode.checkpoint.edits.dir=${dfs.namenode.checkpoint.dir}    //  配置从Active namenode 下载的编辑日志临时存放的节点。

dfs.namenode.checkpoint.max-retries=  #最大重试次数

dfs.namenode.checkpoint.period=  #两次checkpoint之间的时间间隔3600秒

dfs.namenode.checkpoint.txns= #两次checkpoint之间最大的操作记录

checkpoint的作用
namenode和secondary namenode或者 standby namenode的工作目录存储结构完全相同,所以,当namenode故障退出需要重新恢复时,可以从 secondary namenode的工作目录中将fsimage拷贝到namenode的工作目录,以恢复namenode的元数据。

参考文章

https://blog.csdn.net/qq_34715484/article/details/80166665

Hadoop NameNode 元数据以及查看元数据的方式的更多相关文章

  1. Hadoop NameNode元数据相关文件目录解析

    在<Hadoop NameNode元数据相关文件目录解析>文章中提到NameNode的$dfs.namenode.name.dir/current/文件夹的几个文件: 1 current/ ...

  2. MongoDB导入bson文件(元数据),mongorestore命令行方式导入

    MongoDB导入bson文件(元数据),mongorestore命令行方式导入 不推荐使用MongoDB Compass等图形化数据库管理软件,例如MongoDB Compass只能导入json和c ...

  3. NameNode是如何存储元数据的?

    1.NN的作用 保存HDFS上所有文件的元数据! 接受客户端的请求! 接受DN上报的信息,给DN分配任务(维护副本数)! 2.元数据的存储 元数据存储在fsiamge文件+edits文件中! fsim ...

  4. hadoop namenode HA集群搭建

    hadoop集群搭建(namenode是单点的)  http://www.cnblogs.com/kisf/p/7456290.html HA集群需要zk, zk搭建:http://www.cnblo ...

  5. hadoop namenode启动过程详细剖析及瓶颈分析

    NameNode中几个关键的数据结构 FSImage Namenode 会将HDFS的文件和目录元数据存储在一个叫fsimage的二进制文件中,每次保存fsimage之后到下次保存之间的所有hdfs操 ...

  6. Hadoop记录-Hadoop NameNode 高可用 (High Availability) 实现解析

    Hadoop NameNode 高可用 (High Availability) 实现解析   NameNode 高可用整体架构概述 在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDF ...

  7. Hadoop namenode启动瓶颈分析

    NameNode启动过程详细剖析 NameNode中几个关键的数据结构 FSImage Namenode会将HDFS的文件和目录元数据存储在一个叫fsimage的二进制文件中,每次保存fsimage之 ...

  8. 通过tarball形式安装HBASE Cluster(CDH5.0.2)——Hadoop NameNode HA 切换引起的Hbase错误,以及Hbase如何基于NameNode的HA进行配置

    通过tarball形式安装HBASE Cluster(CDH5.0.2)——Hadoop NameNode HA 切换引起的Hbase错误,以及Hbase如何基于NameNode的HA进行配置 配置H ...

  9. hadoop一些常见报错的解决方式

    Failed to set setXIncludeAware(true) for parser 遇到此问题通常是jar包冲突的问题. 一种情况是我们向java的lib文件夹加入我们自己的jar包导致h ...

随机推荐

  1. isolate sqflite demo

    main.dart import 'package:flutter/material.dart'; import 'demo_isolates.dart'; import 'package:rxdar ...

  2. 利用ABAP 740的新关键字REDUCE完成一个实际工作任务

    ABAP 740从2013年发布至今已经过去很长的时间了,下面这张图来自SAP社区博客: ABAP News for Release 7.40 – What is ABAP 7.40? 图中的ABAP ...

  3. HashMap的put()与扩容

    1. put() final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { HashMap.Nod ...

  4. Delphi INI 文件读写

    delphi中,配置文件的相关操作. () INI文件的结构: ;这是关于INI文件的注释部分 [节点] 关键字=值 ... INI文件允许有多个节点,每个节点又允许有多个关键字, “=”后面是该关键 ...

  5. windows下使用virtualenv对python进行多版本隔离开发

    1.windows下安装virtualenv pip install virtualenv 2.进入项目目录,创建虚拟环境,例如: virtualenv venv (默认python版本) virtu ...

  6. 爬虫之post请求与请求传参

    一.POST请求 class Postspider(scripy.Spider): name = "post" # allowed_domains = ["www.xxx ...

  7. websocket之简易聊天室

    一,带昵称的群聊 #!/usr/bin/env python # -*- coding:utf8 -*- import json from flask import Flask, request, r ...

  8. Centos7启动流程及systemd中Nginx启动配置

    Centos7启动流程: 1.post(Power-On-Self-Test) 加电自检 主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主 ...

  9. 最新my.cnf可用于5.6&5.7

    [MySQL]prompt = [\\u@\\h][\\d]>\\_  #自定义登录提示信息 [mysqld]#基本设置#user = mysql #用户名sql_mode =“STRICT_T ...

  10. ASP.NET 中TextBox设置ReadOnly="true" 无法取到值的做法

    当 TextBox设置了ReadOnly="true" 后,要是在前台为控件添加了值,后台是取不到的,值为“空” 原理没想通,说不清楚微软是出于什么考虑的,https://www. ...