NameNode和SecondaryNameNode工作机制

NameNode和SecondaryNameNode工作机制

HDFS集群中采用定期合并FsImage(镜像文件)和Edits(编辑日志)来备份NameNode内存中的元数据防止数据的断电丢失,定期合并FsImage和Edits的操作由SecondaryNamenode完成。

图示:
NameNode和SecondaryNameNode工作机制
详解:

  1. 第一阶段:NameNode启动
    (1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
    (2)客户端对元数据进行增删改的请求。
    (3)NameNode记录操作日志,更新滚动日志。
    (4)NameNode在内存中对元数据进行增删改。
  2. 第二阶段:Secondary NameNode工作
    (1)Secondary NameNode询问NameNode是否需要CheckPoint并直接带回NameNode结果。
    (2)Secondary NameNode请求执行CheckPoint。
    (3)NameNode滚动正在写的Edits日志。
    (4)第一次CheckPoint需要将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode,如果不是第一次CheckPoint,只拷贝编辑日志到Secondary NameNode,因为Secondary NameNode中也保存了上一次的合并的结果镜像文件。
    (5)Secondary NameNode加载编辑日志和镜像文件到内存,合并。
    (6)生成新的镜像文件fsimage.chkpoint。
    (7)拷贝fsimage.chkpoint到NameNode。
    (8)NameNode将fsimage.chkpoint重新命名成fsimage。