HDFS之NN与2NN的关系解析
HDFS之NN与2NN的关系解析
HDFS集群在启动后会有三个守护进程:NameNode,SecondaryNameNode,DataNode。我们都知道DataNode是用来存放数据的,那么NameNode和SecondaryNameNode的关系又是怎样的呢?许多初学者根据名字可能会以为当NameNode出现故障时,SecondaryNameNode会自动成为新的NameNode,也就是NameNode的“热备”。下面就让我们一起看一下NN与2NN究竟是如何工作的吧!
NN与2NN的工作机制
第一阶段:Namenode的启动
●第一次启动NameNode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
●客户端对元数据进行增删改的请求。
●NameNode记录操作日志,更新滚动日志。
●NameNode在内存中对数据进行增删改查。
第二阶段:Namenode的启动
●Secondary NameNode询问NameNode是否需要checkpoint。直接带回NameNode是否检查结果。
●Secondary NameNode请求执行checkpoint。
●NameNode滚动正在写的edits日志。
●将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。
●Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
●生成新的镜像文件fsimage.chkpoint。
●拷贝fsimage.chkpoint到NameNode。
●NameNode将fsimage.chkpoint重新命名成fsimage。
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的深入学习之旅吧!
图文:孙梦丹
审核:米玉秋