#作者:任少近
文章目录
- 1 Zookeeper服务端常用命令
- 2 Zookeeper客户端常用命令
- 2.1Ls命令
- 2.2创建节点create
- 2.3Get命令
- 2.4删除命令
- 2.5修改命令
1 Zookeeper服务端常用命令
启动ZK服务:
bin/zkServer.sh start
# ./zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /usr/zookeeper/zookeeper-3.7.0/bin/../conf/zoo.cfgStarting zookeeper ... STARTED
查看ZK服务状态:
bin/zkServer.sh status
# ./zkServer,sh statusZooKeeper JMX enabled by defaultJsing config: /usr/zookeeper/zookeeper-3.7.0/bin/../conf/zoo.cfglient port found: 2181. Client address: ocalhost.Error contacting service. It is probably not running.
停止ZK服务
bin/zkServer.sh stop
# ./zkServer.sh stopZooKeeper JMX enabled by defaultUsing config: /usr/zookeeper/zookeeper-3.7.0/bin/../conf/zoo.cfgStopping zookeeper。。。STOPPED
重启ZK服务:
bin/zkServer.sh restart
# .zkServer.sh restart
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.7.0/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.7.0/bin/../conf/zoo.cfg
Stopping zookeeper …STOPPED
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.7.0/bin/../conf/zoo.cfg
Starting zookeeper.. STARTED
2 Zookeeper客户端常用命令
登录zk:
启动客户端:./zkCli.sh -server ip:port(如果连接本地Zookeeper,ip:port可省略)
zkCli.sh -server 127.0.0.1:2181
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
2.1Ls命令
在 ZooKeeper 命令行客户端中,ls 命令用于列出指定节点的子节点。以下是一些常见的参数以及它们的解释:
-s:以字母顺序排序子节点。默认情况下,子节点按照创建顺序排序。
-v:显示节点的统计信息,包括版本、数据长度等。
-R:递归地列出指定节点的所有子节点,包括子节点的子节点。
-w:在列出子节点后,监视指定节点的变化,类似于 get 命令中的监视模式。
-t:以最后修改时间(mtime)的顺序排序子节点。
-r:反向排序子节点,与 -s 参数相反。
新安装的Zookeeper根节点就一个zookeeper节点,查看指定节点、子节点信息。
[zk: ocalhost:2181(CONNECTED) 0] ls /
[zookeeper]
zk: localhost:2181(CONNECTED) 1] ls /zookeeper
[config, quota]
[zk: localhost:2181(CONNECTED) 2] ls /zookeeper/config
[]
[zk: localhost:2181(CONNECTED) 3] ls /zookeeper/
config quota
[zk: localhost:2181(CONNECTED) 3] ls /zookeeper/quota
[]
[zk: localhost:2181(CONNECTED) 4] ls -w /zookeeper/
config
quota
假设我们在 ZooKeeper 中已经创建了两个节点:/mobile1 和 /mobile2。下面我将通过不同的参数示例说明 ls 命令的用法:
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper, mobile1, mobile2]
这会列出指定节点(根节点 /)的所有子节点,包括 zookeeper、mobile1 和 mobile2。
以字母顺序排序子节点:
[zk: localhost:2181(CONNECTED) 0] ls -s /
[mobile1, mobile2, zookeeper]
使用 -s 参数以字母顺序排序子节点,结果显示为 mobile1、mobile2 和 zookeeper。
显示节点的统计信息:
[zk: localhost:2181(CONNECTED) 0] ls -v /
zookeeper
cZxid = 0x100000005
ctime = Sun Aug 13 12:30:59 UTC 2023
mZxid = 0x100000005
mtime = Sun Aug 13 12:30:59 UTC 2023
pZxid = 0x100000004
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2
mobile1
mobile2
使用 -v 参数显示节点的统计信息,包括每个子节点的版本、时间戳等信息。
递归地列出子节点:使用 -R 参数递归地列出所有子节点,包括子节点的子节点(如果有的话)。
[zk: localhost:2181(CONNECTED) 0] ls -R /
[zookeeper, mobile1, mobile2]
[/zookeeper/config, /zookeeper/quota]
以最后修改时间的顺序排序子节点:
[zk: localhost:2181(CONNECTED) 0] ls -t /
[zookeeper, mobile2, mobile1]
使用 -t 参数以最后修改时间的顺序排序子节点,结果显示为 zookeeper、mobile2 和 mobile1。
反向排序子节点:
[zk: localhost:2181(CONNECTED) 0] ls -r /
[zookeeper, mobile2, mobile1]
使用 -r 参数反向排序子节点,结果显示为 zookeeper、mobile2 和 mobile1。
2.2创建节点create
持久节点 (Persistent Node):创建一个持久节点,该节点会一直存在
[zk: localhost:2181(CONNECTED) 0] create /mobile
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper, mobile]
临时节点 (Ephemeral Node):创建一个临时节点,该节点在客户端会话结束后会被自动删除。
创建临时节点 mobile:
[zk: localhost:2181(CONNECTED) 0] create -e /mobile
顺序节点 (Sequential Node):创建一个顺序节点,节点名称会自动带有一个递增的序号,有助于排序。
创建顺序节点 mobile:
[zk: localhost:2181(CONNECTED) 0] create -s /mobile
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper, mobile0000000001]
临时顺序节点 (Ephemeral Sequential Node):创建一个临时顺序节点,结合了临时和顺序节点的特性。
创建临时顺序节点 mobile:
[zk: localhost:2181(CONNECTED) 0] create -e -s /mobile
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper, mobile0000000001]
创建mobile方式,在 ZooKeeper 命令行客户端中,不支持create一次性创建多个节点,每个 create 命令只能创建一个节点. 可以在一行上使用分号分隔多个命令来批量创建节点。
[zk: localhost:2181(CONNECTED) 0] create /mobile1; create /mobile2
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper, mobile1, mobile2]
2.3Get命令
查看创建的节点
[zk: localhost:2181(CONNECTED) 0] create /mobile "mobile is NO.1"
[zk: localhost:2181(CONNECTED) 1] get /mobile
mobile is NO.1
cZxid = 0x100000001
ctime = Sun Aug 13 10:30:59 UTC 2023
mZxid = 0x100000001
mtime = Sun Aug 13 10:30:59 UTC 2023
pZxid = 0x100000001
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 0
get获取节点的值并监视变化:
get /mobile watch 命令监视节点值的变化,在节点值被更改后,会收到通知并看到新的节点值和元数据信息。
[zk: localhost:2181(CONNECTED) 0] create /mobile "mobile is NO.1"
[zk: localhost:2181(CONNECTED) 0] get /mobile watch
mobile is NO.1
cZxid = 0x100000001
ctime = Sun Aug 13 11:31:50 UTC 2023
mZxid = 0x100000001
mtime = Sun Aug 13 11:31:50 UTC 2023
pZxid = 0x100000001
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 13
numChildren = 0
Watching ... (for any changes)
在第二个会话中执行 set /mobile “mobile is NO.NO.1”:
[zk: localhost:2181(CONNECTED) 0] set /mobile "mobile is NO.NO.1"
Mobile is NO.NO.1
cZxid = 0x100000002
ctime = Sun Aug 13 11:35:40 UTC 2023
mZxid = 0x100000002
mtime = Sun Aug 13 11:35:40 UTC 2023
pZxid = 0x100000002
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 15
numChildren = 0
2.4删除命令
mobile 节点
delete命令
[zk: localhost:2181(CONNECTED) 7] delete /mobile
Deleteall,
删除某个包含子节点的节点:deleteall 节点path(正常情况下,如果某个节点下有子节点,delete是不能删除的)
[zk: localhost:2181(CONNECTED) 7] deleteall /mobile
2.5修改命令
set命令:修改节点内容
命令格式:set [-s] [-v version] path data
-s:更新节点数据并显示节点状态信息
-v 指定数据版本号,如果指定的数据版本号和数据当前版本号不一致,则更新失败
[zk: localhost:2181(CONNECTED) 36] set /mobile/e_node1 "set data1"
[zk: localhost:2181(CONNECTED) 37] set -s /mobile/e_node1 "set data2"
cZxid = 0x6c
ctime = Sun Aug 13 13:36:41 UTC 2023
mZxid = 0x80
mtime = Sun Aug 13 13:36:41 UTC 2023
pZxid = 0x6c
cversion = 0
dataVersion = 6
aclVersion = 0
ephemeralOwner = 0x100002513c80001
dataLength = 9
numChildren = 0