Zookeeper 基础命令

客户端命令

进入客户端

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