ZooKeeper是什么
Zookeeper是Hadoop项目的一个子项目
Zookeeper是源代码开放的分布式协调服务,由雅虎创建,是Google Chubby的开源实现。
它是一个针对大型分布式系统的高性能的可靠协调系统。
它将那些复杂的、容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并提供一系列简单易用的接口给用户使用。
为什么要使用ZooKeeper
大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程
大部分应用需要开发私有的协调程序,缺乏一个通用的机制。
协调程序的反复编写浪费成本,且难以形成通用、伸缩性好的协调器。
Zookeeper可以提供通用的分布式锁服务,用以协调分布式应用。
ZooKeeper的典型应用场景
命名服务
配置管理
集群管理(负载均衡)
分布式协调/通知
集群的角色
Leader Follower Observer
Leader服务器是整个ZooKeeper集群工作中的核心
Follower服务器是ZooKeeper集群状态的跟随者
Observer服务器充当一个观察者的角色
Leader 负责进行选举投票的发起和决议,更新系统状态
Follower 用于接收客户端的请求并向客户端返回结果,在选举Leader过程中参与投票。
ZooKeeper的工作原理
ZooKeeper的核心是原子广播
实现这个机制的协议叫做Zab协议
Zab协议有两种模式,他们分别是恢复模式和广播模式
ZooKeeper的数据模型
层次化的目录结构,命名符合常规文件系统规范
每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
znode中的数据可以有多个版本
节点不支持部分读写,而是一次性完整读写
客户端应用可以在节点上设置监视器
znode可以被监控,包括这个目录节点中存储数据的修改,子节点目录的变化等。
ZooKeeper节点
Znode有两种类型:
临时的(ephemeral)和持久的(persistent)
Znode类型在创建时确定并且之后不能再修改
Znode有四种形式的目录节点:
Persistent(持久的)
Persistent_sequential(持久有序的)
Ephemeral(临时的)
Ephemeral_sequential(临时有序的)
ZooKeeper的命令行操作
zkCli.sh –server 192.168.11.132连接到zookeeper服务。
ls 查看当前zookeeper中所包含的内容
ls /
create 的节点
create /zk myData创建一个新的znode
get 来查看znode节点中的字符串
get /zk
set 对znode节点所关联的字符串进行设置
set /zk chinatest1122
delete 删除znode
delete /zk
ZooKeeper 总结
ZooKeeper作为Hadoop项目的一个子项目,是Hadoop集群管理中一个必不可少的模块
ZooKeeper提供了一套很好的分布式集群管理的机制
ZooKeeper作为一个用于协调分布式程序的服务,必将在更多的场合发挥越来越重要的作用