我使用的安装文件是 apache-zookeeper-3.6.0-bin.tar.gz ,以下内容均以此版本进行说明。这个是官网的3.6.0《CLI命令说明》 感兴趣的可以查看。

1.1 启动、连接服务

由于配置了环境变量$ZOOKEEPER_HOME所以在哪里都可以启动服务和客户端:

# 启动服务
[root@tcloud ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED# 连接服务 connect to the localhost with the default port:2181
[root@tcloud ~]#  zkCli.sh# 这里指定 connect to the remote host with timeout:3s
[root@tcloud ~]#  zkCli.sh  -timeout 3000 -server tcloud:2181
Connecting to tcloud:2181
# 部分日志信息不再贴出
Welcome to ZooKeeper!
# 先验证一下zookeeper的版本
[zk: tcloud:2181(CONNECTED) 0] version
ZooKeeper CLI version: 3.6.0--b4c89dc7f6083829e18fae6e446907ae0b1f22d7, built on 02/25/2020 14:38 GMT

1.2 全部命令

ZooKeeper -server host:port cmd argsaddWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVEaddauth scheme authcloseconfig [-c] [-w] [-s]connect host:portcreate [-s] [-e] [-c] [-t ttl] path [data] [acl]delete [-v version] pathdeleteall path [-b batch size]delquota [-n|-b] pathget [-s] [-w] pathgetAcl [-s] pathgetAllChildrenNumber pathgetEphemerals pathhistorylistquota pathls [-s] [-w] [-R] pathprintwatches on|offquitreconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]redo cmdnoremovewatches path [-c|-d|-a] [-l]set [-s] [-v version] path datasetAcl [-s] [-v version] [-R] path aclsetquota -n|-b val pathstat [-w] pathsync pathversionl

1.3 查看节点信息

查看节点信息命令为 ls [-s] [-w] [-R] path, -s状态 -w监听器 -R递归,测试一下:

# 查看根节点下的所有节点
[zk: tcloud:2181(CONNECTED) 14] ls /
[admin, brokers, cluster, config, consumers, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, workspace, zookeeper]# 查看/admin 下的节点
[zk: tcloud:2181(CONNECTED) 15] ls -w /admin
[delete_topics]# 递归查询/admin 下的节点
[zk: tcloud:2181(CONNECTED) 16] ls -R /admin
/admin
/admin/delete_topics# 查看/admin 下的节点详情
[zk: tcloud:2181(CONNECTED) 17] ls -s /admin
[delete_topics]
cZxid = 0x15
ctime = Fri Aug 06 15:57:38 CST 2021
mZxid = 0x15
mtime = Fri Aug 06 15:57:38 CST 2021
pZxid = 0x16
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1

1.4 新增节点

新增节点命令为 create [-s] [-e] [-c] [-t ttl] path [data] [acl]

create [-s] [-e] path data acl  #其中-s 为有序节点,-e 临时节点

创建节点并写入数据:

create /hadoop 123456

创建有序节点,此时创建的节点名为指定节点名 + 自增序号:

[zk: localhost:2181(CONNECTED) 23] create -s /a  "aaa"
Created /a0000000022
[zk: localhost:2181(CONNECTED) 24] create -s /b  "bbb"
Created /b0000000023
[zk: localhost:2181(CONNECTED) 25] create -s /c  "ccc"
Created /c0000000024

创建临时节点,临时节点会在会话过期后被删除:

[zk: localhost:2181(CONNECTED) 26] create -e /tmp  "tmp"
Created /tmp

1.5 查看节点

  1. 获取节点数据
# 格式
get path [watch]
[zk: localhost:2181(CONNECTED) 31] get /hadoop
123456  #节点数据
cZxid = 0x14b
ctime = Fri May 24 17:03:06 CST 2019
mZxid = 0x14b
mtime = Fri May 24 17:03:06 CST 2019
pZxid = 0x14b
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

