现在的位置: 首页 > 综合 > 正文

NameNode启动中image文件处理流程

2013年08月28日 ⁄ 综合 ⁄ 共 861字 ⁄ 字号 评论关闭

      NameNode时与image文件相关的大概有下面三步操作:

 

第一步  加载image

NameNode启动后时首先加载硬盘上的fsimage文件(保持了整个命名空间)和edits文件(保持了命名空间的操作日志),在内存中merge后将新的fsimage写到磁盘上,即做一次checkpoint。

其中加载过程如图1所示:

 


 

                                                  图1 加载image文件流程

通常NameNode配置两个目录来存放fsimage&edits文件,分布是本地磁盘和NFS,防止NameNode所在机器磁盘坏掉后数据丢失。

每个目录下都保持了一个fstime文件,里面记录了最近一次checkpoint时间。NameNode启动时根据checkpoint时间加载最新的一份数据。

edits.new是个临时文件,只有SecondaryNameNode正在做checkpoint的时候存在。

 

     第二步 保存image

    NameNode加载完fsimage&edits文件后,会将merge后的结果写到磁盘上。写的过程会对本地磁盘和NFS 依次 做图2所示的操作。

 

 

                                       图2 保存image文件流程

这一步做完后,磁盘上有一份原始的fsimage文件,一份最新checkpoint文件:fsimage.ckpt,另外edits&edits.new为空文件(4个字节)。

 

    第三步 滚动image文件

写完checkpoint后,NameNode会对磁盘上的文件做一次滚动(重命名),如图3所示:

 

 

                                     图3 滚动image文件流程

该步骤将fsimage.ckpt重命名为fsimage(覆盖原有fsimage文件),edits.new重命名为edits(覆盖原有edits文件),并将最新时间戳写入fstime文件。

抱歉!评论已关闭.