Zookeeper 客户端常用的 shell 命令
Zookeeper 客户端常用的 shell 命令
概览
命令基本语法 | 功能描述 |
---|
help | 显示所有操作命令 |
ls path | 使用 ls 命令来查看当前 znode 的子节点 [可监听] -w 监听子节点变化 -s 附加次级信息 |
create | 普通创建 -s 含有序列 -e 临时(重启或者超时消失) |
get path | 获得节点的值 [可监听] -w 监听节点内容变化 -s 附加次级信息 |
set | 设置节点的具体值 |
stat | 查看节点状态 |
delete | 删除节点 |
deleteall | 递归删除节点 |
节点的增删改查
连接服务端
不加 -server
就默认连接 localhost
-server
后跟 Zookeeper 服务端的 ip 和端口
1
| bin/zkCli.sh -server hadoop102:2181
|
创建节点
1 2 3
| create 普通创建 -s 含有序列 -e 临时(重启或者超时消失)
|
1 2 3 4 5 6 7 8
| # 普通创建:在根节点下创建一个 houge 节点 create /houge # 含有序列:会自动在 shuaige 后面拼上序列号 create -s /shuaige # 临时节点:这个 hehe 节点在客户端断开连接时候会消失 create -e /hehe # 创建一个带值的结点 create /qie hehe
|
查看节点列表
1 2 3
| ls path 使用 ls 命令来查看当前 znode 的子节点 [可监听] -w 监听子节点变化 -s 附加次级信息
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [zk: hadoop102:2181(CONNECTED) 10] ls / [hehe, houge, qie, shuaige0000000006, zookeeper] # 附加次级信息 [zk: hadoop102:2181(CONNECTED) 26] ls -s / [hehe, houge, shuaige0000000006, zookeeper]cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x200000012 cversion = 14 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 4
|
获取节点的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [zk: hadoop102:2181(CONNECTED) 11] get /qie hehe # 加上节点信息 [zk: hadoop102:2181(CONNECTED) 12] get -s /qie hehe cZxid = 0x200000015 ctime = Sat May 07 16:34:20 CST 2022 mZxid = 0x200000015 mtime = Sat May 07 16:34:20 CST 2022 pZxid = 0x200000015 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 4 numChildren = 0
|
修改节点的值
1 2 3
| [zk: hadoop102:2181(CONNECTED) 13] set /qie xixi [zk: hadoop102:2181(CONNECTED) 14] get /qie xixi
|
删除节点
1 2 3 4 5
| [zk: hadoop102:2181(CONNECTED) 15] ls / [hehe, houge, qie, shuaige0000000006, zookeeper] [zk: hadoop102:2181(CONNECTED) 16] delete /houge [zk: hadoop102:2181(CONNECTED) 17] ls / [hehe, qie, shuaige0000000006, zookeeper]
|
递归删除,删除一个非空节点时会提示Node not empty
此时使用 deleteall 命令
1 2 3 4 5 6 7 8 9
| [zk: hadoop102:2181(CONNECTED) 18] create /qie/ha Created /qie/ha [zk: hadoop102:2181(CONNECTED) 19] ls / [hehe, qie, shuaige0000000006, zookeeper] [zk: hadoop102:2181(CONNECTED) 20] delete /qie Node not empty: /qie [zk: hadoop102:2181(CONNECTED) 21] deleteall /qie [zk: hadoop102:2181(CONNECTED) 22] ls / [hehe, shuaige0000000006, zookeeper]
|
节点信息参数详解
我们加上 -s
参数的话,会显示节点的详情信息,下面是参数解释:
以下面节点为例:
1 2 3 4 5 6 7 8 9 10 11 12 13
| [zk: hadoop102:2181(CONNECTED) 23] get -s /shuaige0000000006 null cZxid = 0x20000000f ctime = Sat May 07 16:24:03 CST 2022 mZxid = 0x20000000f mtime = Sat May 07 16:24:03 CST 2022 pZxid = 0x20000000f cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 0
|
参数名 | 含义 |
---|
cZxid | 创建节点的事务 zxid,每次修改 ZooKeeper 状态都会产生一个 ZooKeeper 事务 ID。事务 ID 是 ZooKeeper 中所有修改总的次序。每次修改都有唯一的 zxid,如果 zxid1 小于 zxid2,那么 zxid1 在 zxid2 之前发生。 |
ctime | 节点创建时间,znode 被创建的毫秒数(从 1970 年开始) |
mZxid | znode 最后更新的事务 zxid |
mtime | 节点修改时间,znode 最后修改的毫秒数(从 1970 年开始) |
pZxid | znode 最后更新的子节点 zxid |
cversion | znode 子节点变化号,znode 子节点修改次数 |
dataVersion | znode 数据变化号 |
aclVersion | znode 访问控制列表的变化号 |
ephemeralOwner | 如果是临时节点,这个是 znode 拥有者的 session id。如果不是 临时节点则是 0。 |
dataLength | znode 的数据长度 |
numChildren | znode 子节点数量 |
节点监听
监听节点内容变化
命令:get -w [path]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 先建立一个带值的节点 [zk: hadoop102:2181(CONNECTED) 1] create /houge heihei Created /houge [zk: hadoop102:2181(CONNECTED) 2] ls / [houge, shuaige0000000006, zookeeper] [zk: hadoop102:2181(CONNECTED) 3] get /houge heihei # 开启监听节点内容 [zk: hadoop102:2181(CONNECTED) 4] get -w /houge heihei # 另一台机器也登到 zk 集群上,修改这个节点内容 [zk: hadoop103:2181(CONNECTED) 3] get /houge heihei [zk: hadoop103:2181(CONNECTED) 4] set /houge xixi # 102 上显示出了监听内容 [zk: hadoop102:2181(CONNECTED) 5] WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/houge
|
注意:监听生效一次,后续就不会生效了,如果还想监听内容变化,需要再次跑命令监听
监听节点上的路径变化
命令:ls -w [path]
1 2 3 4 5 6 7 8 9 10 11
| # 启动监听 [zk: hadoop102:2181(CONNECTED) 6] ls -w /houge [] # 另一台机器上对路径做修改 [zk: hadoop103:2181(CONNECTED) 6] create /houge/shuaige Created /houge/shuaige # 102 上有相应提示 [zk: hadoop102:2181(CONNECTED) 7] WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/houge
|
注意:监听生效一次,后续就不会生效了,如果还想监听路径变化,需要再次跑命令监听