Hadoop中的高可用机制

HDFS的高可用

可用性用小时来衡量,如:7*24小时、364 * 24高可用

不能简单的通过keepalive来进行NameNode的高可用。因为NameNode需要有大量的状态信息维护。

可行的方法:两个NameNode,一个对外工作(active),一个后补(standby),这就涉及到元数据同步的问题。可以将edits保存到第三方,standy的NameNode即可收到edits,从而保持元数据的更新。

如果active宕机了,standby立即可以切换到active状态并对外提供服务。

为了系统的稳定,第三方的组件最好也实现高可用。叫做qjournal,基于ZooKeeper实现,功能是进行edits日志管理。这样提高了可靠性和可用性,但是牺牲了一部分数据一致性。

每个NameNode中有个程序ZKFC用来同qjournal同步自己的状态,基于ZooKeeper做状态切换。ZKFC通过RPC的接口调用NameNode,然后就可以确认NameNode的状态。一旦active上面的ZKFC发现active挂掉了,它向ZooKeeper发送状态变化信息。

standby的ZKFC监听到节点变化后,通知NameNode切换到Active状态,随后在ZooKeeper上建立状态锁。通知切换之前为了保证之前的NameNode一定被隔离,ZKFC会直接调用kill -9杀掉之前的NameNode进程,如果等一段时间没有响应,会调用用户脚本来进行操作,用户脚本返回0表示隔离成功。

先前宕机的active修复重启后,ZKFC会检测到状态锁的存在,让其处于standby状态。此时不需要SecondaryNameNode了,交给standby的NameNode负责。

YARN的高可用

YARN由于不需要记录元数据和状态信息,所以YARN的高可用不是那么迫切,但是也实现了高可用。就是做了多个ResourceManager。

机制也很简单,就在ZooKeeper上注册一把锁,如果ResourceManager挂了,通过一些选举,重新顶上去就可以了。

如果挂的时候用户正在跑程序,也没关系,用户的程序再跑一次即可。

最后上一张图。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值