为保证元数据的安全,需要将数据存放在磁盘中----持久化
HDFS持久化主要是--SecondaryNamenode和NameNode将数据持久化,写入磁盘中
引言:
NameNode不能持久化的原因 :
可以做:需求小,占用内存小,不影响计算效率
不可做:NameNode本身工作已经多,可能会宕机。也会造成数据缺失
在NameNode中会存放两种文件,
1.edits.log 存放系统在运行过程产生的操作信息
2.fsimage 存放系统信息
持久化的过程
1.SecondaryNamenode会将NameNode中edits.log和fsimage,进行合并产生新的fsimage,将其写入磁盘。
2.NameNode还会继续生产新edits.log数据
3.NameNode会将SecondaryNamenode产生的新的fsimage拉取过来,再与edits.log继续存写数据
4.当NameNode满足一定的条件后,SecondaryNamenode又会继续拉取继续持久化。
NameNode持久化条件
超过时间3600S或edits的大小超过64M
故:NameNode持久化是将NameNode的元数据写入磁盘中进行存储,当NameNode挂了之后重启的时候,会去磁盘读取相应的元数据,恢复集群的状态
通常服务器需要持久化有两种情况
1.在持久化之前 服务器启动时,读取系统日志fsimage
2.在持久化之后 读取磁盘中的数据edits.log数据,恢复状态
NameNode与DataNode通信机制是---心跳机制(每个三秒,DataNode会向NameNode发送一次心跳,一分钟没有心跳,则认为DataNode挂掉)
服务器的安全模式
1.恢复系统状态
2.检查DataNode的信息
3.有问题的DataNode进行修复
1)、在传输过程中断电---数据丢失,故应提前预判进行相应的调整
2)、传输完成之后断电
集群恢复之后,NameNode会读取元数据,对状态进行回复
3)、当检查DataNode有问题
根据情况,判断是否将新的文件上传