我使用的安装文件是 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. Curator基本操作(Zookeeper节点增删改查)

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

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

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

  4. jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...

    Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...

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

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

  6. mysql5.0.x统计每秒增删改查替换数及系统每秒磁盘IO

    转载自:http://blog.chinaunix.net/uid-9370128-id-393082.html 1. mysql 5.0.x 统计每秒增,删,改,查,替换数   mysql 的sho ...

  7. beego原生mysql查询_Beego基础学习(五)Golang原生sql操作Mysql数据库增删改查(基于Beego下测试)...

    //控制器文件 package controllers import ("fmt" "github.com/astaxie/beego" "mypro ...

  8. zookeeper基础知识以及常用命令

    zookeeper简介 1.中间件,提供协调服务. 2.作用于分布式系统,发挥其优势,可以为大数据服务. 3.支持java,提供Java和c语言的客户端API. 什么是分布式系统 1.很多台计算机组成 ...

  9. Python基础知识02

    内容供自己学习使用,如有错误之处,请大佬们指正,谢谢! 作者:rookiequ python基础知识02 数据类型 列表(list):可以存放多个元素,并且元素类型可以不同 #可以存放多种数据类型 l ...

最新文章

  1. 怎么看python帮助手册常见问题商家认证_python认证
  2. 如何将本地项目上传至git中进行管理的解决办法
  3. FolderBrowserDialog(文件夹浏览对话框)
  4. 路飞学城Python-Day46
  5. 孩子有必要学python吗_不学就落后了?孩子都能学得Python编程,究竟是什么?
  6. io流文本文档的快速读取
  7. linux大端小端命令,linux的大小端、网络字节序问题
  8. 五步法颈椎病自我按摩图解
  9. CSS可以实现可视化设计吗?要如何实现?
  10. 直降500+24期免息!天猫双11全线iPhone打折
  11. 如何在WPF 表格中嵌套按钮
  12. 64java下载_java软件下载|java64 v8.0 官方版-520下载站
  13. android模拟器快捷键,Android模拟器快捷键大全
  14. matlab随机抽样模拟,随机抽样一致性算法(matlab)
  15. 细数Android原生工程接入EasyAR-SurfaceTracking遇到的坑
  16. jojo第七部dio怎么复活_JOJO杂谈:DIO复活的那些年到底在干什么?
  17. Conflux 的自我进化:从 DAG 到树图| 对话伍鸣
  18. PTA-IP地址转换
  19. Android中Wi-Fi扫描、连接和信息(一)
  20. 程序设计与算法三~C++面向对象程序设计~北大郭炜MOOC学习笔记~第三章:类和对象进阶(新标准C++程序设计)

热门文章

  1. PictureSelector 2.0 Android Q 适配之旅。
  2. 基于TI Sitara Cortex-A8 ARM AM335x评估板串口
  3. [Music]30首经典萨克斯名曲
  4. C语言中的EOF和feof()
  5. 初学电子快速入门的方法
  6. DB2创建新用户及授权研究
  7. 一. 卡尔曼滤波器开发实践之一: 五大公式详解
  8. 高通推出骁龙888处理器,移动办公使用电子邮箱更便捷!
  9. 直播代码中关于敏感词替换的代码编辑
  10. python3 psycopg2查询PostgreSQL返回字典