-
第一阶段:namenode启动
1. 第一次启动NN格式化后创建fsimage和edits文件.如果不是第一次启动,直接加载 编辑日志和镜像文件到内存
2. 客户端对元数据进行增删改的请求
3. NN记录操作日志,更新滚动日志
4. NN在内存中对数据进行增删改查 -
第二阶段:Secondary NameNode 工作
1. SecondaryNameNode访问NN是否需要checkpiont,直接带回nn是否检查结果 默认一个小时或者edits达到1w次,临界值(默认是64MB)
2. SNN请求执行checkpoint
3. NN滚动正在写的edits日子
4. 将滚动前的编辑日志和镜像文件拷贝到SNN
5. SNN 加载编辑日志和镜像文件到内存,然后合并
6. 生成新的镜像文件fsimage.chkpoint
7. 拷贝fsimage.chkpoint到namenode
8. namenode将fsimage.chkpoint重新命名成fsimage
注: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>
原文:https://blog.csdn.net/lzm1340458776/article/details/42398111