【Zookeeper】常用命令
zkCli
zkCli.sh
:默认连接本地的服务器地址。zkCli.sh –server ip:port/hostname
:连接指定的服务器地址。
zkCli.sh -server centos2
Connecting to centos2
...
Welcome to ZooKeeper!
...
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: centos2(CONNECTED) 0]
commands
help
查看所有可用的命令和参数
[zk: centos2(CONNECTED) 13] help
ZooKeeper -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
ls
列出ZooKeeper指定节点下的所有节点。注意,这个命令只能看到指定节点下第一级的所有子节点。
ls path [watch]
path:指定数据节点的节点路径。
watch:监听zk节点子节点的变化,当另外一个客户端在zk节点下面新增节点时,他就会收到变更消息。
[zk: centos2(CONNECTED) 0] ls /
[zookeeper]
# 第一次部署的Zookeeper集群,默认在根节点“/”下面有一个叫做/zookeeper的保留节点。
[zk: centos2(CONNECTED) 11] ls /zk watch
[]
[zk: centos2(CONNECTED) 12]
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/zk
create
创建一个Zookeeper节点。
create [-s] [-e] path data acl
-s:创建顺序节点。
-e:创建ephemeral节点。ephemeral类型的节点不能有子节点。
acl:创建权限控制,缺省情况下,不做任何权限控制。
默认是创建persistent类型的节点。
[zk: centos2(CONNECTED) 4] create /zk "myData“
Created /zk
[zk: centos2(CONNECTED) 1] create -e /aaa "aaa"
Created /aaa
[zk: centos2(CONNECTED) 2] create /aaa/bbb "bbb"
Ephemerals cannot have children: /aaa/bbb
get
获取Zookeeper指定节点的数据内容和属性信息。
get path [path]
path:指定数据节点的节点路径。
watch:设置节点监听,当另外一个客户端改变zk节点的内容时,他就会收到变更消息。
[zk: centos2(CONNECTED) 5] get /zk watched
# 我们创建的字符串,数据节点的数据内容
"myData"
# Created ZXID,表示该数据节点被创建时的事务ID。
cZxid = 0x600000004
# Created Time,表示节点被创建的时间。
ctime = Mon Aug 07 14:45:37 CST 2017
# Modified ZXID,表示该节点最后一次被更新时的事务ID。
mZxid = 0x600000004
# Modified Time,表示该节点最后一次被更新的时间。
mtime = Mon Aug 07 14:45:37 CST 2017
# 表示该节点的子节点列表最后一次被修改时的事务ID。注意,只有子节点列表变更了才会变更pZxid,子节点内容变更不会影响pZxid。
pZxid = 0x600000004
# 子节点的版本号。
cversion = 0
# 数据节点的版本号。
dataVersion = 0
# 节点的ACL版本号。
aclVersion = 0
# 创建该临时节点的会话的SessionID。如果该节点是持久节点,那么这个属性值为0。
ephemeralOwner = 0x0
# 数据内容的长度。
dataLength = 10
# 当前节点的子节点个数。
numChildren = 0
[zk: centos2(CONNECTED) 11]
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk
set
更新指定节点的数据内容。
set path data [version]
path:指定数据节点的节点路径。
data:要更新的新内容。
version:指定本次更新操作是基于ZNode的哪一个数据版本。默认为当前版本
[zk: centos2(CONNECTED) 10] set /zk "zsl"
cZxid = 0x600000004
ctime = Mon Aug 07 14:45:37 CST 2017
mZxid = 0x600000005
mtime = Mon Aug 07 14:49:20 CST 2017
pZxid = 0x600000004
cversion = 0
# 对该数据节点的数据内容进行一次更新操作,dataVersion加1。注意,即使前后两次变更并没有使得数据内容的值发生变化,dataVersion的值依然会加1。
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: centos2(CONNECTED) 11] get /zk
## 节点内容已经修改了
"zsl"
cZxid = 0x600000004
ctime = Mon Aug 07 14:45:37 CST 2017
mZxid = 0x600000005
mtime = Mon Aug 07 14:49:20 CST 2017
pZxid = 0x600000004
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
delete
删除Zookeeper上的指定节点
delete path [version]
path:指定数据节点的节点路径。
使用这种方式如果要删除的节点下面有子节点,则不允许删除,出现Node not empty
的错误提示。
[zk: centos2(CONNECTED) 1] delete /zk
[zk: centos2(CONNECTED) 2] ls /
[zookeeper]
[zk: centos2(CONNECTED) 6] delete /zk
Node not empty: /zk
rmr
同delete命令
rmr path [version]
path:指定数据节点的节点路径。
使用这种方式会递归删除节点和节点下面的所有子节点。
[zk: centos2(CONNECTED) 4] create /zk "myData"
Created /zk
[zk: centos2(CONNECTED) 5] ls /
[zk, zookeeper]
[zk: centos2(CONNECTED) 6] rmr /zk
[zk: centos2(CONNECTED) 7] ls /
[zookeeper]
评论区