节点各个属性如下表。其中一个重要的概念是 Zxid(ZooKeeper Transaction Id),ZooKeeper 节点的每一次更改都具有唯一的 Zxid,如果 Zxid1 小于 Zxid2,则 Zxid1 的更改发生在 Zxid2 更改之前。

  • cZxid 数据节点创建时的事务 ID
  • ctime 数据节点创建时的时间
  • mZxid 数据节点最后一次更新时的事务 ID
  • mtime 数据节点最后一次更新时的时间
  • pZxid 数据节点的子节点最后一次被修改时的事务 ID
  • cversion 子节点的更改次数
  • dataVersion 节点数据的更改次数
  • aclVersion 节点的 ACL 的更改次数
  • ephemeralOwner 如果节点是临时节点,则表示创建该节点的会话的 SessionID;如果节点是持久节点,则该属性值为 0
  • dataLength 数据内容的长度
  • numChildren 数据节点当前的子节点个数
  1. 查看节点状态

可以使用 stat 命令查看节点状态,它的返回值和 get 命令类似,但不会返回节点数据。

[zk: localhost:2181(CONNECTED) 32] stat /hadoop
cZxid = 0x14b
ctime = Fri May 24 17:03:06 CST 2019
mZxid = 0x14b
mtime = Fri May 24 17:03:06 CST 2019
pZxid = 0x14b
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

1.6 更新节点

更新节点的命令是 set ,可以直接进行修改,如下:

[zk: localhost:2181(CONNECTED) 33] set /hadoop 345
cZxid = 0x14b
ctime = Fri May 24 17:03:06 CST 2019
mZxid = 0x14c
mtime = Fri May 24 17:13:05 CST 2019
pZxid = 0x14b
cversion = 0
dataVersion = 1  # 注意更改后此时版本号为 1,默认创建时为 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

也可以基于版本号进行更改,此时类似于乐观锁机制,当你传入的数据版本号 (dataVersion) 和当前节点的数据版本号不符合时,zookeeper 会拒绝本次修改:

[zk: localhost:2181(CONNECTED) 34] set /hadoop 678 0
version No is not valid : /hadoop   #无效的版本号

1.7 删除节点

删除节点的语法如下:

delete path [version]

和更新节点数据一样,也可以传入版本号,当你传入的数据版本号 (dataVersion) 和当前节点的数据版本号不符合时,zookeeper 不会执行删除操作。

[zk: localhost:2181(CONNECTED) 36] delete /hadoop 0
version No is not valid : /hadoop  #无效的版本号
[zk: localhost:2181(CONNECTED) 37] delete /hadoop 1
[zk: localhost:2181(CONNECTED) 38]

要想删除某个节点及其所有后代节点,可以使用递归删除,命令为 rmr path 。

2.监听器

2.1 get path [watch]

使用 get path [watch] 注册的监听器能够在节点内容发生改变的时候,向客户端发出通知。需要注意的是 zookeeper 的触发器是一次性的 (One-time trigger),即触发一次后就会立即失效。

[zk: localhost:2181(CONNECTED) 4] get /hadoop watch
[zk: localhost:2181(CONNECTED) 5] set /hadoop 45678
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop  #节点值改变

2.2 stat path [watch]

使用 stat path [watch] 注册的监听器能够在节点状态发生改变的时候,向客户端发出通知。

[zk: localhost:2181(CONNECTED) 7] stat /hadoop watch
[zk: localhost:2181(CONNECTED) 8] set /hadoop 112233
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop  #节点值改变

2.3 ls\ls2 path [watch]

使用 ls path [watch] 或 ls2 path [watch] 注册的监听器能够监听该节点下所有子节点的增加和删除操作。

[zk: localhost:2181(CONNECTED) 9] ls /hadoop watch
[]
[zk: localhost:2181(CONNECTED) 10] create /hadoop/yarn "aaa"
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/hadoop

3.zookeeper 四字命令

  • conf 打印服务配置的详细信息。
  • cons 列出连接到此服务器的所有客户端的完整连接/会话详细信息。包括接收/发送的数据包数量,会话 ID,操作延迟,上次执行的操作等信息。
  • dump 列出未完成的会话和临时节点。这只适用于 Leader 节点。
  • envi 打印服务环境的详细信息。
  • ruok 测试服务是否处于正确状态。如果正确则返回“imok”,否则不做任何相应。
  • stat 列出服务器和连接客户端的简要详细信息。
  • wchs 列出所有 watch 的简单信息。
  • wchc 按会话列出服务器 watch 的详细信息。
  • wchp 按路径列出服务器 watch 的详细信息。

使用前需要使用 yum install nc 安装 nc 命令,使用示例如下:

