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提供通过的分布式锁服务,用以协调分布式应用