ZooKeeper【基础知识 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
我使用的安装文件是 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 查看节点
- 获取节点数据
# 格式
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 数据节点当前的子节点个数
- 查看节点状态
可以使用 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命令(节点增删改查+监听器+四字指令)相关推荐
- ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
我使用的安装文件是 apache-zookeeper-3.6.0-bin.tar.gz ,以下内容均以此版本进行说明.这个是官网的3.6.0<CLI命令说明> 感兴趣的可以查看. 1.1 ...
- Curator基本操作(Zookeeper节点增删改查)
Curator是Zookeeper的Java客户端库,官网为 https://curator.apache.org . 环境 Ubuntu 22.04 Zookeeper 3.7.1 JDK 17.0 ...
- MVC新手教程三:Entity Framework 4.0 来实现MVC的增删改查功能,10分钟搞定
在这一节,我们使用VS2010自带的EF4.0来实现MVC的增删查改功能,为什么用EF呢?因为如果你自己手写sqlhelper之类,或者是用动软,和我们用EF的速度比,太慢太慢··· 当然,新手还是用 ...
- jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...
Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...
- 自定义 RPC框架3——JAVA实现Zookeeper节点增删改查
Zookeeper安装 zookeeper的安装在之前的文章中已经写过:https://blog.csdn.net/qq_45587153/article/details/123630361?spm= ...
- mysql5.0.x统计每秒增删改查替换数及系统每秒磁盘IO
转载自:http://blog.chinaunix.net/uid-9370128-id-393082.html 1. mysql 5.0.x 统计每秒增,删,改,查,替换数 mysql 的sho ...
- beego原生mysql查询_Beego基础学习(五)Golang原生sql操作Mysql数据库增删改查(基于Beego下测试)...
//控制器文件 package controllers import ("fmt" "github.com/astaxie/beego" "mypro ...
- zookeeper基础知识以及常用命令
zookeeper简介 1.中间件,提供协调服务. 2.作用于分布式系统,发挥其优势,可以为大数据服务. 3.支持java,提供Java和c语言的客户端API. 什么是分布式系统 1.很多台计算机组成 ...
- Python基础知识02
内容供自己学习使用,如有错误之处,请大佬们指正,谢谢! 作者:rookiequ python基础知识02 数据类型 列表(list):可以存放多个元素,并且元素类型可以不同 #可以存放多种数据类型 l ...
最新文章
- 怎么看python帮助手册常见问题商家认证_python认证
- 如何将本地项目上传至git中进行管理的解决办法
- FolderBrowserDialog(文件夹浏览对话框)
- 路飞学城Python-Day46
- 孩子有必要学python吗_不学就落后了?孩子都能学得Python编程,究竟是什么?
- io流文本文档的快速读取
- linux大端小端命令,linux的大小端、网络字节序问题
- 五步法颈椎病自我按摩图解
- CSS可以实现可视化设计吗?要如何实现?
- 直降500+24期免息!天猫双11全线iPhone打折
- 如何在WPF 表格中嵌套按钮
- 64java下载_java软件下载|java64 v8.0 官方版-520下载站
- android模拟器快捷键,Android模拟器快捷键大全
- matlab随机抽样模拟,随机抽样一致性算法(matlab)
- 细数Android原生工程接入EasyAR-SurfaceTracking遇到的坑
- jojo第七部dio怎么复活_JOJO杂谈:DIO复活的那些年到底在干什么?
- Conflux 的自我进化:从 DAG 到树图| 对话伍鸣
- PTA-IP地址转换
- Android中Wi-Fi扫描、连接和信息(一)
- 程序设计与算法三~C++面向对象程序设计~北大郭炜MOOC学习笔记~第三章:类和对象进阶(新标准C++程序设计)