服务器如何实现数据的持久化

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恢复之后,如果新的任务,根据情况,确定是否将新的文件上传