SecondaryNamenode 持久化

今天要说的是 SecondaryNamenode

SecondaryNameNode就是来帮助解决上述问题的,它的职责是合并NameNode的edit logs到fsimage文件中。

SecondaryNameNode永远无法取代Namenode的位置上,他是Namenode的一个热备;
首先,Namenode 是掌握一批元数据的(描述数据的数据)----》在内存里
持久化------》为了保证元数据的安全,将内存中的数据存放到磁盘中。

有这样一个经常遇到的情况:在使用电脑的过程中断电

当我们的集群因断电等特殊原因产生问题的时候,问题加爵,重新开机,会在磁盘上读取元数据,恢复到断电之前的状态;在这个恢复的过程就要使用到持久化
Namenode 不能持久化的原因是:
1:其实它可以做:需求小。占用内存小,不印象计算效率
2:不可以做:Namenode本来工作量就大,有可能在持久化的过程中宕机;

在电脑开机后,Namenode中的edits.log就开始准备存放系统在运行过程中产生操作的信息,同时有fsimage; fsimage相当于一个粘板,跟随edits.log一同保存到SNN中,然后在SNN中合并成一个fsimage再次发往NN中,这时NN中会有新的edits.log,重复这一操作
如下画图:
过程
在SNN中合并的时候。edits又超过了64M:
1:个别现象
另外启动一个edist 里面会同时存在两个edits
2:常态
就要对集群进行调整,调大edits的大小;

持久化的触发条件:超过3600S或者edits的大小超过64M
总结:持久化就是将NN的元数据写入到磁盘中进行存储,当NN挂了重启的时候回去磁盘中读取相应的元数据,恢复集群的状态----》内存断电丢失

断电问题:
在持久化之前:再次启动,读取系统日志
持久化之后: 读取磁盘中的数据,恢复数据

重复的断电
NN 和DN的通信机制—》心跳机制:每隔三秒,DN会向NN发送一次心跳,一分钟没有心跳,则认为DN挂掉了;

安全模式有:
1:恢复系统状态:(持久化)

2:检查DN的信息:(心跳机制)

扫描二维码关注公众号,回复: 6762088 查看本文章

3:有问题的DN进行修复
在出现问题的DN修复后。如果有新的任务,根据情况是否将新的文件上传
在修复后将不再继续往这个DN中存储,如要查询这个信息,可以在备份中查询;当下达新的任务时,这个修复的DN就可以工作了;

猜你喜欢

转载自blog.csdn.net/sincere_love/article/details/91469306