Namenode维护了edits和fsimage文件来记录元数据,但是Namenode本身不适合进行edits和fsimage的合并操作,Namenode本身操作checkpoint的时候,只有在safemode才可以,当HDFS正常工作时这个操作由secondary Namenode来完成,并将合并后的fsimage发到Namenode。
触发Checkpoint条件:
- 达到定时时间.
- Edits新数据达到指定threhold
相关配置
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
</property>
<property>
<name>dfs.namenode.checkpoint.txns</name>
<value>1000000</value>
<description>操作动作次数</description>
</property>
<property>
<name>dfs.namenode.checkpoint.check.period</name>
<value>60</value>
<description>检查操作动作次数的时间间隔</description>
</property>
合并步骤:
- Secondary namenode请求是否需要Checkpoint
- Secondary namenode请求执行Checkpoint
- 滚动Edits文件
- 拷贝所有edits文件和fsimage到Secondary namenode
- 加载edits和fsimage到内存进行合并
- 生成新的fsimage.chkpoint
- 拷贝fsimage.chkpoint到namenode