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

ZooKeeper客户端命令行操作详解

一、客户端连接ZooKeeper服务器

1.1 启动ZooKeeper集群

在操作客户端之前,确保ZooKeeper集群已经正常启动:

# 启动ZooKeeper服务(所有节点都要执行)./zkServer.sh start# 查看服务状态./zkServer.sh status

1.2 启动客户端连接本地服务器

./zkCli.sh

启动后可以看到如下提示,表示已成功连接本地ZooKeeper服务器(默认端口2181):

[zk: localhost:2181(CONNECTED) 0]

客户端启动时默认连接本地模式,这是因为zkCli.sh脚本中默认配置了localhost:2181

1.3 指定连接集群中的特定服务器

在实际生产环境中,我们通常需要连接集群中的指定节点进行调试或管理:

# 连接hadoop102节点./zkCli.sh-serverhadoop102:2181# 也可以从一台服务器连接另一台服务器# 例如在hadoop102上连接hadoop103./zkCli.sh-serverhadoop103:2181

连接成功后提示变为:

[zk: hadoop103:2181(CONNECTED) 0]

二、常用命令速查表

命令语法功能说明
helphelp显示所有操作命令
lsls path查看指定路径下的子节点
ls -sls -s path查看子节点及当前节点状态信息
createcreate path data创建持久化节点
create -screate -s path data创建持久顺序节点
create -ecreate -e path data创建临时节点
create -e -screate -e -s path data创建临时顺序节点
getget path获取节点数据
get -sget -s path获取节点数据及状态信息
setset path data修改节点数据
deletedelete path删除单个节点(无子节点)
deletealldeleteall path递归删除节点及其子节点
statstat path查看节点状态信息
get -wget -w path监听节点数据变化(一次性)
ls -wls -w path监听子节点数量变化(一次性)

三、节点信息详解

3.1 查看当前Znode包含的内容

[zk: hadoop102:2181(CONNECTED)0]ls/[zookeeper]

刚安装的ZooKeeper默认只有一个zookeeper节点,用于存储ZooKeeper自身的配置信息。

3.2 查看当前节点的详细信息

[zk: hadoop102:2181(CONNECTED)2]ls-s/[zookeeper]cZxid=0x0 ctime=Thu Jan 01 08:00:00 CST1970mZxid=0x0 mtime=Thu Jan 01 08:00:00 CST1970pZxid=0x0 cversion=-1dataVersion=0aclVersion=0ephemeralOwner=0x0 dataLength=0numChildren=1

3.3 节点状态参数解读

参数说明
czxid创建节点的事务ID。每次修改ZooKeeper状态都会产生一个唯一的事务ID,zxid越小表示操作越早发生
ctimeznode被创建的毫秒数(从1970年开始计算)
mzxidznode最后更新的事务ID
mtimeznode最后修改的毫秒数(从1970年开始计算)
pZxidznode最后更新的子节点的zxid
cversionznode子节点变化号,记录子节点修改次数
dataVersionznode数据变化号,每次修改数据都会递增
aclVersionznode访问控制列表的变化号
ephemeralOwner如果是临时节点,值为znode拥有者的session id;持久节点则为0
dataLengthznode的数据长度(字节数)
numChildrenznode当前子节点数量

四、节点类型详解

ZooKeeper中的节点(Znode)分为两大类:持久节点临时节点,每种类型又可以分为有序号无序号两种。

4.1 持久节点(Persistent)

客户端与ZooKeeper服务器断开连接后,创建的节点不会删除

4.1.1 持久化目录节点(不带序号)
# 创建节点时必须赋值[zk: hadoop102:2181(CONNECTED)4]create /sanguo"diaochan"Created /sanguo# 查看根目录[zk: hadoop102:2181(CONNECTED)5]ls/[sanguo, zookeeper]# 创建子节点[zk: hadoop102:2181(CONNECTED)6]create /sanguo/shuguo"liubei"Created /sanguo/shuguo[zk: hadoop102:2181(CONNECTED)7]ls/sanguo[shuguo]
4.1.2 持久化顺序编号目录节点(带序号)

创建znode时设置顺序标识,znode名称后会附加一个单调递增的序号,由父节点维护。

# 先创建父节点[zk: hadoop102:2181(CONNECTED)10]create /sanguo/weiguo"caocao"Created /sanguo/weiguo# 创建带序号的子节点[zk: hadoop102:2181(CONNECTED)12]create-s/sanguo/weiguo/zhangliao"zhangliao"Created /sanguo/weiguo/zhangliao0000000000# 再次创建同名节点,序号自动递增[zk: hadoop102:2181(CONNECTED)13]create-s/sanguo/weiguo/zhangliao"zhangliao"Created /sanguo/weiguo/zhangliao0000000001# 创建另一个带序号节点[zk: hadoop102:2181(CONNECTED)14]create-s/sanguo/weiguo/simayi"simayi"Created /sanguo/weiguo/simayi0000000002# 查看结果[zk: hadoop102:2181(CONNECTED)15]ls/sanguo/weiguo[simayi0000000002, zhangliao0000000000, zhangliao0000000001]

