分享

Zookeeper帮助Hadoop解决的问题

下文以YARN为例,描述Zookeeper是如何帮助YARN实现HA机制的

  • 创建锁节点
    所有的ResourceManager在启动的时候会竞争写一个/yarn-leader-election/pseudo-yarn-rm-cluster节点(临时节点),创建成功的ResourceManager节点变成Active节点,其他的切换为StandBy
  • 注册Watcher节点
    所有的standby的ResourceManager节点会向/yarn-leader-election/pseudo-yarn-rm-cluster节点注册一个Watcher
  • 主备切换
    当Active的ResourceManager节点出现异常或挂掉时,起在zookeeper上创建的临时节点也会被删除,standy的ResourceManager节点检测到该节点发生变化时,会重新发起竞争,直到产生一个Active节点
  • 如果集群中存在两个ResourceManager节点RM1,RM2,在通过竞争操作后,RM1变成了Active后,如果某个时间段RM1由于资源损耗比较严重,产生了假死的现象,此时的zookeeper会以为RM1这台机器出现了故障,于是发起新一轮的竞选,选了RM2作为Active,在RM2变成Active后,RM1恢复了服务但是它任然以为自己是Active的,此时就出现了两个Active的情况,这种情况又称为“脑裂”,为了解决这种问题可以在创建根节点的时候引入ACL控制,这样的话当RM1恢复后尝试更新数据时,会发现对应的节点必须提供RM2的ACL信息才可以更新对应的数据
  • 在Hadoop中负责解决该问题的组件是Hadoop-common 中的ActiveStandElector组件


没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条