服务器如何实现数据的持久化
hadoop 中数据的持久化
基础的了解
1、SecondaryNamenode (作为Namenode 的热备)
SecondaryNamenode永远无法取代Namenode(主结点)的位置,他只是Namenode的一个热备
2、Namenode主节点作用
Namenode(主节点)掌握第一批 元数据(描述数据的数据)
3、两种数据存储方式特点
内存:存储量小、贵、但是快
硬盘: 存储量大、便宜、但是慢
4、数据安全
为了保证元数据的安全 —将内存中的数据存放到磁盘中
- 持久化
当我们的集群因断电等特殊原因产生问题的时候,问题解决,重新开机,会去磁盘上读取元数据,恢复到之前的状态
- Namenode不能进行持久化的原因
可以做存储操作的状况:需求小,占用内存少,不影响计算效率
不可以做存储操作的情况:Namenode本身工作已经很多,有可能在持久化的过程中出现宕机
备注:SecondaryNamenode永远无法取代Namenode的位置,他只是Namenode的一个热备。
- 持久化的触发条件
默认是超过3600S或者edits的大小超过64M(64M是对edits的限制)
- 持久化的流程
(1)系统启动时会产生俩个文件(存放在内存中)
一个是edits.log 存放系统在运行过程中产生的操作信息
fsimage 系统日志 系统的运行信息
(2)SecondaryNamenode会把俩个文件合起来组成一个新的fsimage文件然后写入磁盘
(3)NameNode将fsimage拉回去,与此同时,还会有新的操作信息产生,会一直循环往返
- 特殊情况
如:在SecondaryNamenode合并时候,edits又超过64M。有两种处理方法。
1)如果只是个别现象,另外再启动一个edits里面会同时存在俩个edits,edits1和edits2,fsimage会先和1合并,然后合并2。
2)如果是常态的话,就需要对集群进行调整,调大edits的大小
- 如果发生断电
持久化之前 —— 再次启动,读取系统日志
持久化之后 —— 读取磁盘中的数据
注数据恢复是通常是恢复系统的日志文件,恢复到该时刻信息。
- 心跳机制
Namenode和DataNode每隔3S,DataNode会向NameNode发送一次机制,1分钟没有心跳,则认为DataName挂掉
- 安全模式:
1.恢复系统状态
2.检查DataNode的信息
3.对有问题的DataNode进行修复
- 断电时数据处理机制
1)在传输的过程中断电 数据丢失 如果数据特别重要,只能提前进行预判,进行相应的调整
2)在传输完成后断电 数据不会丢失 当我的集群重新恢复之后,NameNode会去读取元数据,然后进行恢复(内存)
3)如果DataNode出现问题 在DataNode恢复之后,如果新的任务,根据情况,确定是否将新的文件上传