- Fsimage与EditLog的合并步骤
由于EditLog不断增长,在NameNode重启时,会造成长时间NameNode处于安全模式,不可用状态,是非常不符合Hadoop的设计初衷。所以要周期性合并EditLog,但是这个工作由NameNode来完成,会占用大量资源,这样就出现了SecondaryNameNode,它可以进行checkpoint的工作。
安全模式:HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。
- 步骤如下
- 辅助namenode请求主namenode停止使用正在进行中的edits文件,这样新的编辑操作记录到一个新文件中。主namenode还会更新所有存储目录中的seen txid文件。
- 辅助namenode从主namenode获取最近的fsimage和edits文件(采用Http Get)。
- 辅助namenode将fsimage文件载入内存,逐一执行edits文件中的事务,创建新的合并后的fsimage文件。
- 辅助namenode将新的fsimage文件发送回主namenode(采用Http Put),主namenode将其保存为临时的ckp文件。(有个疑问ckp文件有什么特点?哪位知道麻烦告知。谢谢。)
- 主namenode重新命名临时的fsimage文件,便于日后使用。