名称空间映像和编辑日志

bejyjqdl  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(293)

在“hadoop最终指南”一书中,在namenodes和datanodes主题下提到:
namenode管理文件系统名称空间。它维护文件系统树以及树中所有文件和目录的元数据。此信息以两个文件的形式永久存储在本地磁盘上:名称空间映像和编辑日志。
次要namenode,尽管它的名称不是namenode。它的主要作用是定期将名称空间映像与编辑日志合并,以防止编辑日志变得过大。
我对这些文件的名称空间和编辑日志有一些混淆。
命名空间映像用于存储元数据。
所以,我的问题是
什么是编辑日志?它的作用是什么?
您能解释一下“它的主要作用是定期将名称空间映像与编辑日志合并,以防止编辑日志变得过大”这句话吗?

pieyvz9o

pieyvz9o1#

有人能告诉我什么是编辑日志吗?这个日志文件的作用是什么?
最初当namenode第一次启动 fsimage 文件本身将为空。当ever namenode收到create/update/delete请求时,该请求首先被记录到 edits 耐久性文件曾经保存在 edits 还进行了文件内存更新。因为所有读取请求都是从元数据的内存快照中提供的。
它的主要作用是定期将名称空间映像与编辑日志合并,以防止编辑日志变得过大。
所以,你看到 edits 文件不断增长,在这一点上没有边界。现在,如果namenode被重新启动或者由于某种原因关闭并恢复,那么它就没有元数据的内存表示,因此它必须读取 edits 文件并在内存中重建快照,这可能需要一段时间 edits 文件大小。
作为 edits 它本身是一个wal(写前日志)所有事件都必须一个接一个地写(仅附加),文件中不能有任何更新来防止随机磁盘查找。
为了防止这种开销(或保持 edits 引入了secondarynamenode。snn的唯一目的是确保 edits 文件未超出界限。因此,默认情况下,snn会触发一个称为 checkpointing 什么时候 edits 文件达到64mb或每一小时(以先到者为准)。
检查点过程本身很简单,snn告诉nn它的当前角色 edits 记录并创建一个名为 edits.new ,然后snn复制fsimage并从nn编辑文件,并开始将编辑文件中的事件应用于已存在的fsimage文件(从nn带来),完成后,新的fsimage文件将发送回nn,nn将现有的fsimage替换为snn发送的新文件,并重命名 edits.newedits . nn现在有一个 fsimage 应用了来自 edits 文件。
因此,如果namenode在检查点完成后重新启动,namenode只需加载 fsimage 只应用最近的更新 edits 日志(在检查点完成后被填充),以确保它具有更高效的命名空间的最新视图。

相关问题