在 HDFS(Hadoop Distributed File System)中,NameNode 是文件系统的核心组件,负责管理文件系统的元数据。为了保证 NameNode 的高可用性和恢复能力,HDFS 引入了 checkpoint 机制。Checkpoint 是将 NameNode 的元数据持久化的一种方式,主要是为了减少 NameNode 恢复时所需的时间。
1.Checkpoint 流程概述
- EditLog:NameNode 持续记录文件系统元数据的所有变更操作到 EditLog 文件中。
- FsImage:NameNode 会定期将当前的文件系统元数据快照存储到 FsImage 文件中。
- Checkpoint:Secondary NameNode 会周期性地将 EditLog 应用到最新的 FsImage 上,并生成一个新的合并后的 FsImage 文件,称为 checkpoint。
2.Checkpoint 流程详细步骤
-
启动 Secondary NameNode:
- Secondary NameNode 启动并定期检查 NameNode 的 EditLog 和 FsImage。
-
下载元数据:
- Secondary NameNode 从 NameNode 下载最新的 FsImage 和 EditLog 文件。
-
合并元数据:
- Secondary NameNode 将 EditLog 中的变更操作应用到下载的 FsImage 上,生成一个新的合并后的 FsImage 文件。
-
上传新 FsImage:
- Secondary NameNode 将新的 FsImage 文件上传回 NameNode,并通知 NameNode 该文件已生成。
-
更新元数据:
- NameNode 将新的 FsImage 文件保存为当前的元数据快照,并将 EditLog 文件截断或重命名为新的文件,开始记录新的变更操作。