- NameNode 管理元数据信息,元数据信息会定期的刷到磁盘中,其中的两个文件是edits(操作日志文件) 和fsimage(元数据镜像文件),新的操作日志不会立即和fsimage 进行合并,也不会刷到NameNode 的内存中,会先写到edits 中。当edits 文件的大小达到临界值(默认64M)或间隔时长(默认1h)的时候,checkpoint 会触发SecondaryNameNode 进行工作
- 当触发一个checkpoint 操作时,NameNode 会生成一个新的edits(edits.new 文件),同时SecondaryNameNode会将edits 文件和fsimage 镜像文件下载到本地
- SecondaryNameNode 将本地的fsimage 文件加载到内存中,然后再与edits 文件合并生成一个新的fsimage 文件 (fsimage.chpt)
- SecondaryNameNode将新生成的fsimage.chpt 文件上传到NameNode 节点
- 在NameNode 节点的edits.new 文件和fsimage.chpt 文件会替换原来的edits 文件和fsimage 文件,至此,一个轮回。
- 等待下一次checkpoint 触发secondaryNameNode ,一直循环操作
注:checkpoint 触发的条件可以在core-site.xml 文件中配置
<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
<description>The number of seconds between two periodic checkpoints.
</description>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
<description>The size of the current edit log (in bytes) that triggers
a periodic checkpoint even if the fs.checkpoint.period hasn't expired.
</description>
</property>