fsimage文件丢失_hadoop fsimage edits关系

fsimage = name table  ,  存放namonode中所有数据,运行时数据加载到内存中存放

edits_inprogress 类似于LSM树中的Log,在向hdfs写的过程都向此文件存放,

当存的数据到一定程度/或者定期间隔多久,会把此文件内容跟新到fsimage

刚开始写数据时会同时向namonode内存和edit中写,

此时立刻读取刚写入的数据是读取namenode内存和原fsimage内存的数据,

在当edits的数据合并到fsimage时,在读取写入的那个数据就会在fsimage中读取。

5a340803c739c775782d64845fff8b8b.png

ce9ea5e1031f1b0972130cb297324b4a.png

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进去。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值