当前位置: 首页 > news >正文

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

#作者:任少近

文章目录

  • 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

相关文章:

  • Chrome Performance 面板完全指南:从卡顿到丝滑的终极调试术
  • 一站式开源AI平台Cherry Studio本地部署与远程调用本地大模型
  • AI知识补全(二):提示工程(Prompting)是什么?
  • 自定义minshell
  • Python----计算机视觉处理(Opencv:模板匹配)
  • 价值流映射(Value Stream Mapping):从流程可视化到敏捷效能革命
  • 【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV3模型部署
  • 深度解析:打破知识孤岛,降低重复开发成本(5大重点)
  • conda常用指令
  • 【基础】Windows 中通过 VSCode 使用 GCC 编译调试 C++
  • 【QA】为什么gl_Posision必须被赋值?
  • 人工智能笔记
  • 开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(四)
  • 【QA】OpenGL的渲染流程是怎么样的?
  • 提升TikTok直播流量的有效方法分析
  • struts2漏洞攻略
  • python多线程和多进程的区别有哪些
  • 蓝桥杯,利用 Vue.js 构建简易任务管理器
  • 3.17-3.23 Web3 游戏周报:Pixudi 双榜领跑,The Forgotten Runiverse 登陆三大主机平台
  • 【MYSQL】聚合查询、分组查询、联合查询
  • 新片|《我仍在此》定档5月,《新·驯龙高手》同步北美上映
  • 西班牙葡萄牙电力基本恢复
  • 上海74岁老人宜春旅游时救起落水儿童,“小孩在挣扎容不得多想”
  • 赛力斯拟赴港上市:去年扭亏为盈净利59亿元,三年内实现百万销量目标
  • 人民日报:应对外贸行业风险挑战,稳企业就是稳就业
  • 多地征集农村假冒伪劣食品违法线索,全链条整治“三无”产品