本文共 660 字,大约阅读时间需要 2 分钟。
HDFS namenode操作流程及安全模式说明
第一步:加载name目录下最新的fsimage_xxx019文件,将其目录树结构维护至内存(此处尚未处于关机前的最终状态)。
第二步:处理edits_inprogress_xxxx0160文件,将其重命名为edits_0000000000000000160-0000000000000000169,并生成新的edit文件edits_inprogress_xxx170,同时更新seen_txid为170。随后,将文件范围内的edit日志文件加载至内存,通过重放操作维护最新目录树结构。
第三步:如果触发了检查点条件,namenode将会自行执行检查点操作,将内存中的最新状态持久化为新fsimage文件,并删除之前保留的最旧fsimage文件。具体而言,namenode始终保留两份相近的fsimage文件作为备份。
关于安全模式:整个过程从启动到退出均处于安全模式。在namenode收到datanode的心跳反馈且达到或超过99.9%的块数时,安全模式将退出。需要注意的是,集群首次启动时,此时编辑文件尚未生成,因此不会出现安全模式。
为什么客户端的访问操作不直接存储至fsimage?
这是因为随着时间推移,fsimage文件会不断增长(虽然并非绝对增长,但相对于总量而言)。不将访问操作直接存储至fsimage可避免性能瓶颈。我们通过生成edit文件分批存储访问数据,edit文件最大尺寸为64M。一旦达到此上限,系统即会新生成一个edit文件,以确保操作性能。
转载地址:http://qasmz.baihongyu.com/