SecondarynameNode如何辅助管理FSImage与Edits文件

SecondarynameNode工作原理
由于editlog记录了集群运行期间所有对HDFS的相关操作
所以这个文件会很大。

集群关闭后再次启动时会将Fsimage,editlog加载到内存中,
进行合并,恢复到集群的。

由于editlog文件很大,集群再次启动时会花费较长时间。
为了加快集群的启动时间,所以使用secondarynameNode辅助NameNode合并Fsimage,editlog。

1、 secnonaryNN通知NameNode切换editlog 本地下载

2、secondaryNN从NameNode中获得FSImage和editlog(通过http方式)

3、secondaryNN将FSImage载入内存,然后开始合并editlog,合并之后成为新的fsimage

4、secondaryNN将新的fsimage发回给NameNode

5、NameNode用新的fsimage替换旧的fsimage

 

 

 

完成合并的是secondarynamenode,会请求namenode停止使用edits,暂时将新写操作放入一个新的文件中(edits.new)。

secondarynamenode从namenode中通过http get获得edits,因为要和fsimage合并,所以也是通过http get 的方式把fsimage加载到内存,然后逐一执行具体对文件系统的操作,与fsimage合并,生成新的fsimage,然后把fsimage发送给namenode,通过http post的方式。

namenode从secondarynamenode获得了fsimage后会把原有的fsimage替换为新的fsimage,把edits.new变成edits。

Hadoop进入安全模式时需要管理员使用dfsadmin的save namespace来创建新的检查点。

secondarynamenode在合并edits和fsimage时需要消耗的内存和namenode差不多,所以一般把namenode和secondarynamenode放在不同的机器上。
fsimage与edits的合并时机取决于两个参数,第一个参数是默认1小时fsimage与edits合并一次。

第一个参数:时间达到一个小时fsimage与edits就会进行合并
dfs.namenode.checkpoint.period :3600

第二个参数:hdfs操作达到1000000次也会进行合并
dfs.namenode.checkpoint.txns :1000000

还有一个参数是每隔多 长时间检查一次hdfs的操作次数
dfs.namenode.checkpoint.check.period :60

 

 

点赞
  1. wangzhenyu说道:
    Google Chrome Windows 10
    这个人写问文章真好
    1. wangzhenyu说道:
      Google Chrome Windows 10
      我看到了 哇塞 这个写的太棒了

wangzhenyu进行回复 取消回复

电子邮件地址不会被公开。必填项已用 * 标注