HDFS 2.X checkpoint原理

  1. Checkpoint 简介
    HDFS 将文件系统的元数据信息存放在 fsimage 和一系列的 edits log 文件中。
    在启动 HDFS 集群时,系统会先加载 fsimage,然后逐个执行所有 edits log 文件中的每一条操作,来获取完整的文件系统元数据。
  2. Fsimage 和 edits log 简介
    HDFS 的存储元数据是由 fsimage 和 edits log 文件组成。fsimage 存放上次 checkpoint 生成的文件系统元数据(并不是 Active Namenode 内存中最新的元数据状态),edits log 存放文件系统操作日志。checkpoint 的过程,就是合并 fsimage 和 edits log文件,然后生成最新的 fsimage 的过程。
    Fsimage 文件: fsimage 里保存的是 HDFS 文件系统的元数据信息。每次 checkpoint 的时候生成一个新的 fsimage 文件,fsimage 文件同步保存在 active namenode 上和 standby namenode 上。是在 standby namenode 上生成并上传到 active namenode 上的。
    Edits log 文件: active namenode 会及时把 HDFS 的修改信息(创建,修改,删除等)写入到本地目录和 journalnode 上的 edits log文件,每一个操作以一条数据的形式存放。edits log 文件默认每2分钟产生一个。正在写入的 edits log 文件以 edits_inprogress_*格式存在。
  3. Checkpoin 过程
    开启 HA 的 HDFS,有 active 和 standby 两个 namenode 节点。他们的内存中保存了一样的集群元数据信息。
    因为 standby namenode 已经将集群状态存储在内存中了,所以创建检查点 checkpoint 的过程只需要从内存中生成新的 fsimage。
    这里 standby namenode 称为 SBNN,active namenode 称为 ANN
    SBNN 查看是否满足创建检查点的条件(距离上次 checkpoint 的时间间隔大于等于 dfs.namenode.checkpoint.period
    edits log 中的事务条数达到 dfs.namenode.checkpoint.txns 限制)
    SBNN 将内存中当前的状态保存成一个新的文件,命名为fsimage.ckpt_txid。其中 txid 是最后一个 edit log 中的最后一条事务的 ID(transaction ID,不包括 inprogress)。然后为该 fsimage 文件创建一个MD5 文件,并将 fsimage 文件重命名为 fsimage_txid。
    SBNN 向 ANN 发送一条 HTTP GET 请求。请求中包含了 SBNN 的域名,端口以及新 fsimage 的 txid。
    ANN 收到请求后,用获取到的信息反过来向 SBNN 再发送一条 HTTP GET 请求,获取新的 fsimage 文件。这个新的 fsimage 文件传输到 ANN 上后,也是先命名为 fsimage.ckpt_txid,并为它创建一个 MD5 文件。然后再改名为 fsimage_txid,checkpoin过程完成。

参考:
https://www.cnblogs.com/hit-zb/p/11932211.html
https://www.jianshu.com/p/eb077c9d0f1e

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值