hadoop hdfs namenode的edits log与fsimage是如何保证存储的元数据与内存中一致的?

本文详细解析Hadoop HDFS中Secondary NameNode如何通过合并edits log与fsimage来更新元数据的过程,确保即使在NameNode故障情况下,也能快速恢复最新状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在启动hadoop hdfs时,用jps命令可以看到有个secondaryNameNode节点,这个就是用于把namenode的edits log与fsimage合并的。。这两个合并后就是最新的元数据了

一、合并流程

1、namenode检测到edits log达到某个阈值后,此时会告知secondaryNameNode要进行合并操作了;

2、secondaryNameNode收到namenode的请求后,会下载namenode中的edits log与fsiamge到secondaryNameNode节点的机器中;

3、namenode收到secondaryNameNode的下载请求后,会再创建一个新的edits log,此时客户端的操作日志都会写入这个新的edits log中,然后才会把旧的edit log和原本的fsimage给secondaryNameNode;

4、secondaryNameNode收到edits log与fsiamge后,会按照edits log里面记录的日志操作,一步一步执行里面的操作,把数据更新到fsimage文件中,等edits log里的所有操作都执行完了,此时的fsimage文件已经是最新的了,然后把新的fsimage返回给namenode;

5、在secondaryNameNode处理过程中,如果客户端进行了增删改操作,这些新的操作就会写入第3步中创建的新的edits log中,

不会修改已经被传到secondaryNameNode的旧的edit log。这样可以保证在这个时候namenode宕机可以通过旧的fsimage+旧的edits log+新的edits log恢复元数据。

6、在secondaryNameNode把新的fsimage发送到namenode中后,namenode就会把旧的fsiamge替换为secondaryNameNode发送过来的新的fsimage;而旧的editlog也会删除;

上面几个步骤就保证了磁盘上的元数据与内存中的元数据是一致的,namenode宕机了也可以从磁盘中重新获得元数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值