Hadoop 及 YARN 的高可用原理

HDFS 高可用配置参考http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

Hadoop 高可用介绍

Hadoop2.x中的高可靠指的是可以同时启动2个NameNode。其中一个处于工作状态(Active ),另一个处于随时待命状态(Standby)。当一个Active NameNode所在的服务器宕机时,可以在数据不丢失的情况下,手工或者自动将另一个Standby NameNode切换到Active 并继续提供服务。

JournalNode 介绍

  1. 为了使备用节点(StandbyNameNode)将其状态与Active节点保持同步,两个节点与一组名为“JournalNode”(JN)的单独守护程序进行通信。
  2. 当Active NameNode执行任何命名空间修改时,会把最近的操作记录写到本地的一个edits文件中(edits file),并传输到大部分中JournalNode(写入2n+1个journalnode上,只要有n+1个写入成功就认为这次写入操作成功了)。
  3. standby namenode定期的检查,从JournalNode把最近的edit文件读过来,然后把edits文件和fsimage文件合并成一个新的fsimage。Standby NameNode可以确保在集群出错时,NameNode命名空间状态已经完全同步了。
  4. standby namenode合并生成新的fsimage后会通知active namenode获取这个新fsimage。active namenode获得这个新的fsimage文件之后,替换原来旧的fsimage文件。

主备节点的切换

为了提供快速故障切换,还需要备用节点具有关于集群中块的位置的最新信息。为了实现这一点,DataNodes被配置为具有两个NameNodes的位置,并且向两者发送块位置信息和心跳。 
    人工切换是通过执行HA管理的命令来改变namenode的状态,从standby到active,或者从active到standby。自动切换则在active namenode挂掉的时候,standby namenode自动切换成active状态,取代原来的active namenode成为新的active namenode,HDFS继续正常工作。
    对于HA群集的正确操作至关重要,因此一次只能有一个NameNodes处于活动状态。否则,命名空间状态将在两者之间迅速分歧,冒数据丢失或其他不正确的结果。为了确保这个属性并防止所谓的“分裂大脑情景”,JournalNodes将只允许一个NameNode作为一个作者向JournalNodes写数据。在故障切换期间,要变为活动状态的NameNode将简单地接管写入JournalNodes的角色,这将有效地防止其他NameNode继续处于活动状态,允许新的Active安全地进行故障切换。

Zookeeper 在 Hadoop中的作用

主备节点的自动切换需要配置zookeeper。active namenode和standby namenode把他们的状态实时记录到zookeeper中,zookeeper监视他们的状态变化。当zookeeper发现active namenode挂掉后,会自动把standby namenode切换成active namenode。 

JournalNode 和 Zookeeper 的区别

  1. JournalNode的作用是在HA的两个NameNode之间保持editlog的共享同步。
  2. Zookeeper的作用是两个NameNode之间互相的错误感知(active的掉了,standby的可以看见)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值