nn和2nn的关系
他们之间的关系就是 2nn是帮nn将edits.log合并成 fsimage。
首先元数据是保存在nn内存中的,这就面临一个持久化的问题,hadoop的持久化策略类型与redis,redis的RDB就是讲内存中的状态保存一份到磁盘,生成慢但是加载高效。redis的AOF就是讲数据的结算流程记录记录一份到磁盘,生成快,但是加载教慢。然后hadoop的fsimage类型与RDB,是内存的镜像,持久化元数据时候,只能读不能写,hadoop的edits.log记录了hadoop所有元数据的变动,确保数据安全性,缺点大而慢,所以需要一个角色来定期地把 edits.log定期合并为fsimage,但是这个操作给nn的话效率过低,所以引入一个新的角色2nn专门用于 edits和fsimage的合并
nn工作机制
首先集群刚启动的时候,namenode加载fsimage和edist_inprogress 到内存中,以此保证元数据是最新的,然后开始正常工作,接收客户端进行元数据的增删改查,然后nn先更新edits_inprogress文件再通知客户端,在更新自己的内存。
2nn每个一段时间就询问nn是否需要进行合并,当定时时间到了或者是edi