Hadoop学习系列之:zookeeper分布式协调服务
zookeeper分布式协调服务
1. zookeeper定义
Zookeeper是google chubby的一个开源实现,是hadoop的分布式协调服务,包含一个简单的原语集,分布式应用程序可以基于它实现同步服务、配置维护、命名服务等。
作用:实现数据在各个节点间事务性同步,主备管理,微型数据库(kafka会用到)
2. zookeeper的角色
zookeeper为3个或3个以上奇数个的集群部署,方便投票
角色分为领导者、跟随者、客户端、观察者
- 领导者leader:负责进行投票的发起和决议,更新系统状态
- 跟随者follower:用于接受客户端请求,向客户端返回结果,在选主过程中参与投票
- 观察者observer:可以接受客户端连接,将写请求转发给leader,但不参加投票过程,只同步leader状态。目的是为了扩展系统,提高读取速度
- 客户端client:请求发起方
3. zookeeper分布式锁
zookeeper有分布式锁功能用于主备选举:比如HDFS中的NN都需要向ZK注册,先注册成功的成为active NN,另一个成为standby,同时ZK分布式锁关闭。同样适用于Yarn
Zookeeper通过心跳机制监控NN状态
4. 为什么使用Zookeeper
- 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)
- 目前,大部分应用需要开发私有的协调程序,缺乏通用机制
- 协调程序的反复编写浪费且难易形成通用、伸缩性好的协调器
- zookeeper提供通过的分布式锁服务,用以协调分布式应用