NameNode 作用是:管理HDFS的名称空间,管理Block映射信息,配置副本策略,处理客户端读写请求
2NN并非是NameNode热备,他的作用是,辅助namenode工作,定期合并镜像文件和编辑日志,紧急情况下恢复NameNode
个人理解就是,2nn帮助namenode完成edits向fsimage的合并工作。edits.inprogress记录每一步具体操作,并另命名编号保存,fsimage是edits的集合压缩包。
工作流程如下:
Namenode中
启动NameNode时,加载编辑日志Edits和镜像文件fsimage到内存(第一次启动创建镜像文件和编辑日志)
客服端发起增删改查请求
namenode上编辑日志Edits开始滚动,记录请求
namenode执行请求
SecondaryNameNode中
2nn向NameNode询问是否chinkpoint请求(满足触发条件1定时2edits占内存达到一定数值)
NameNode反馈是否同意执行
开始执行时,Namenode中滚动编辑日志edits.inprogress,生成最新编号日志比如edits.12138和生成新的空的edits.inprogress
将所有镜像文件和编辑日志拷贝到2nn
2nn将编辑日志和镜像文件加载到内存并合并
生成新的镜像文件fsimage.chkpoint
拷贝镜像文件fsimage.chkpoint回NameNode
NameNode中重新命名为fsimage并覆盖掉旧的