1 Zookeeper的由来
来源于雅虎研究院,意思是动物园管理员,借鉴了Google的一篇论文《The Chubby Lock Service For losely coupled distributed System》
- Yahoo 2010年
- Hadoop集群
- Hive
- Pig
- Hbase
2 zookeeper结构
Zookeeper旨在分布式应用中,提供可靠的、可扩展的、分布式的、可配置的协调机制来管理整个集群的状态
知识点:
1,zookeeper有一个根节点 /(可以通过 ls /查看)
2,每一个节点都可以有自己的子节点
3,每一个节点称为znode节点
4,多个znode节点最终所形成称为znode树
5,每个znode节点都可以存储数据
6,zookeeper为了提供快速的数据访问,会将数据维系在内存中
7,zookeeper为了防止数据丢失,也会在磁盘上进行落地存储,存储的路径可以通过配置文件来指定(zookeeper/config/zoo.cfg下,dataDir=/home/software/zookeeper-3.4.7/tmp)
8,zk的所有操作指令,比如 查看、创建、更新、删除都是基于路径来操作的。
9,zookeeper中的路径是具有全局唯一性的,所有可以基于这个特性来实现命名服务
3Zookeeper服务端指令
指令 |
说明 |
sh zkServer.sh start |
启动zk服务的 |
sh zkServer.sh stop |
停止zk服务 |
sh zkServer.sh restart |
重启zk服务 |
sh zkServer.sh status |
查看zk服务角色,有: Standalone Leader Follower Observer |
sh zkCli.sh |
进入zk客户端 |
4Zookeeper客户端指令
指令 |
说明 |
示例 |
ls |
查看 |
ls / 查看根路径 ls /park01 查看park01路径 |
create |
创建 |
create /park02 "" create /park02/node01 创建park02的子节点 |
get |
获取指定节点信息 |
cZxid = 0x2 #创建此节点的事务id ctime = Wed Jan 17 10:55:25 PST 2018 #创建此节点的时间戳 mZxid = 0x2 #修改此节点的事务id mtime = Wed Jan 17 10:55:25 PST 2018 #修改此节点的时间戳 pZxid = 0x4 cversion = 1 dataVersion = 0 aclVersion = 0 ephemeralOwner= 0x0 #如果此节点不是临时节点,则为0 dataLength = 9#数据长度 numChildren = 1 #子节点数量 |
set |
更新节点数据 |
set /park01 hellozk |
delete |
删除子节点为空的节点 |
delete /park01 |
rmr |
递归删除指定节点 |
rmr /park02 |
quit(或ctrl+c) |
退出客户端 |
|
create -e |
创建临时节点,当创建此节点的客户端下线时,节点被删除。 |
|
create -s |
创建顺序节点,每次创建节点时,会跟上一个递增的顺序号 |
|
create -e -s |
创建临时顺序节点 |
5Zookeeper的应用场景
5.1 集群管理
a,掌控集群服务器的数据
b,掌控集群服务器的地址
c,监控集群服务节点的运行状态,是正常运行还是宕机
5.2 统一命名服务:
为集群中的每台服务器命名,便于管理。要求命名要具备全局唯一性