1.SNN CheckPoint的处理流程
配置中配置做CheckPoint的两个条件,一个是文件大小editlog大于多大就做,另一个是时间维度,多长时间做一次。
(1)SNN首先检查是否需要进行checkpoint操作,如果上面两个条件任何一个满足了就可以
(2)通过RPC 向NameNode发送请求,rollEditLog()NameNode关闭现在的edit的stream,同时生成一个edit.new,并打开加入写入的源。
(3)SNN从NN处download fsimage文件和edit文件并进行merge
(4)merge结束后通知NN从SNN处拉去FSImage文件保存在NN的FSImage.ckpt上面
(5)一切顺利结束的话将edit.new重命名为edit,并open stream,将FSImage.ckpt重命名为FSImage,更新FSTime文件,更新时间戳
2、NN重启对Image和Edits的处理
先对各个目录的image和edit文件有效性进行判断,同时读取checkpoint的最近值。
如果image.ckpt存在,同时edit.new存在那么也许正进行一半,无法确定是否完成image拉取,删掉image.ckpt。否则将image.ckpt rename到image。
然后正常的读取FSImage,将edit merge进去。
如果存在edit.new 也merge进去。