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集群




100301- ZooKeeper 基本概念介绍_数据


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、分布式队列