SecondaryNamenode持久化
Namenode掌握元数据,为了保证数据的安全–将内存中的数据存放到磁盘中
当我们的集群因断电等特殊原因产生问题的时候,问题解决,重新开机,会去磁盘上读取元数据,恢复到断电前的状态
备注:SecondaryNamenode永远也无法取代Namenode的位置,他只是Namenode的一个热备
edits
存放系统在运行过程中产生的操作信息
在SecondaryNamenode合并的时候edits又超过64M
个别现象
另外在启动一个edits
里面会同时存在两个edits
edits1和edits2
当fsimage会先和1进行合并,然后合并2
持久化的触发条件
超过3600S或者edits的大小超过64M
总结:持久化就是将namenode的元数据写入到磁盘中进行存储,当namenode重启的时候回去磁盘读取相应的元数据,恢复集群的状态—(内存断电丢失)
断电
持久化之前 -----再次启动,读取系统日志
持久化之后 -----读取磁盘中的数据,恢复状态
重复的断电
namenode和datanode的通信机制—心跳机制(每隔3秒,DN会向NN发送一次心跳 1分钟没有心跳,则认为DN挂掉)
安全模式:
- 恢复系统状态
- 检查DN的信息
- 有问题的DN进行修复
- 在传输的过程中断电 --数据丢失 如果数据特别重要,那只能提前进行预判进行相应的调整
- 传输完成之后断电 ------当我的集群重新恢复之后,NN会去读取元数据,对状态进行相应的恢复
- 若DN出现问题
在DN恢复之后,如果新的任务,根据情况,确定是否将新的文件上传
当上传block1的时候DN3挂掉,当前任务不会再上传,当DN3恢复之后,相当于一个新的节点物的时候才会写入到恢复的DN3上
当要计算DN3上的挂掉之前的数据的时候,会去1,2上寻找