顺序号的应用场景:在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,客户端可以通过顺序号推断事件的先后顺序。

4.2 临时节点(Ephemeral)

客户端与ZooKeeper服务器断开连接后,创建的节点自动删除

4.2.1 临时目录节点(不带序号)
[zk: hadoop102:2181(CONNECTED)16]create-e/sanguo/wuguo"sunquan"Created /sanguo/wuguo# 当前客户端可以查看到[zk: hadoop102:2181(CONNECTED)17]ls/sanguo[shuguo, weiguo, wuguo]# 退出当前客户端[zk: hadoop102:2181(CONNECTED)18]quit# 重新连接后查看,临时节点已消失[zk: hadoop102:2181(CONNECTED)0]ls/sanguo[shuguo, weiguo]
4.2.2 临时顺序编号目录节点(带序号)
[zk: hadoop102:2181(CONNECTED)19]create-e-s/sanguo/wuguo"sunquan"Created /sanguo/wuguo0000000000

4.3 四种节点类型对比

节点类型断开连接后是否有序号典型应用场景
持久无序号保留配置信息存储
持久有序号保留分布式队列、全局ID生成
临时无序号删除服务注册与发现
临时有序号删除分布式锁、Leader选举

五、节点数据操作

5.1 获取节点数据

# 获取节点数据及状态[zk: hadoop102:2181(CONNECTED)9]get-s/sanguo diaochan cZxid=0x40000000c ctime=Tue Jun1318:31:38 CST2023mZxid=0x40000000c mtime=Tue Jun1318:31:38 CST2023pZxid=0x40000000d cversion=1dataVersion=0aclVersion=0ephemeralOwner=0x0 dataLength=8numChildren=1

5.2 修改节点数据

# 修改前[zk: hadoop102:2181(CONNECTED)4]get-s/sanguo/weiguo caocao... dataVersion=0# 执行修改[zk: hadoop102:2181(CONNECTED)5]set/sanguo/weiguo"simayi"# 修改后[zk: hadoop102:2181(CONNECTED)6]get-s/sanguo/weiguo simayi... dataVersion=1

注意:dataVersion从0变为1,每次修改都会递增,这是乐观锁机制的基础。


六、监听器机制(Watch)

ZooKeeper的Watch机制是实现分布式协调的核心特性。客户端可以向服务器注册监听,当监听的事件发生时,服务器会主动通知客户端。

6.1 Watch的重要特性

  • 一次性触发:注册一次监听只能监听一次变化,事件触发后监听自动失效
  • 轻量级:客户端只接收通知,不接收具体变更数据,需要客户端主动拉取
  • 实时性:数据变更后,服务器会立即推送通知

6.2 监听节点数据变化

在hadoop104上注册监听,在hadoop102上修改数据:

# 【hadoop104】注册数据变化监听[zk: hadoop104:2181(CONNECTED)1]get-w/sanguo diaochan# 【hadoop102】修改节点数据[zk: hadoop102:2181(CONNECTED)2]set/sanguo"lvbu"# 【hadoop104】收到通知WATCHER:: WatchedEvent state:SyncConnected type:NodeDataChanged path:/sanguo

再次修改/sanguo的数据,hadoop104不会再收到通知,需要重新注册监听。

6.3 监听子节点数量变化

# 【hadoop104】注册子节点变化监听[zk: hadoop104:2181(CONNECTED)0]ls-w/sanguo[shuguo, weiguo]# 【hadoop102】新增子节点[zk: hadoop102:2181(CONNECTED)3]create /sanguo/dongwu"dongzhuo"Created /sanguo/dongwu# 【hadoop104】收到通知WATCHER:: WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/sanguo

6.4 两种监听方式对比

监听类型命令触发条件事件类型
数据变化监听get -w path节点数据被修改NodeDataChanged
子节点变化监听ls -w path子节点增删NodeChildrenChanged

七、节点删除操作

7.1 删除单个节点

只能删除没有子节点的节点:

[zk: hadoop102:2181(CONNECTED)13]ls/[sanguo, wuguo, zookeeper][zk: hadoop102:2181(CONNECTED)14]delete /wuguo[zk: hadoop102:2181(CONNECTED)15]ls/[sanguo, zookeeper]

如果节点有子节点,会报错:Node not empty: /sanguo

7.2 递归删除节点

删除节点及其所有子节点:

[zk: hadoop102:2181(CONNECTED)15]ls/[sanguo, zookeeper][zk: hadoop102:2181(CONNECTED)16]deleteall /sanguo[zk: hadoop102:2181(CONNECTED)17]ls/[zookeeper]

7.3 查看节点状态

stat命令查看节点状态,不显示节点数据:

[zk: hadoop102:2181(CONNECTED)18]stat/zookeeper cZxid=0x0 ctime=Thu Jan 01 08:00:00 CST1970mZxid=0x0 mtime=Thu Jan 01 08:00:00 CST1970pZxid=0x0 cversion=-1dataVersion=0aclVersion=0ephemeralOwner=0x0 dataLength=0numChildren=1

