第一阶段 :namenode启动
(1)第一次启动namenode格式化后 ,创建fsimage和edits文件。如果不是第一次启动 ,直接加载编辑 日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求
(3)namenode记录操作日志 ,更新滚动日志。
(4)namenode在内存中对数据进行增删改查
第二阶段 :Secondary NameNode工作
(1)Secondary NameNode询问namenode是否需要checkpoint。直接带回namenode是否检查结果。
(2)Secondary NameNode请求执行checkpoint。
(3)namenode滚动正在写的edits日志
(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
(5)Secondary NameNode加载编辑日志和镜像文件到内存 ,并合并。
(6)生成新的镜像文件fsimage.chkpoint
(7)拷贝fsimage.chkpoint到namenode
(8)namenode将fsimage.chkpoint重新命名成fsimage
区别
(1)NameNode负责管理整个文件系统的元数据 ,以及每一个路径(文件)所对应的数据块信息。
(2)SecondaryNameNode主要用于定期合并命名空间镜像和命名空间镜像的编辑日志
联系:
(1)SecondaryNameNode中保存了一份和namenode一致的镜像文件(fsimage)和编辑日志(edits)。
(2)在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。