更新时间:2017-09-01 来源:黑马程序员云计算大数据培训学院 浏览量:
鼻祖级应用,ResourceManager在整个hadoop中算是单点,为了实现其高可用,分为主备ResourceManager,zookeeper在其中管理整个ResourceManager。
可以想象,主备ResourceManager最初是主RM提供服务,如果一切安好,则zookeeper无用武之地。然而,总归会出现主RM提供不了服务的情况。于是会出现主备切换的情况,而zookeeper正是为主备切换保驾护航。
先来推理一下,主备切换会出现什么问题。传统的主备切换,可以让主备之间维持心跳连接,一旦备机发现主机心跳检测不到了,则自己切换为主机,原来的主机等待救援。这种方式有两个问题,一是由于网络抖动,负载过大等问题,备机检测不到心跳并不能说明主机一定挂了,有可能一定时间后主机或网络恢复,这时候主机并不知道备机已经切换为主机,2台主机互相争用,可能造成脑裂;二是如果一些数据集中在主机上面,则备机切换时由于同步延时势必会损失掉一部分的数据。
如何解决这些问题?早期的方式提供了不少解决方案,比如备机一旦切换为主机,则通过电源控制直接切断主机电源,简单粗暴,但是此刻备机已经是单点,如果主机是因为量撑不住而挂,那备机有可能会重蹈覆辙,最终导致整个服务不可用。
zookeeper又是如何解决这个问题的呢?
zookeeper作为第三方集群参与到主备节点中去,当主备启动时会在zookeeper上竞争创建一个临时锁节点,争用成功者则充当主机,其余备机;
所有备机会监听该临时锁节点,一旦主机与zookeeper间session失效,则临时节点被删除;
一旦临时节点被删除,备机开始重新申请创建临时锁节点,重新争用为主机;
用zookeeper如何解决脑裂?实际上主机争用到节点后通过对根节点做一个ACL权限控制,则其他抢占的机器由于无法更新临时锁节点,只有放弃成为备机。
zookeeper使用了非常简单又现成的方式来解决的这个问题,比起其他方案方便不少,这也是为啥zookeeper流行的原因。说白了,就是把复杂操作封装化精简化。
本文版权归黑马程序员云计算大数据培训学院所有,欢迎转载,转载请注明作者出处。谢谢!云计算大数据培训之Hadoop组件:zookeeper(2)
2017-09-01云计算大数据培训之Hadoop组件:zookeeper(1)
2017-09-01云计算大数据培训之Spark-Streaming的基本原理以及预写日志机制和checkpoint(3)
2017-09-01云计算大数据培训之Spark-Streaming的基本原理以及预写日志机制和checkpoint(2)
2017-09-01云计算大数据培训之Spark-Streaming的基本原理以及预写日志机制和checkpoint(1)
2017-09-01云计算大数据培训之10个常见误解:算法即预言家、大数据必干净(下)
2017-08-31