[root@hadoop001 bin]# echo stat | nc localhost 2181
Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03,
built on 06/29/2018 04:05 GMT
Clients:
/0:0:0:0:0:0:0:1:50584[1](queued=0,recved=371,sent=371)
/0:0:0:0:0:0:0:1:50656[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/19
Received: 372
Sent: 371
Connections: 2
Outstanding: 0
Zxid: 0x150
Mode: standalone
Node count: 167

ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)相关推荐

  1. ZooKeeper【基础知识 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)

    我使用的安装文件是 apache-zookeeper-3.6.0-bin.tar.gz ,以下内容均以此版本进行说明.这个是官网的3.6.0<CLI命令说明> 感兴趣的可以查看. 1.1 ...

  2. mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...

    MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...

  3. 【node】Sequelize常用操作、基本增删改查

    [node]Sequelize常用操作.基本增删改查 sequelize初始化 先初始化一个数据库实例 再初始化一个model实例 sequelize的数据类型 基本增删改查的写法 SELECT * ...

  4. Curator基本操作(Zookeeper节点增删改查)

    Curator是Zookeeper的Java客户端库,官网为 https://curator.apache.org . 环境 Ubuntu 22.04 Zookeeper 3.7.1 JDK 17.0 ...

  5. MVC新手教程三:Entity Framework 4.0 来实现MVC的增删改查功能,10分钟搞定

    在这一节,我们使用VS2010自带的EF4.0来实现MVC的增删查改功能,为什么用EF呢?因为如果你自己手写sqlhelper之类,或者是用动软,和我们用EF的速度比,太慢太慢··· 当然,新手还是用 ...

  6. c mysql 添加数据类型_MYSQL的常用命令和增删改查语句和数据类型

    连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 创建数据库:create database [库名] 显示所有数据库: show databases; 打开数据库:use [ ...

  7. mysql查询和修改一个命令_MYSQL的常用命令和增删改查语句

    连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 创建数据库:create database [库名] 显示所有数据库: show databases; 打开数据库:use [ ...

  8. ​MYSQL中常用的SQL语句​(增删改查)

    MYSQL中常用的SQL语句 一.增删改查 1.新增 指定字段插入: INSERT INTO <表名> (<字段1>, <字段2>, <字段3>) VA ...

  9. 自定义 RPC框架3——JAVA实现Zookeeper节点增删改查

    Zookeeper安装 zookeeper的安装在之前的文章中已经写过:https://blog.csdn.net/qq_45587153/article/details/123630361?spm= ...

最新文章

  1. 基础设计模式:单例模式+工厂模式+注册树模式
  2. HTML特殊字符过滤器
  3. python 操作txt 写入列表
  4. CG-CTF-Web-php decode
  5. jquery-data的三种用法
  6. Qt 解决 #error This file requires compiler and library support for the ISO C++ 2011 standard
  7. [Android]ListView的Adapter.getView()方法中延迟加载图片的优化
  8. Go获取命令行参数及信号量处理
  9. classdefnotfound本地不报错_四种解决Nginx出现403 forbidden 报错的方法
  10. 深度集成 Flink: Apache Iceberg 0.11.0 最新功能解读
  11. 管理新语:新员工进来,竟然连起码的技能培训都没有
  12. Android裁剪图片为圆形
  13. java socket连接超时_Java中Socket设置连接超时的代码
  14. 牛顿法和高斯牛顿法对比
  15. 让你的 Android 应用拥有微信一样的实时沟通体验【转自 丰俊文】
  16. 拓嘉辰丰电商:拼多多长期活动有哪些?有什么特点
  17. 微信已经成为电商最重要的一个通道
  18. java 实现非极大值抑制
  19. 腾讯优测-优社区干货精选 | android开发在路上:少去踩坑,多走捷径(上)
  20. 2021年10月到12月一个月学习总结

热门文章

  1. ohos-build 安装失败分析
  2. 身份证OCR识别工作原理及流程
  3. 编程与数学的关系_学编程需要很好的数学吗
  4. vue日程安排_在Vue项目中用fullcalendar制作日程表的示例代码
  5. js中数组的几种循环方式
  6. NAT之SNAT和DNAT
  7. HTML5 网页添加背景音乐
  8. MFC隐藏主窗口运行的几种方法
  9. [tool] perforce
  10. 美国Linux服务器系统内核的详细介绍