Fsimage是hdfs文件的检查点,也可以理解为整个hdfs在某一时刻的快照,就是这个时刻的hdfs上所有的文件块和目录,分别的状态,位于哪些个datanode,各自的权限,各自的副本个数等序列化信息。在namenode启动后,会将对hdfs节点的操作(写操作更新,删除等)记录在editlog,secondarynamenode负责周期性的将fsimage合editlog合并(可以设置周期或者定时任务合并),具体合并的步骤如下:
- 将对hdfs的操作写入一个新创建的editlog.new文件,
- 将旧的editlog和fsimage文件通过http的get方式发送给secondarynamenode;
- Secondarynamenode周期性(五分钟)的将fsimage文件写入内存,根据editlog中的操作,一步步执行,生成新的fsimage文件;
- 通过http的post方式将新的fsimage文件发送给namenode,替换旧的fsimage文件
- 最后将editlog.new文件重命名为editlog文件。