ZooKeeper 命令行客户端
目录启动客户端
- 启动本地 zookeeper 客户端:./zkCli.sh
[root@node-02 bin]# ./zkCli.sh
Connecting to localhost:2181 # 2181 是客户端监听端口
...
[zk: localhost:2181(CONNECTED) 0]
- 启动远程 zookeeper 客户端:./zkCli.sh –server ip:port
[root@node-01 bin]# ./zkCli.sh -server node-02:2181
Connecting to hdp-02:2181
...
[zk: node-02:2181(CONNECTED) 0]
客户端命令
get 命令
获取节点信息,注意节点的路径皆为绝对路径,也就是说必要要从/(根路径)开始。
[zk: localhost:2181(CONNECTED) 1] get /aa
hello world #节点存储的数据
cZxid = 0x0 #节点创建时的zxid
ctime = Thu Jan 01 08:00:00 CST 1970 #节点创建时间
mZxid = 0x5 #节点最近一次更新时的zxid
mtime = Thu Apr 27 15:09:00 CST 2017 #节点最近一次更新的时间
pZxid = 0xc #最近一次子节点的创建/删除的时间戳
cversion = 1 #子节点数据更新次数
dataVersion = 2 #本节点数据更新次数
aclVersion = 0 #节点ACL(授权信息)的更新次数
ephemeralOwner = 0x0 #该节点不是临时节点
dataLength = 11 #节点数据长度
numChildren = 1 #节点的子节点个数
[zk: localhost:2181(CONNECTED) 1] get /aa watch # watch 监听节点数据(只监听一次)
[zk: localhost:2181(CONNECTED) 1] set /aa dfdsf
#修改节点数据显示监听结果
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/aa
ls 命令
获取路径下的节点信息(注意此路径为绝对路径,类似于 linux 的ls命令)
[zk: localhost:2181(CONNECTED) 1] ls /zookeeper
ls2 命令
ls2为ls命令的扩展,比 ls 命令多输出本节点信息
[zk: hdp-01(CONNECTED) 12] ls2 /
[aa, zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x20000001c
cversion = 6
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2
create 命令
创建节点,其中 -s 为顺序节点,-e 临时节点
# 创建持久化节点(默认)
[zk: localhost:2181(CONNECTED) 1] create /aa "aa"
# 创建临时节点(客户端连接断开节点将自动删除)
[zk: localhost:2181(CONNECTED) 1] create -e /bb "bb"
# 创建带序号节点(自动给节点添加序号,避免节点重复)
[zk: localhost:2181(CONNECTED) 1] create -s /cc "cc"
Created /cc0000000006
# 创建临时且带序号节点
[zk: localhost:2181(CONNECTED) 1] create -e -s /dd "dd"
set 命令
设置节点的数据
[zk: localhost:2181(CONNECTED) 1] set /zookeeper "hello world"
rmr 命令
删除节点命令
此命令与delete命令不同的是delete不可删除有子节点的节点,但是rmr命令可以删除,注意路径为绝对路径
[zk: localhost:2181(CONNECTED) 1] rmr /zookeeper/znode
delete 命令
删除节点(删除的节点不能有子节点)
[zk: hdp-01(CONNECTED) 28] delete /aa
stat 命令
查看节点状态信息,与 get 命令区别是无法查看节点数据
[zk: localhost:2181(CONNECTED) 1] stat /
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x1f
mtime = Thu Apr 27 16:05:14 CST 2017
pZxid = 0xc
cversion = 1
dataVersion = 3
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 1
connect 命令
连接 zookeeper 服务端,与 close 命令配合使用可以连接或者断开 zookeeper 服务端
[zk: localhost:2181(CONNECTED) 0] connect 127.0.0.1:2181
quit 命令
退出客户端连接
[zk: localhost:2181(CONNECTED) 1] quit
close 命令
断开客户端与服务端的连接
[zk: localhost:2181(CONNECTED) 1] close
printwatches 命令
设置和显示监视状态,on 或者 off
[zk: localhost:2181(CONNECTED) 1] printwatches on
history 命令
列出最近的历史命令
[zk: hdp-01(CONNECTED) 14] history
4 - status /aa
5 - stat /aa
6 - close
7 - ls /
8 - connect hdp-01
9 - ls /
10 - ls2 /
11 - ls /
12 - ls2 /
13 - hostory
14 - history
redo 命令
再次执行某命令,其中 10 为命令ID,需与 history 命令配合使用
[zk: hdp-01(CONNECTED) 28] redo 10
sync 命令
强制同步
由于请求在半数以上的 zookeeper 服务器节点上生效就表示此请求生效,那么就会有一些zookeeper 服务器节点上的数据是旧的,sync 命令就是强制同步所有的更新操作
[zk: hdp-01(CONNECTED) 28] sync /zookeeper
setquota 命令
设置子节点个数和数据长度配额
# 设置 /zookeeper/aa 子节点个数最大为4[zk: hdp-01(CONNECTED) 28] setquota –n 4 /zookeeper/aa# 设置 /zookeeper/bb 节点长度最大为100[zk: hdp-01(CONNECTED) 28] setquota –b 100 /zookeeper/bb
listquota 命令
显示配额
[zk: hdp-01(CONNECTED) 22] listquota /zookeeperabsolute path is/zookeeper/quota/zookeeper/zookeeper_limitsOutput quota for /zookeepercount=2,bytes=-1 #节点个数限额为2,长度无限额。
delquota命令
删除配额,-n 为子节点个数,-b 为节点数据长度。
[zk: localhost:2181(CONNECTED) 1] delquota –n 2
请参见 listquota 和 setquota命令
help 命令
显示 zookeeper 客户端支持的所有命令
[zk: localhost:2181(CONNECTED) 7] help[zk: localhost:2181(CONNECTED) 11] helpZooKeeper -server host:port cmd args stat path [watch] set path data [version] ls path [watch] delquota [-n|-b] path ls2 path [watch] setAcl path acl setquota -n|-b val path history redo cmdno printwatches on|off delete path [version] sync path listquota path rmr path get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port
命令可选项 watch:表示监听节点数据