命名空间图像和编辑日志

 隆威SU_486 发布于 2022-12-11 11:12

从" Hadoop The Definitive Guide " 一书中,在Namenodes和Datanodes主题下,提到:

namenode管理文件系统命名空间.它维护文件系统树以及树中所有文件和目录的元数据.此信息以两个文件的形式持久存储在本地磁盘上:命名空间映像和编辑日志.

辅助namenode,尽管它的名称不作为namenode.它的主要作用是定期将命名空间映像与编辑日志合并,以防止编辑日志变得太大.

我对这些文件命名空间编辑日志有些困惑.

命名空间图像用于存储元数据.

所以,我的问题是

    什么是编辑日志?它的作用是什么?

    你能否解释一下这句话:" 它的主要作用是定期将命名空间图像与编辑日志合并,以防止编辑日志变得太大."?

Ashrith.. 21

请任何人都可以解释一下编辑日志是什么?这个日志文件的作用是什么?

最初,当NameNode首次启动时,fsimage文件本身将为空.当NameNode收到创建/更新/删除请求时,该请求首先被记录到edits文件中以保持持久性,一旦在edits文件中持久存在,也会进行内存中更新.因为所有读取请求都是从元数据的内存中快照提供的.

它的主要作用是定期将命名空间映像与编辑日志合并,以防止编辑日志变得太大.

所以,你看到edits文件在这一点上不断增长.现在,如果NameNode重新启动或由于某种原因关闭并重新启动,它没有元数据的内存表示,因此,它必须读取edits文件并在内存中重建快照,这可能需要一段时间基于该edits文件尺寸.

由于edits它本身是一个WAL(预写日志),所有事件必须一个接一个地写入(仅附加),文件中可能没有更新以防止随机磁盘搜索.

为了防止这种开销(或保持edits文件可管理性),引入了SecondaryNameNode.SNN的唯一目的是确保edits文件不会超出界限.因此,默认情况下,SNN会触发一个进程,该进程checkpointingedits文件达到64MB或每隔一小时(始终为第一个)时调用.

检查点过程本身很简单,SNN告诉NN角色当前edits日志并创建一个新的编辑文件edits.new,SNN然后复制来自NN的fsimage和编辑文件并开始将编辑文件中的事件应用于已存在的fsimage文件(从NN带来),一旦完成,新的fsimage文件被发送回NN,NN用SNN发送的新fsimage替换现有的fsimage并重命名edits.newedits.NN现在具有fsimageedits文件应用事件的当前版本.

因此,如果在检查点完成后重新启动NameNode,NameNode必须只加载fsimage内存并仅应用edits日志中的最新更新(在检查点完成后填写)以确保它具有最新查看命名空间哪个更有效率.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有