版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wx1528159409
目录
首先群起集群,在集群中任意一台服务器上操作,在/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命令查看节点信息多显示节点写入数据。