ZooKeeper目录
ZooKeeper详解
Client开发(Java)
场景案例开发
ZK集群WEB界面
WEB监控
一、ZK体系结构
1、Server端具有fast fail特性,无单点故障。采用Leader/Follower模式,采用文件系统目录树型结构。例如:
/NameService/aa,该节点即时目录和文件,通过路径作为一个唯一标识。该节点及时目录又是文件
2、zookeeper用户存储协调数据,如 状态、位置、配置信息
3、节点维护一个状态stat结构(包括数据变化版本号、ACL变化、时间戳),以允许缓存验证与协调更新。多当节点发生变化,多一个版本。客户
端获取数据的同时也会获取版本号。
4、节点具有一个访问控制列表(ACL)来约束访问操作,即具有权限控制
二、Watches
1、ZooKeeper对Node的增、删、改、查 都可触发监听
2、watch事件是一次性触发器,当watch监视的数据发生变化时候,通知该watch的client,即 watcher
3、watch事件 异步发送给观察者
4、客户端监听一个Node,总是现获取watch事件,再发现节点的变化
三、ZooKeeper在Hadoop平台典型应用
1、Storm集群
2、HBase集群
HRegionServer把自己以Ephmeral方式注册到ZooKeeper,使得HMaster可以随时感知HBase健康状况
其中:Ephmeral表示临时节点方式注册,当HRegionServer节点宕机后,HMaster通过zk可以知道哪个节点出了问题
总结,ZooKeeper应用三大块内容
Storm应用开发和集群监控
MapReduce应用开发
HBase应用开发
四、ZooKeeper流行的应用场景
1、分布式应用配置管理
发布和管理,就是将数据发布zk上,供订阅者动态获取数据,实现配置信息集中管理和动态更新。例如: 全局配置文件,地址列表非常适用
2、NameService
分布式命名服务,通过zk的create node api 创建,创建一个全局唯一的路径
3、分布式通知/协调
3.1 ZooKeeper 中特有watcher注册于同步机制,实现分布式环境不同系统之间的通知与协调,实现对数据实时处理
3.2 不同系统都对ZK上同一个znode进行watch,监听znode的变化(包括znode以及子节点),其中一个系统update了znode,
那么另一个系统就会收到通知,并作出相应处理
4、分布式锁
传统的锁:可以通过syncronized关键字锁对象或者锁类,比较容易
分布式锁:保证数据的强一致性,即用户只要完全相信每时每刻,zk集群中的任意节点(一个zk server)上的相同的znode数据一定是相同的。分布式锁分成两类: 保持独占和控制时序
5、集群管理
HBase Master选举时zk经典的使用场景;
Storm集群管理
6、分布式队列