vlambda博客
学习文章列表

HDFS之NN与2NN的关系解析

HDFS之NN与2NN的关系解析

HDFS集群在启动后会有三个守护进程:NameNode,SecondaryNameNode,DataNode。我们都知道DataNode是用来存放数据的,那么NameNode和SecondaryNameNode的关系又是怎样的呢?许多初学者根据名字可能会以为当NameNode出现故障时,SecondaryNameNode会自动成为新的NameNode,也就是NameNode的“热备”。下面就让我们一起看一下NN与2NN究竟是如何工作的吧!

HDFS之NN与2NN的关系解析

NN与2NN的工作机制

HDFS之NN与2NN的关系解析

第一阶段:Namenode的启动

●第一次启动NameNode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。

●客户端对元数据进行增删改的请求。

●NameNode记录操作日志,更新滚动日志。

●NameNode在内存中对数据进行增删改查

HDFS之NN与2NN的关系解析

第二阶段:Namenode的启动

●Secondary NameNode询问NameNode是否需要checkpoint。直接带回NameNode是否检查结果。

●Secondary NameNode请求执行checkpoint。

●NameNode滚动正在写的edits日志。

●将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。

●Secondary NameNode加载编辑日志和镜像文件到内存,并合并。

●生成新的镜像文件fsimage.chkpoint。

●拷贝fsimage.chkpoint到NameNode。

●NameNode将fsimage.chkpoint重新命名成fsimage。

HDFS之NN与2NN的关系解析


HDFS之NN与2NN的关系解析

Fsimage和Edits解析

(一)概念

Namenode被格式化后将在/hadoop-2.7.3/data/tmp/hdfs/name/current目录下产生以下文件:

    ① Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息。

    ② Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。

    ③ seen_txid文件: seen_txid文件保存的是一个数字,就是最后一个edits_的数字。

    ④ VERSION:记录了nameNode的相关信息。

注意:每次NameNode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成NameNode启动的时候就将fsimage和edits文件进行了合并。


(二)oiv查看fsimage文件

●基本语法:

hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径

●cat 转换后文件输出路径


(三)oev查看edits文件

●基本语法:

hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径

●cat 转换后文件输出路径


小编今天的分享就到这里了,感兴趣的同学快来和小编一起开启HDFS的深入学习之旅吧!


HDFS之NN与2NN的关系解析
HDFS之NN与2NN的关系解析

图文:孙梦丹

审核:米玉秋