为什么我们需要编辑日志来维护hdfs中的更改

mlnl4t2r  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(364)

为什么我们需要一个中介来记录hdfs中的变化呢。为什么不能将更改直接写入fsimage。为什么我们需要中间人呢。请帮忙

p1iqtdky

p1iqtdky1#

它在检查点时使用。
一个典型的编辑从10到100字节不等,但是随着时间的推移,足够的编辑会累积起来变得不方便。这些大的编辑日志可能会产生几个问题。在极端情况下,它可以填满节点上的所有可用磁盘容量,但更微妙的是,当namenode重新应用所有编辑时,较大的编辑日志会严重延迟namenode的启动。这就是检查点的作用。
检查点是一个进程,它获取一个fsimage并编辑日志,然后将它们压缩成一个新的fsimage。这样,namenode就可以直接从fsimage加载内存中的最终状态,而不是重放一个可能没有边界的编辑日志。这是一个更有效的操作,并减少了namenode启动时间。
但是,创建一个新的fsimage是一个i/o和cpu密集型操作,有时需要几分钟来执行。在检查点期间,namesystem还需要限制来自其他用户的并发访问。因此,hdfs不是暂停活动namenode来执行检查点,而是将其延迟到secondarynamenode或备用namenode,这取决于是否配置了namenode高可用性。根据namenode是否配置了高可用性,检查点机制会有所不同;我们两个都去。
阅读链接了解更多详细信息

相关问题