SencondaryNamenode作用
sencondaryNamenode :将Namenode(主节点的)中的mateData元数据 edits.log 和fsimage的文件合并,并写入到磁盘中,为保证数据的安全------持久化操作备注:secodarynode永远无法代替Namenode,他只是Namenode的一个热备
*Secondary NameNode
定时与NameNode进行同步(定期合并文件系统镜像和编辑日志,然后把合并后的传给NameNode,替换其镜像,并清空编辑日志,类似于CheckPoint机制),但NameNode失效后仍需要手工将其设置成主机
持久化
当我们的集群因断电等特殊原因产生问题的时候,问题解决,重新开机,回去磁盘上读取元数据,恢复到电脑断电之前的状态
触发条件:
1. 时间超过3600秒
2. edits.log大小超过64MB
在持久化合并的时候,edits又超过64Mb?
1. 个别现象 另外在启动一个edits Namenode中会存在两个edits 分别进行合并
2. 如果是常态的话 需要调整edits.log 的触发条件的大小
Namenode 与 Datanode 中的通讯机制
Namenode 与 Datanode 中的通讯机制是心跳机制(每间隔3S,Datanode会向Namenode发送一情况(心跳),如果一分钟没有发送,则Namenode就会认为Datanode挂掉
安全模式
1. 回复系统状态
2. 检查Datanode的信息
3. 有问题的Datanode进行修复
<1>数据传输中断电 ---- 数据会丢失 如果数据特别重要就绪要预判持久化预判条件
<2>传输完成之后断电 --集群重新回复之后,Namenode回去读取元数据,对状态进行相应的回复
<3>若Datanode出现问题---在Datanode回复之后,如果有新的任务,确认是将新的文件上传
[==========Namenode========]
block1/ | \
DN1 DN2 DN3
当文件上传block的时候 DN3挂掉 当前任务不会上传,当DN3恢复之后.相当于一个新的节点,有新的任务的实惠才会写到DN3上
当要计算DN3上挂掉之前的数据时,回去找DN1和DN2
总结
持久化就是将Namenode的元数据写入到磁盘中,当Namenode挂了之后,重启的时候回去磁盘中去取响应的元数据,恢复集群的状态