statget -s的区别:get -s会多输出一行节点数据内容。


八、实战技巧与常见问题

8.1 快速清空所有测试数据

# 查看所有节点ls/# 递归删除(保留zookeeper系统节点)deleteall /sanguo deleteall /weiguo

8.2 常见问题排查

问题原因解决方案
Node not empty节点有子节点先删除子节点,或使用deleteall
NoNode for /xxx节点不存在检查路径是否正确
NotEmptyException同上同上
监听不触发Watch是一次性的事件触发后需要重新注册
临时节点未删除会话未断开检查客户端是否真正退出

8.3 命令执行流程图

连接服务器 → 查看节点(ls) → 创建节点(create) → 获取数据(get) ↓ ↓ ↓ 监听节点(ls -w) 带序号(-s) 修改数据(set) ↓ ↓ ↓ 收到通知 临时节点(-e) 删除节点(delete) ↓ ↓ ↓ 重新注册监听 自动清理 递归删除(deleteall)

九、总结

ZooKeeper的命令行操作虽然简单,但每个命令背后都蕴含着分布式系统设计的深刻思想:

  • 持久/临时节点→ 服务持久化 vs 会话绑定
  • 顺序编号→ 全局有序性保证
  • Watch机制→ 发布订阅模式的实现
  • 版本号→ 乐观锁并发控制

掌握这些基础命令,是理解ZooKeeper在Hadoop、Kafka、HBase等生态系统中发挥协调作用的必经之路。

http://www.jsqmd.com/news/968583/

相关文章:

  • 2026最新的 玻化微珠保温砂浆优质生产厂家实力排行盘点 推荐廊坊锦茂节能科技有限公司 - 奔跑123
  • 中山南区街道黄金回收行情解析,高位震荡下如何明智变现 - 上门黄金回收
  • 卡地亚官方售后维修保养中心:全国直营网点地址及联系电话(2026年6月发布) - 卡地亚服务中心
  • 东莞钻石出手新手必看,精密仪器检测,估价贴合当下市场行情 - 薛定谔的梨花猫
  • 为什么你的CSDN封禁申诉总失败?揭秘AI数字营销权益处置背后的5级信用衰减模型与2类不可逆红线
  • EPC-3320工控机专用RS232调试工具:带DLL驱动和VC++6.0完整工程
  • 2026年6月大型宴席中心推荐,公司年会/回门宴/定制婚礼/户外花园婚礼/沉浸式婚礼/订婚宴/婚礼,大型宴席场地找哪家 - 品牌推荐师
  • 2026年苏州高端品牌首饰回收估价技巧,本地人专属避坑攻略 - 薛定谔的梨花猫
  • AI驱动数字孪生:构建供应链韧性,实现预测与模拟决策闭环
  • 长沙企业财税痛点频发?亿启赢财税定制化合规节税方案破解经营难题 - 资讯纵览
  • 南京浦口区黄金回收五维测评,当前金价944元/克怎么卖 - 上门黄金回收
  • 不踩坑的租车平台推荐:2026年费用透明度、车况保障与售后响应全对比 - 科技焦点
  • HarmonyOS开发环境搭建全攻略:从零到一运行Hello World
  • 2026 三明漏水维修攻略|苏易修缮:厨卫 / 阳台 / 外墙 / 屋顶 / 地下室|靠谱防水门店 - 苏易修缮
  • 2026最新的 硅酸铝针刺毯优质生产厂家实力排行盘点 推荐廊坊锦茂节能科技有限公司 - 奔跑123
  • OBS虚拟摄像头插件:让你的视频会议和直播瞬间专业起来的终极方案
  • HarmonyOS开发者日参会指南:从分布式技术到实战开发
  • 2026 年长沙别墅门窗定制指南:5 大高端系统门窗品牌深度横评 - 涂伟
  • 2026苏州手表回收哪家靠谱?本地多渠道实测,到店回收优选指南 - 薛定谔的梨花猫
  • 2026年6月打包铁条品牌推荐,锌锭打包带/玻璃打包带/烤漆打包带/带钢/打包扣/冷镀锌打包带,打包铁条厂家哪家好 - 品牌推荐师
  • 苏州切管机批发厂家 - 品牌推广大师
  • 暗黑破坏神2存档编辑器完全指南:从零开始掌握可视化修改
  • 2026南京奢侈品回收,一站式回收名包名表黄金 - 商业快讯早知道
  • 2026毕业生降AIGC平台盘点: 学术打磨+逻辑优化哪家强? - 降AI小能手
  • springcloud skywalking
  • 2026武汉名表回收梯队大洗牌!S/A/B靠谱机构完整榜单 - 薛定谔的梨花猫
  • 2026 东莞名表回收实地走访,行情实时联动,上门收表足不出户 - 薛定谔的梨花猫
  • 3分钟搞定!网易云QQ音乐歌词提取神器使用全攻略
  • Source Insight视觉优化:打造媲美Visual Studio的代码阅读体验
  • PIC16F616单片机实战:从架构解析到低功耗设计全攻略