HDFS中SecondaryNamenode工作原理(7)

举报
大数据梦想家 发表于 2021/09/29 01:32:59 2021/09/29
【摘要】         我们在刚开始学习HDFS的时候,知道HDFS主要由管理者NameNode和DataNode组成。其中还有一个...

        我们在刚开始学习HDFS的时候,知道HDFS主要由管理者NameNode和DataNode组成。其中还有一个SecondaryNameNode在HDFS中扮演着辅助的作用,负责辅助NameNode管理工作。那么这篇博客,小菌就为大家分享secondarynameNode究竟是如何辅助管理的?
        看过小菌的上一篇博客《HDFS中Fsimage,Edits详解(6)》的小伙伴们都清楚,在NameNode已经启动情况下对HDFS进行的各种更新操作都会被记录在editlog中。但正是由于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
~
备注:
1.NN为NameNode的缩写
2.每执行一次上面的流程,最后都会有一个新版本的Edits和Fsimage代替之前的版本,但旧版本依然会保存在对应的节点上(NameNode和SeconddayNameNode都有旧版本的记录)

拓展:
1.完成合并的是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。
2.Hadoop进入安全模式时需要管理员使用dfsadmin的save namespace来创建新的检查点。
3.secondarynamenode在合并edits和fsimage时需要消耗的内存和namenode差不多,所以一般把namenode和secondarynamenode放在不同的机器上。
4.fsimage与edits的合并时机取决于两个参数,第一个参数是默认1小时fsimage与edits合并一次。第二个参数是hdfs操作次数达到1000000 也会触发合并!
其中:
第一个参数:时间达到一个小时fsimage与edits就会进行合并
dfs.namenode.checkpoint.period :3600
第二个参数:hdfs操作达到1000000次也会进行合并
dfs.namenode.checkpoint.txns :1000000
还有一个参数是每隔多长时间检查一次hdfs的操作次数
dfs.namenode.checkpoint.check.period :60

总结:

前提:不使用SNN,日志文件会很大,日志大会导致集群恢复到上次关机前的状态花费很长时间,这个时候集群处于安全模式,集群不可用。长时间处于安全模式。
目标:加快集群二次启动的速度。(减少集群二次启动的时间)
SecondaryNamenode周期性复制NameNode的FSIMAGE 和edits到本机(SecondaryNamenode本机),将两个文件进行合并,最终生成全新的Fsimage,将最新的Fsimage发送回Namenode 。
意义:辅助NameNode合并Fsimage Edits.减小了日志的大小,加快了集群的二次启动速度

附:SecondaryNamenode自己独立部署在有一个节点上。此节点的配置要与NameNode相同(至少,有条件也可以大于NameNode的配置)。

本次的分享就到这里了,小伙伴们有什么疑惑或好的建议可以积极在评论区留言,小菌后续还会推出HDFS系列的其他内容,希望大家持续关注小菌ヾ(๑╹◡╹)ノ"!


  往期内容回顾:
《HDFS文件系统介绍(1)》
《HDFS文件读写流程(2)》
《HDFS特性及缺点分析(3)》
《HDFS的高级命令使用——文件限额配置(4)》
《HDFS的安全模式与文件权限检验(5)》
《HDFS中Fsimage,Edits详解(6)》
《HDFS的shell常用命令大全》

文章来源: alice.blog.csdn.net,作者:大数据梦想家,版权归原作者所有,如需转载,请联系作者。

原文链接:alice.blog.csdn.net/article/details/102942142

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200