Zookeeper的常用Shell操作整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wx1528159409

目录

1. 启动客户端(bin/zkCli.sh) 

2. 显示所有的操作命令(help)

3. 查看当前znode中包含的内容(ls)

4. 查看当前znode的详细数据(ls2)

5. 在当前znode下创建普通节点(create)

6. 获取节点的值(get)

7. 创建短暂节点(create -e)

8. 创建带序号的节点( create -s)

9. 修改节点数据(set)

10. 节点值变化的监听(get path watch)

11. 节点的路径变化监听(ls path watch)

12. 删除节点(delete)

13. 递归删除节点(rmr)

14. 查看节点状态(stat)


首先群起集群,在集群中任意一台服务器上操作,在/opt/module/zookeeper-3.4.10的bin目录下,

执行脚本zkCli.sh,就可以开启Zookeeper客户端了。

1. 启动客户端(bin/zkCli.sh) 

[kevin@hadoop100 zookeeper-3.4.10]$ bin/zkCli.sh

2. 显示所有的操作命令(help)

[zk: localhost:2181(CONNECTED) 0] help

3. 查看当前znode中包含的内容(ls)

[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]

4. 查看当前znode的详细数据(ls2)

[zk: localhost:2181(CONNECTED) 2] ls2 /
[zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x200000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2

5. 在当前znode下创建普通节点(create)

创建时必须写入数据,否则创建不成功

[zk: localhost:2181(CONNECTED) 3] create /new1 xinxi
Created /new1

再创建new1节点的子节点new2

[zk: localhost:2181(CONNECTED) 4] create /new1/new2 xinxi2
Created /new1/new2

6. 获取节点的值(get)

[zk: localhost:2181(CONNECTED) 6] get /new1
xinxi
cZxid = 0x300000004
ctime = Thu Nov 29 23:04:29 CST 2018
mZxid = 0x300000004
mtime = Thu Nov 29 23:04:29 CST 2018
pZxid = 0x300000005
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 1

new1节点下的值为xinxi

[zk: localhost:2181(CONNECTED) 8] get /new1/new2
xinxi2
cZxid = 0x300000005
ctime = Thu Nov 29 23:04:54 CST 2018
mZxid = 0x300000005
mtime = Thu Nov 29 23:04:54 CST 2018
pZxid = 0x300000005
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

new2子节点下的值为xinxi2

7. 创建短暂节点(create -e)

[zk: localhost:2181(CONNECTED) 9] create -e /duanzan xinxi3 
Created /duanzan

此时节点信息如下:

[zk: localhost:2181(CONNECTED) 10] ls /
[duanzan, new1, zookeeper]

退出quit客户端后,客户端与服务器断开;然后重启客户端,发现这个节点已经没有了

[zk: localhost:2181(CONNECTED) 0] ls /
[new1, zookeeper]

8. 创建带序号的节点( create -s)

[zk: localhost:2181(CONNECTED) 2] create -s /new1/daixuhao1 shuju1
Created /new1/daixuhao10000000001
[zk: localhost:2181(CONNECTED) 3] create -s /new1/daixuhao shuju1
Created /new1/daixuhao0000000002
[zk: localhost:2181(CONNECTED) 4] create -s /new1/daixuhao shuju2
Created /new1/daixuhao0000000003
[zk: localhost:2181(CONNECTED) 5] create -s /new1/xuhao shuju1
Created /new1/xuhao0000000004

往同一个父节点上,不管创建名称相同的节点,还是创建名称不同的节点,Zookeeper都会自动给子节点名称从0开始编号

9. 修改节点数据(set)

[zk: localhost:2181(CONNECTED) 8] set /new1/new2 xiugai

原本子节点new2的数据为 xinxi,现在修改为 xiugai

10. 节点值变化的监听(get path watch)

表示监听路径path下的节点值的变化

·   在服务器hadoop100中监听/new1/new2子节点的数据,当前数据为xiugai

[zk: localhost:2181(CONNECTED) 11] get /new1/new2 watch
xiugai

·   在另一台服务器hadoop101中,启动Zookeeper客户端,并修改/new1/new2子节点下的数据,改为xiugai2

[zk: localhost:2181(CONNECTED) 0] set /new1/new2 xiugai2

·   这时,hadoop100服务器中会响应下面信息,告诉当前客户端 /new1/new2下的数据已经更改

[zk: localhost:2181(CONNECTED) 12] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/new1/new2

执行一次监听get path watch,只能响应一次,再在hadoop101中修改new2子节点下的数据,在当前客户端hadoop100中不会再有响应。

11. 节点的路径变化监听(ls path watch)

·   先监听当前服务器hadoop100,根目录的路径变化

[zk: localhost:2181(CONNECTED) 12] ls / watch
[new1, zookeeper]

·   发现此时根目录下只有一个子节点new1

·   在另一台服务器hadoop101中,在根目录下新增节点new1-1

[zk: localhost:2181(CONNECTED) 1] create /new1-1 xinxi1-1
Created /new1-1

·   发现在当前服务器出现响应信息

[zk: localhost:2181(CONNECTED) 13] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/

·   告知根目录下路径有变化,新建了子节点

同样的,一次注册监听ls path watch,只能响应一次。

12. 删除节点(delete)

[zk: localhost:2181(CONNECTED) 15] delete /new1/new2

13. 递归删除节点(rmr)

[zk: localhost:2181(CONNECTED) 17] delete /new1 
Node not empty: /new1
[zk: localhost:2181(CONNECTED) 18] rmr /new1

发现/new1节点下有子节点,delete不能删除,需要用递归删除rmr

14. 查看节点状态(stat)

可查看节点除了写入数据以外的所有信息

[zk: localhost:2181(CONNECTED) 28] stat /new1
cZxid = 0x30000001a
ctime = Fri Nov 30 09:07:14 CST 2018
mZxid = 0x30000001a
mtime = Fri Nov 30 09:07:14 CST 2018
pZxid = 0x30000001a
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

对比一下get查看节点状态

[zk: localhost:2181(CONNECTED) 27] get /new1
xinxi
cZxid = 0x30000001a
ctime = Fri Nov 30 09:07:14 CST 2018
mZxid = 0x30000001a
mtime = Fri Nov 30 09:07:14 CST 2018
pZxid = 0x30000001a
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5

发现get命令查看节点信息更全面,比stat命令查看节点信息多显示节点写入数据

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值