Zookeeper运维指南:服务端与客户端常用命令详解

#作者:任少近

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值