客户端命令
进入客户端
cd /data/soft/zookeeper/bin
./zkCli.sh [-server ip:port]
或
./zkCli.sh
#例如:
./zkCli.sh -server 192.168.30.136:2181
./zkCli.sh -server 192.168.30.136:2182
./zkCli.sh -server 192.168.30.136:2183
或
./zkCli.sh
使用指定ip和端口的命令,客户端会展示如下:
[zk: 192.168.30.136:2181(CONNECTED) 0]
使用默认命令,客户端会展示如下:
[zk: localhost:2181(CONNECTED) 0]
显示所有操作命令
[zk: 192.168.30.136:2181(CONNECTED) 0] help
ZooKeeper -server host:port -client-configuration properties-file cmd args
addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
addauth scheme auth
close
config [-c] [-w] [-s]
connect host:port
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
delete [-v version] path
deleteall path [-b batch size]
delquota [-n|-b|-N|-B] path
get [-s] [-w] path
getAcl [-s] path
getAllChildrenNumber path
getEphemerals path
history
listquota path
ls [-s] [-w] [-R] path
printwatches on|off
quit
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
redo cmdno
removewatches path [-c|-d|-a] [-l]
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b|-N|-B val path
stat [-w] path
sync path
version
whoami
Command not found: Command not found help
#所有命令,以' /'结束,比如:
ls /
ls -s /
查看当前节点详细数据。
[zk: 192.168.30.136:2181(CONNECTED) 6] ls -s /
[zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
当前节点参数的介绍见下
参数名 | 描述 |
---|---|
cZxid | 创建节点的事务。每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID。事务ID是ZooKeeper中所有修改总的次序。每个修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前发生。 |
ctime | 被创建的毫秒数(从1970年开始) |
mZxid | 最后更新的事务zxid |
mtime | 最后修改的毫秒数(从1970年开始) |
pZxid | 最后更新的子节点zxid |
cversion | 创建版本号,子节点修改次数 |
dataVersion | 数据变化版本号 |
aclVersion | 权限版本号 |
ephemeralOwner | 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0 |
dataLength | 数据长度 |
numChildren | 子节点数 |
节点操作
#在根目录下,创建测试节点zk1
create /zk1
#在根目录下,创建测试节点zk2并赋值‘ttt’
create /zk2 'ttt'
#查看zk1和zk2的值
get /zk1
get /zk2
#给已创建的节点赋值
set /zk1 'aaa'
get /zk1
#创建多级节点
create /zk3/zk31 'ccc'
create /zk3
create /zk3/zk31 'ccc'
set /zk3
set /zk3/zk31
get /zk3
get /zk3/zk31
#创建短暂节点
create -e /zk4
ls /
quit
ls /
#创建带序号的节点
ls /zk1
create -s /zk1/zk1s
create -s /zk1/zk1s
create -s /zk1/zk1s
ls /zk1
#修改节点数据值
get /zk2
set /zk2 'bbb'
get /zk2
#监听节点的值变化或子节点变化(路径变化)
1、在server3上注册监听/zk2的数据变化
addWatch /zk2
2、在server1上修改/zk2的数据变化
set /zk2 'bbb'
3、Server3会立刻响应
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk2 zxid: 4294967342
4、如果在Server1的/zk2下面创建子节点zk21
create /zk2/zk21
5、Server3会立刻响应
WATCHER::
WatchedEvent state:SyncConnected type:NodeCreated path:/zk2/zk21 zxid: 4294967343
6、如果在Server1上删除/zk2节点
delete /zk2
7、Server3会立刻响应
WATCHER::
WatchedEvent state:SyncConnected type:NodeDeleted path:/zk2/zk21 zxid: 4294967344
#删除空节点
delete /zk2
#删除非空节点
deleteall /zk1
#:不仅删除/zk1,而且/zk1下的所有子节点也随之删除
测试效果如下
[zk: 192.168.30.136:2181(CONNECTED) 0] create /zk1
Created /zk1
[zk: 192.168.30.136:2181(CONNECTED) 1] create /zk2 'ttt'
Created /zk2
[zk: 192.168.30.136:2181(CONNECTED) 2] get /zk1
null
[zk: 192.168.30.136:2181(CONNECTED) 3] get /zk2
ttt
[zk: 192.168.30.136:2181(CONNECTED) 4]
[zk: 192.168.30.136:2181(CONNECTED) 4] create /zk1 'aaa'
Node already exists: /zk1
[zk: 192.168.30.136:2181(CONNECTED) 5] set /zk1 'aaa'
[zk: 192.168.30.136:2181(CONNECTED) 6] get /zk1
aaa
[zk: 192.168.30.136:2181(CONNECTED) 7] create /zk3/zk31 'ccc'
Node does not exist: /zk3/zk31
[zk: 192.168.30.136:2181(CONNECTED) 8] create /zk3
Created /zk3
[zk: 192.168.30.136:2181(CONNECTED) 9] create /zk3/zk31 'ccc'
Created /zk3/zk31
[zk: 192.168.30.136:2181(CONNECTED) 10]
[zk: 192.168.30.136:2181(CONNECTED) 10] set /zk3
set [-s] [-v version] path data
[zk: 192.168.30.136:2181(CONNECTED) 11] set /zk3/zk31
set [-s] [-v version] path data
[zk: 192.168.30.136:2181(CONNECTED) 12]
[zk: 192.168.30.136:2181(CONNECTED) 12] get /zk3
null
[zk: 192.168.30.136:2181(CONNECTED) 13] get /zk3/zk31
ccc
[zk: 192.168.30.136:2181(CONNECTED) 14]
[zk: 192.168.30.136:2181(CONNECTED) 14]
[zk: 192.168.30.136:2181(CONNECTED) 14] create -e /zk4
Created /zk4
[zk: 192.168.30.136:2181(CONNECTED) 15] ls /
[zk1, zk2, zk3, zk4, zookeeper]
[zk: 192.168.30.136:2181(CONNECTED) 16] quit
[zk: 192.168.30.136:2181(CONNECTED) 0] ls /
[zk1, zk2, zk3, zookeeper]
[zk: 192.168.30.136:2181(CONNECTED) 1]
[zk: 192.168.30.136:2181(CONNECTED) 1]
[zk: 192.168.30.136:2181(CONNECTED) 1] create /zk5/zk5s
Node does not exist: /zk5/zk5s
[zk: 192.168.30.136:2181(CONNECTED) 2] create /zk1/zk1s
Created /zk1/zk1s
[zk: 192.168.30.136:2181(CONNECTED) 3] create /zk1/zk1s
Node already exists: /zk1/zk1s
[zk: 192.168.30.136:2181(CONNECTED) 4]
[zk: 192.168.30.136:2181(CONNECTED) 4]
[zk: 192.168.30.136:2181(CONNECTED) 4]
[zk: 192.168.30.136:2181(CONNECTED) 4] delete /zk1/zk1s
[zk: 192.168.30.136:2181(CONNECTED) 5] ls /zk1
[]
[zk: 192.168.30.136:2181(CONNECTED) 6] ls /
[zk1, zk2, zk3, zookeeper]
[zk: 192.168.30.136:2181(CONNECTED) 7]
[zk: 192.168.30.136:2181(CONNECTED) 7] delete /zk1
[zk: 192.168.30.136:2181(CONNECTED) 8] create /zk1
Created /zk1
[zk: 192.168.30.136:2181(CONNECTED) 9]
[zk: 192.168.30.136:2181(CONNECTED) 9] create -s /zk1/zk1s
Created /zk1/zk1s0000000000
[zk: 192.168.30.136:2181(CONNECTED) 10] create -s /zk1/zk1s
Created /zk1/zk1s0000000001
[zk: 192.168.30.136:2181(CONNECTED) 11] create -s /zk1/zk1s
Created /zk1/zk1s0000000002
[zk: 192.168.30.136:2181(CONNECTED) 12]
[zk: 192.168.30.136:2181(CONNECTED) 12]
[zk: 192.168.30.136:2181(CONNECTED) 12] ls /zk1
[zk1s0000000000, zk1s0000000001, zk1s0000000002]
[zk: 192.168.30.136:2181(CONNECTED) 13] delete /zk1
Node not empty: /zk1
[zk: 192.168.30.136:2181(CONNECTED) 20] ls /zk1
[zk1s0000000000, zk1s0000000001, zk1s0000000002]
[zk: 192.168.30.136:2181(CONNECTED) 21]
[zk: 192.168.30.136:2181(CONNECTED) 21] get /zk2
ttt
[zk: 192.168.30.136:2181(CONNECTED) 22] set /zk2 'bbb'
[zk: 192.168.30.136:2181(CONNECTED) 23] get /zk2
bbb
[zk: 192.168.30.136:2181(CONNECTED) 24] set /zk2 'ddd'
[zk: 192.168.30.136:2181(CONNECTED) 25] create /zk2/zk21
Created /zk2/zk21
[zk: 192.168.30.136:2181(CONNECTED) 26] delete /zk2/zk21
[zk: 192.168.30.136:2181(CONNECTED) 27] ls /zk2
[]
[zk: 192.168.30.136:2181(CONNECTED) 28] delete /zk1
Node not empty: /zk1
[zk: 192.168.30.136:2181(CONNECTED) 29] deleteall /zk1
[zk: 192.168.30.136:2181(CONNECTED) 30] ls /
[zk2, zk3, zookeeper]
[zk: 192.168.30.136:2181(CONNECTED) 31] ls /zk2
[]
[zk: 192.168.30.136:2181(CONNECTED) 32] get /zk2
ddd