Zookeeper的命令行界面(CLI)用于与Zookeeper集群进行交互以用于开发目的。
一、CLI命令
[zk: localhost:2181(CONNECTED) 0] -h
ZooKeeper -server host:port cmd args
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
delquota [-n|-b] path
get [-s] [-w] path
getAcl [-s] path
history
listquota path
ls [-s] [-w] [-R] path
ls2 path [watch] # 已被弃用,等价于ls -s
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]
rmr path
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b val path
stat [-w] path
sync path
命令 | 描述 |
connect host:port |
连接到某台服务器上 |
create [-s] [-e] [-c] [-t ttl] path [data] [acl] | 创建一个新的znode节点,-s表示顺序节点,-e表示临时节点,acl访问控制列表 |
delete [-v version] path |
删除某一节点,只能删除无子节点的节点。-v 表示节点版本号 |
deleteall path | 递归的删除某一节点及其子节点,同rmr命令 |
get [-s] [-w] path | 获取节点数据信息,-s表示获取节点信息,包括时间戳、版本号、数据大小等 |
getAcl [-s] [-w] path |
获取节点的访问控制列表,-s表示顺序节点 |
ls [-s] [-w] [-R] path | 获取节点列表,-s表示获取节点信息,相当于ls2,-R表示递归的获取 |
ls2 path [watch] |
获取节点列表及节点信息,该命令在最新版本中已弃用 |
set [-s] [-v version] path data |
设置节点数据,-s表示节点为顺序节点,-v 指定版本号 |
setAcl [-s] [-v version] [-R] path acl | 设置节点的访问控制列表,-s表述顺序节点,-v指定版本号,-R递归的设置 |
state [-w] path | 查看节点信息 |
setquota -n|-b val path |
设置节点的quota(限制),-n表示子节点个数,-b表示空间大小 |
delquota [-n|-b] path | 删除节点的quota(限制) |
listquota path | 列出节点的quota信息 |
printwatches | 设置和显示监视状态,on开启,off关闭 |
history |
列出本次会话中的历史操作命令 |
redo cmdno | 再次执行某一命令,cmdno为前一次改名执行是的ID,可通过history命令查看 |
rmr |
递归的删除某一节点及其子节点,该命令在最新版本中已弃用 |
sync | 强制同步所有的更新操作到所有节点 |
addauth schema auth | 增加节点认证 |
close | 关闭连接,但是客户端不退出 |
quit | 关闭连接并退出客户端 |
二、创建Znodes
语法
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
注:-s 表示创建顺序节点
-e 表示创建临时节点
-c
-t
acl 访问控制列表
举例
[zk: localhost:2181(CONNECTED) 5] create /FirstZnode "MyFirstZookeeper-App” # 创建永久节点
Created /FirstZnode
[zk: localhost:2181(CONNECTED) 13] create -s /FirstSequentialZnode "MyFirstSequentialZnode-App" # 创建顺序节点
Created /FirstSequentialZnode0000000002
[zk: localhost:2181(CONNECTED) 16] create -e /FirstEphemeralZnode "MyFirstEphemeralZnode-App” # 创建临时节点,当客户端断开连接时,该节点将被删除
Created /FirstEphemeralZnode
三、获取节点数据
语法
get [-s] [-w] path
注:-s 节点数据+节点信息
-w 设置监视?
Key |
Value |
cZxid |
节点被创建时的事物的ID |
crime | 节点的创建时间 |
mZxid | 节点最后一次被修改的事务的ID |
mtime | 节点最后一次被修改的时间 |
pZxid | 自节点列表最近一次被修改的事务的ID |
cversion | 子节点版本号 |
dataVersion | 数据版本号 |
aclVersion |
ACL版本号 |
ephemeralOwner | 创建临时节点的事务的ID,持久节点事务为0 |
dataLength | 数据长度,每个节点都可保存数据 |
numChildren | 子节点的个数 |
举例
[zk: localhost:2181(CONNECTED) 6] get /FirstZnode
MyFirstZookeeper-App
[zk: localhost:2181(CONNECTED) 22] get -s /FirstZnode # 获取节点数据+节点信息
MyFirstZnode-App
cZxid = 0x6
ctime = Tue Sep 24 08:10:44 CST 2019
mZxid = 0xb
mtime = Tue Sep 24 08:29:42 CST 2019
pZxid = 0x6
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 16
numChildren = 0
[zk: localhost:2181(CONNECTED) 15] get /FirstSequentialZnode0000000002 # 获取顺序节点必须指定完整路径
MyFirstSequentialZnode-App
四、设置节点数据
语法
set [-s] [-v version] path data
注:-s 表示设置顺序节点
-v 表示设置版本号?
举例
[zk: localhost:2181(CONNECTED) 18] set /FirstZnode "MyFirstZnode-App"
[zk: localhost:2181(CONNECTED) 19] get /FirstZnode
MyFirstZnode-App
五、创建子节点
语法
create [-s] [-e] [-c] [-t ttl] /parent/path/subnode/path [data] [acl]
注:参数同创建节点
举例
[zk: localhost:2181(CONNECTED) 23] create /FirstZnode/Child1 "MyFirstChildZnode-App"
Created /FirstZnode/Child1
六、列出子节点列表
语法
ls [-s] [-w] [-R] path
注:-s 列出path指定的节点的节点信息
-w
-R 递归的列出子节点列表
举例
[zk: localhost:2181(CONNECTED) 24] ls /
[FirstEphemeralZnode, FirstSequentialZnode0000000002, FirstZnode, zookeeper]
[zk: localhost:2181(CONNECTED) 25] ls -s /
[FirstEphemeralZnode, FirstSequentialZnode0000000002, FirstZnode, zookeeper]cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0xa
cversion = 4
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 4
[zk: localhost:2181(CONNECTED) 26] ls -R /
/
/FirstEphemeralZnode
/FirstSequentialZnode0000000002
/FirstZnode
/zookeeper
/FirstZnode/Child1
/zookeeper/config
/zookeeper/quota
七、查看节点信息
语法
stat [-w] path
注:-w
举例
[zk: localhost:2181(CONNECTED) 29] stat /FirstZnode
cZxid = 0x6
ctime = Tue Sep 24 08:10:44 CST 2019
mZxid = 0xb
mtime = Tue Sep 24 08:29:42 CST 2019
pZxid = 0xc
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 16
numChildren = 1
八、删除节点
语法
rmr path # 递归的删除指定的znode及其子节点,旧版本的命令
delete [-v version] path # 删除不带子节点的节点
deleteall path # 功能同rmr,新版本的命令
举例
[zk: localhost:2181(CONNECTED) 4] ls -R / # 查看所有节点
/
/FirstSequentialZnode0000000002
/FirstZnode
/zookeeper
/FirstZnode/Child1
/zookeeper/config
/zookeeper/quota
[zk: localhost:2181(CONNECTED) 5] rmr /FirstZnode # 旧命令删除
The command 'rmr' has been deprecated. Please use 'deleteall' instead.
[zk: localhost:2181(CONNECTED) 6]
[zk: localhost:2181(CONNECTED) 6]
[zk: localhost:2181(CONNECTED) 6] deleteall /FirstZnode # 新命令删除,提示不存在是因为rmr已经将其删除
Node does not exist: /FirstZnode
[zk: localhost:2181(CONNECTED) 7] ls -R / # 查看确认删除
/
/FirstSequentialZnode0000000002
/zookeeper
/zookeeper/config
/zookeeper/quota
待完善......
参考: