三、zookeeper 常用shell命令
作者:IvanCodes
日期:2025年5月28日
专栏:Zookeeper教程
ZooKeeper Shell (zkCli.sh) 是与ZooKeeper服务器交互的核心工具。本教程将详细介绍常用命令,并重点解析ZooKeeper数据节点 (ZNode) 的特性与分类。
思维导图
一、连接 ZooKeeper 服务
使用 zkCli.sh
前,需连接到ZooKeeper服务器或集群。
命令:
zkCli.sh -server host1,host2,...
示例 (连接到您的 hadoop01,hadoop02,hadoop03
集群):
zkCli.sh -server hadoop01
成功连接后,提示符会显示连接状态。输入 quit
或 close
退出。
二、常用 Shell 命令详解
1. help
显示可用命令列表。
help
2. ls path [watch]
列出指定路径的直接子节点名称。
ls /
ls /zookeeper watch
3. ls -s path [watch]
与 ls
类似,但除了列出子节点名称外,还会同时返回该路径节点自身的 stat
信息 (元数据)。
ls -s /
ls -s /zookeeper watch
对比 ls
和 ls -s
: ls -s
在列出子节点的同时,省去了你再执行一次 stat /parent_path
的操作。
4. create [-s] [-e] path data [acl]
创建ZNode (不同类型如上文所述)。
create /my_persistent_node "Permanent Data"
create -e /my_ephemeral_node "Session Data"
create -s /my_sequential_node- "Sequential Data"
create -s -e /my_ephemeral_sequential_node- "Temp Seq Data"
5. get [-s] path [watch]
获取节点数据及元数据。
get -s /my_persistent_node
6. set path data [version]
更新节点数据。
set /my_persistent_node "Updated Data"
set /my_persistent_node "Versioned Update" 0 # 假设当前dataVersion为0
7. delete path [version]
删除无子节点的ZNode。
delete /my_ephemeral_node
8. deleteall path [ignoreErrors] (或 rmr path)
递归删除节点及其所有子节点。
# 较新版本
deleteall /my_persistent_node
# 较早版本
# rmr /my_persistent_node
9. stat path [watch]
仅获取节点元数据。
stat /
10. setAcl path acl
设置节点访问权限。
# 示例:将/secret节点设置为只有创建者有所有权限 (需要先进行认证)
# setAcl /secret auth:your_user:your_password_hashed:cdrwa (这是一个复杂场景,通常API操作)
setAcl /public_readable world:anyone:r # 任何人可读
11. getAcl path
获取节点访问权限。
getAcl /public_readable
12. history
列出当前会话中已执行的命令历史记录,最多显示最近10条。
history
13. redo cmdnum
重新执行历史记录中指定编号的命令。编号从 history
命令的输出中获取。
# 假设 history 输出的第3条命令是你想要的
redo 3
14. sync path
强制与Leader同步。
sync /
15. quit / close
退出客户端。
quit
练习题
- 连接到您的ZooKeeper集群,并使用
history
查看初始命令。 - 在根路径下创建一个名为
/app_root
的持久节点,数据为 “Application Root Node”。 - 使用
ls2 /
查看根路径子节点及根节点的stat信息,确认/app_root
存在。 - 在
/app_root
下创建一个名为config-
的持久顺序节点,数据为 “Config v1”。记录下实际生成的节点名。 - 获取刚创建的持久顺序节点的数据和
dataVersion
。 - 在
/app_root
下创建一个名为live_instance
的临时节点,数据为 “Instance XYZ running”。 - 使用
stat /app_root/live_instance
查看其ephemeralOwner
字段,理解其含义。 - 修改第4步创建的持久顺序节点的数据为 “Config v2”,并使用版本号进行乐观更新。
- 尝试使用
delete /app_root
(不使用递归删除),观察结果。然后使用deleteall
(或rmr
) 正确删除/app_root
及其所有子节点。 - 执行
history
命令,然后使用redo
命令重新执行您创建/app_root
的那条命令。
练习题答案
- 连接并查看history:
zkCli.sh -server hadoop01:2181,hadoop02:2181,hadoop03:2181
history
讲解: history
会显示连接命令本身或为空(如果这是第一个命令)。
- 创建
/app_root
:
create /app_root "Application Root Node"
讲解: 创建一个标准持久节点。
- 使用
ls2 /
查看:
ls2 /
讲解: ls2
会列出 [zookeeper, app_root, ...]
等子节点,并紧随其后打印出 /
节点的stat信息(如 numChildren
会增加)。
- 创建持久顺序节点
config-
:
create -s /app_root/config- "Config v1"
讲解: ZooKeeper会自动生成类似 /app_root/config-0000000000
的节点。你需要记下这个实际名称。
- 获取持久顺序节点数据和版本: (假设上一步生成了
/app_root/config-0000000000
)
get /app_root/config-0000000000
讲解: 记下 dataVersion
的值,初始应为0。
- 创建临时节点
live_instance
:
create -e /app_root/live_instance "Instance XYZ running"
讲解: -e
参数创建临时节点。
- 查看
live_instance
的ephemeralOwner
:
stat /app_root/live_instance
讲解: ephemeralOwner
字段会显示一个非零的会话ID,表示这个节点是临时的,并由该会话拥有。
- 修改持久顺序节点数据 (带版本): (假设
dataVersion
为0,节点名为/app_root/config-0000000000
)
set /app_root/config-0000000000 "Config v2" 0
讲解: 使用获取到的 dataVersion
进行条件更新。成功后,dataVersion
会变为1。
- 尝试删除及递归删除
/app_root
:
delete /app_root
# 这会失败,因为有子节点
# 使用 deleteall (或 rmr)
deleteall /app_root
# 或 rmr /app_root
讲解: 直接 delete
非空节点会失败。deleteall
或 rmr
可以递归删除。
- 使用
history
和redo
:
history
# 找到创建 /app_root "Application Root Node" 的命令编号,假设是 X
redo X
讲解: history
列出命令历史,redo
重新执行指定编号的命令。
相关文章:

三、zookeeper 常用shell命令
作者:IvanCodes 日期:2025年5月28日 专栏:Zookeeper教程 ZooKeeper Shell (zkCli.sh) 是与ZooKeeper服务器交互的核心工具。本教程将详细介绍常用命令,并重点解析ZooKeeper数据节点 (ZNode) 的特性与分类。 思维导图 一、连接 Zo…...

分布式流处理与消息传递——Paxos Stream 算法详解
Java 实现 Paxos Stream 算法详解 一、Paxos Stream 核心设计 #mermaid-svg-cEJcmpaQwLXpEbx9 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-cEJcmpaQwLXpEbx9 .error-icon{fill:#552222;}#mermaid-svg-cEJcmpaQw…...
智变与重构:AI 赋能基础教育教学的范式转型研究报告
一、研究背景与核心价值 (一)技术驱动下的教育转型浪潮 在全球数字化转型加速的背景下,人工智能作为核心技术力量,正重塑基础教育生态。据《人工智能赋能未来教育研究报告》指出,我国教育数字化战略行动已推动超 70…...
平衡三进制
平衡三进制 - OI Wiki https://oi-wiki.org/math/balanced-ternary/ 上海市计算机学会竞赛平台 | YACS 方法一,先分离后进位 #include <iostream> using namespace std; int n, a[100], cnt; bool flag; int main() {cin >> n;if(n0){cout <<…...
针对Python开发的工具推荐及分析,涵盖集成开发环境(IDE)、轻量级工具、在线开发平台、代码管理工具等)
以下是针对Python开发的工具推荐及全面分析,涵盖集成开发环境(IDE)、轻量级工具、在线开发平台、代码管理工具等,结合不同场景和需求进行分类说明: 目录 一、集成开发环境(IDE) 1. PyCharm 2…...

960g轻薄本,把科技塞进巧克力盒子
朋友们,谁懂啊 最近本打工人被同事疯狂种草了一款 “巧克力盒子” 华硕灵耀 14 Air 骁龙版! 960g的重量比一瓶大可乐还轻 塞进通勤包毫无压力 连健身房的瑜伽垫都能多卷两圈 这台行走的生产力工具,到底有啥魔法? 今天就带…...

xcode 编译运行错误 Sandbox: rsync(29343) deny(1) file-write-create
解决方法 方法一:修改Targets -> Build Settings 中 ENABLE_USER_SCRIPT_SANDBOXING 设置 NO 方法二:项目使用cocoaPods进行三方管理 且 使用了 use_frameworks,把 use_frameworks 注释掉,然后重新自行pod install...

C# 基于 Windows 系统与 Visual Studio 2017 的 Messenger 消息传递机制详解:发布-订阅模式实现
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...

ComfyUI+阿里Wan2.1+内网穿透技术:本地AI视频生成系统搭建实战
文章目录 前言1.软件准备1.1 ComfyUI1.2 文本编码器1.3 VAE1.4 视频生成模型 2.整合配置3. 本地运行测试4. 公网使用Wan2.1模型生成视频4.1 创建远程连接公网地址 5. 固定远程访问公网地址总结 前言 各位技术爱好者,今天为您带来一组创新性的AI应用方案!…...
腾讯云开发者社区文章内容提取免费API接口教程
接口简介: 提取指定腾讯云开发者社区文章内容。本接口仅做内容提取,未经作者授权请勿转载。 请求地址: https://cn.apihz.cn/api/caiji/tencent.php 请求方式: POST或GET。 请求参数: 【名称】【参数】【必填】【说…...

利用海外代理IP,做Twitter2026年全球趋势数据分析
近年来,社交媒体趋势分析逐渐成为品牌监控、市场洞察和消费者研究的必备工具。而当谈到全球趋势数据分析,很多人都会立即想到 Twitter趋势(逼近连美丽国的总统都喜欢在上面发表自己的看法- -!!!)。Twitter趋势,即Twitt…...
OpenLayers 图形交互编辑
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 图形要素包括属性信息和几何信息,在实际应用中,不仅需要修改样式信息,也需要修改图形几何信息。在OpenLayers中&…...

pikachu靶场通关笔记06 XSS关卡02-反射型POST
目录 一、XSS 二、反射型XSS 三、POST型报文 四、GET型与POST型区别 五、代码审计 五、渗透实战 1、渗透方法1 2、渗透方法2 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关)渗透集合,通过对XSS关卡源码的代码审计找到XSS风险的真实原因&…...

SQLiteStudio - 免费开源、轻量高效,跨平台的 SQLite 数据库管理工具,代替 Navicat for SQLite
管理 SQLite 数据库就用这款软件,真的早该摒弃破解和盗版的 Navicat 了。 SQLiteStudio 是一款专注于管理 SQLite 数据库 的桌面软件,用于浏览和编辑 SQLite 数据库文件。软件的作者是来自波兰的开发者 Paweł Salawa,他是一位拥有 20 年 Ja…...

Prometheus + Grafana + Cadvisor:构建高效企业级服务监控体系
在现代软件开发和运维领域,容器化技术的应用越来越广泛,其中 Docker 作为最受欢迎的容器化解决方案之一,其容器的监控管理变得至关重要。本文将详细介绍如何使用 cadvisor、Prometheus 和 Grafana 来监控 Docker 容器的状态。 一、安装镜像 …...

WEBSTORM前端 —— 第3章:移动 Web —— 第2节:空间转换、转化
目录 一、空间转换 1.空间转换 2.空间转换 – 平移 3.视距 perspective 4.空间 – 旋转 ③空间旋转——Z轴代码与效果视频 ④空间旋转——X轴代码与效果视频 ⑤空间旋转——Y轴代码与效果视频 5.立体呈现 – transform-style 案例 – 3D 导航 6.空间转换 – 缩放 …...

Java研学-MongoDB(一)
一 MongoDB 简介 MongoDB是一种高性能、开源的NoSQL数据库,采用面向文档的存储模型,以BSON(Binary JSON)格式存储数据,具有灵活的数据模型、强大的扩展性和丰富的功能特性,广泛应用于各类现代应用程序的数据…...

【AI面试秘籍】| 第25期:RAG的关键痛点及解决方案深度解析
今天我们来聊聊大模型领域一个非常火热的技术——RAG(Retrieval Augmented Generation)。RAG通过引入外部知识库,有效地缓解了大型语言模型(LLM)在处理知识密集型任务时可能出现的幻觉、知识过时等问题。然而ÿ…...
OpenGL、GLUT、freeGLUT 与 GLFW 的区别
在图形编程中,OpenGL 是最核心的渲染 API,但仅靠它本身无法完成窗口创建、事件处理等任务。因此,开发者通常会借助一些辅助库来简化开发流程。常见的库包括 GLUT、freeGLUT 和 GLFW。 本文将详细讲解这些技术之间的区别,并提供每…...

服务器带宽线路的区别(GIA、CN2、BGP、CMI等)
服务器带宽线路的区别(GIA、CN2、BGP、CMI等) 一、BGP线路 1. 定义与技术特点 BGP(Border Gateway Protocol,边界网关协议)是一种用于不同自治系统(AS)之间交换路由信息的协议,属…...

ppt一键制作:ai自动生成PPT,便捷高效超级精美!
深夜的台灯下,你对着杂乱的 PPT 内容反复刷新灵感,鼠标在字体、配色选项间来回穿梭,好不容易拼凑出的页面,却总透着浓浓的 “廉价感”;汇报在即,逻辑混乱的大纲改了又改,每一页感觉合适又不搭&a…...
多方法解决MNIST数字识别
全连接层 import torch from torchvision import datasets, transforms import torch.nn as nn import torch.optim as optim from tqdm import tqdm # 用于进度条显示 import os# 定义数据预处理(标准化+Tensor转换) transform = transforms.Compose([transforms.ToTensor…...

Maven(黑马)
Maven 是一个强大的项目管理和构建自动化工具,主要用于 Java 项目的构建、依赖管理和文档生成。它通过使用 POM(Project Object Model)文件来管理项目的配置和依赖关系,从而实现项目的自动化构建和管理。以下是 Maven 的一些核心概…...
CppCon 2014 学习:ODB, Advanced Weapons and Tactics
#Schema Evolution 是数据库持久化技术中的一个重要概念,特别是在使用像 ODB 这样的 C ORM 框架时。 展示的代码片段正是 ODB 支持的**模式演化(Schema Evolution)**语法示例。 什么是 Schema Evolution? Schema Evolution 指的…...

将手机网络经USB数据线和本地局域网共享给华为AP6050DN无线接入点
引言 由于最近装毕的新家所在的小区未能及时通宽带,于是家中各类无线设备如何上网就成了首要要解决的问题。 鉴于家中要联网的设备多、类型杂、支持频段也不一,总是开手机热点不是回事儿,于是就想着把手机网络引至华为AP6050DN无线接入点中,让家中所有的无线设备都能快速高…...

【论文解读】Deformable DETR | Deformable Transformers for End-to-End Object Detection
论文地址:https://arxiv.org/pdf/2010.04159 代码地址:https://github.com/fundamentalvision/Deformable-DETR 摘要 DETR最近被提出,旨在消除物体检测中许多手工设计的组件的需求,同时展示出良好的性能。然而,由于T…...
android 图片背景毛玻璃效果实现
图片背景毛玻璃效果实现 1 依赖 // Glide implementation("com.github.bumptech.glide:glide:4.16.0") kapt("com.github.bumptech.glide:compiler:4.16.0") implementation("jp.wasabeef:glide-transformations:4.3.0") 2 布局<com.googl…...

机器学习----决策树
一、决策树简介 from sklearn.tree import DecisionTreeClassifier from sklearn.tree import plot_tree 决策树是一种树形结构,树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果。 决…...

LabVIEW输血袋字符智能检测系统
针对医疗行业输血袋字符检测需求,基于 LabVIEW 图形化开发平台与基恩士(KEYENCE)机器视觉硬件,构建高精度、高可靠性的字符在线识别系统。通过选用基恩士工业相机、光源及 NI 数据采集设备等硬件,结合 LabVIEW 强大的图…...
数据结构测试模拟题(3)
1、两个有序链表序列的合并 #include<bits/stdc.h> using namespace std;struct node{int num;node* next; };// 创建链表 node* CreatList(){int x;node *head new node(); // 创建头节点head->next NULL;node *tail head; // 尾指针初始指向头节点while…...