HDFS的EditLog和FsImage作用详细解析,超详细!(含部分非原创图片,大部分原创总结)

 EditsLog和FsImage分别是什么?

Editslog:保存了以HDFS最新版本的FsImage为起点起对hdfs中文件的操作信息

FsImage:某一时刻内存元数据在本地磁盘的映射,用于维护管理文件系统树,即元数据。FsImage中存储的信息就相当于整个hdfs在某一时刻的一个快照。

EditLog和FsImage的保存位置:

①非HA集群

FsImage保存在配置文件中dfs.namenode.name.dir设置的路径下,保存FsImage文件和EditsLog文件

②HA集群

EditsLog文件保存在参数df.journalnode.edits.dir设置的路径下,即edits文件由qjournal集群管理.

关于editLog和FsImage的保存时间:

editLog和FsImage的保存数量默认为2个(每个保存最新的两个),可以通过配置dfs.namenode.num.checkpoints.retained参数来设计默认保存的数量.

如何使用editLog和FsImage恢复HDFS的数据:

只需要在启动HDFS读取最新版本的Fsimage和EditsLog合并就可以恢复HDFS的最新状态。

editLog和FsImage是如何合并的?

人话:当集群启动的时候,SNN首先告诉NN,你现在的EditLog别用了,创建一个新的,这个新的就叫做Edits.new,然后它用用HTTP GET获取到NameNode的最新的Edits和Fsimage,拿到它这里将Fsimage和Edits合并为一个新的Fsimage,发给NameNode,那么NameNode收到之后会把这个新的Fsimage替换掉旧的Fsimage,在此期间,接收到的新的操作请求都已经记录在了Edits.new里面,因此过程十分巧妙。

(注意:NameNode和SecondaryNameNode都保存的有FsImage和EditLogs,但是版本不一样。由此我们可以思考,如果NameNode的FsImage的EditLog损坏?那么我们将SNN的Fsi和EditLogs复制到NN的对应的位置,能否恢复出损坏时刻的数据?

答案是不能恢复最新时刻,而是上一个检查点checkpoint的数据。)

什么是SecondaryNameNode?

SecondaryNameNode就是NameNode的一个存档,并且会自动定期保存,这个定期的时间就叫做检查点checkpoint如下所示。

checkpoint机制:是否距离上次合并过了1小时或者事务条数是否达到100万条(可配置)

EditLog和FsImage的重要性:

fsimage包含Hadoop文件系统中的所有目录和文件idnode的序列化信息,所以如果fsimage丢失或者损坏了,那么即使DataNode上有块的数据,但是我们没有文件到块的映射关系,我们也无法用DataNode上的数据!所以定期及时的备份fsimage和edits文件非常重要!!!!!!!!!!!!!!!!!!!!!

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值