检查点机制,Fsimage与Editlog的合并过程理解

fsimage文件:即命名空间映像文件,是内存中的元数据在硬盘上的checkpoint,包含文件系统中的所有目录和文件inode的序列化信息。

editlog:文件系统的写操作首先把它记录在editlog中。

检查点机制:定时将fsimage和editlog合并并产生新的fsimage的过程,这一过程非常耗费cpu和IO,一般放在Secondary Namenode(非HA)和Standby Namenode(HA)中完成。

(一)secondary namenode执行检查点操作(非HA):
在这里插入图片描述

  1. secondary namenode通过周期性(五分钟),通过getEditLog获取editlog大小,当其达到合并的大小时通过RollEditLog方法进行合并。

  2. namenode停止使用edits文件,并生成一个新的临时的edits.new文件。

  3. Secondarynamenode通过namenode内建的Http服务器,以get的方式获取edits与fsimage文件。Get方法中携带着fsimage与edits的路径。

  4. Secondaryname将fsimage载入内存并逐一执行edits中的操作,生成新的fsimage文件。

  5. 执行结束后,会向namenode发送http请求,告知namenode合并结束,namenode通过http post的方式获取新fsimage文件。

  6. Namenode更新fsimage文件中记录检查点执行的时间,并改名为fsimage文件。

  7. Edit.new文件更名为edit文件。

注:由此可知namenode 与 secondarynamenode 有着相似的内存需求,因为secondarynamenode也会将fsimage载入内存,因此secondarynamenode需要运行在一台专门机器上。

(一)Standby Namenode执行检查点操作(hadoop2以后的HA模式):

HA有两个集群,一个是Active Namenode,另一个是Standby Namenode,中间有奇数个JournalNode在持久化editlog(只有持久化成功才能保证命名空间修改的安全性)。Active Namenode会向JournalNode发送更新的editlog文件,Standby Namenode会观察JournalNode中editlog的变化,不断读取最新的editlog文件与当前命名空间合并,所以,Standby Namenode始终保持最新命名空间。editlog和fsimage合并过程在Standby Namenode进行,Standby Namenode向Active Namenode发送http请求,Active Namenode根据请求的事务id、下载地址和端口下载fsimage文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值