Zookeeper常用命令

CSDN话题挑战赛第2期
参赛话题:学习笔记

学习之路,长路漫漫,需要您的陪伴。
关注一波,您的关注是我最大的动力。

 

目录

1.查看结点:

2.四种结点的创建

3.获取结点值

4.修改结点值

5.监听器

6.删除结点


1.查看结点:

[zk: localhost:2181(CONNECTED) 1] ls /
[sanguo, zookeeper]

查看sanguo结点下的数据:

[zk: localhost:2181(CONNECTED) 2] ls /sanguo
[shuguo, wuguo0000000001]

查看结点详细数据:

[zk: localhost:2181(CONNECTED) 7] ls -s /sanguo
[shuguo, wuguo0000000001]cZxid = 0x400000002
ctime = Sun Oct 09 18:01:53 CST 2022
mZxid = 0x40000000c
mtime = Sun Oct 09 19:52:13 CST 2022
pZxid = 0x40000000a
cversion = 6
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 2

 查看结点状态:

[zk: localhost:2181(CONNECTED) 5] stat /sanguo
cZxid = 0x400000002
ctime = Sun Oct 09 18:01:53 CST 2022
mZxid = 0x40000000c
mtime = Sun Oct 09 19:52:13 CST 2022
pZxid = 0x40000000a
cversion = 6
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 2

解析:

  • czxid:创建节点的事务 zxid

每次修改 ZooKeeper 状态都会产生一个 ZooKeeper 事务 ID。事务 ID 是 ZooKeeper 中所 有修改总的次序。每次修改都有唯一的 zxid,如果 zxid1 小于 zxid2,那么 zxid1 在 zxid2 之 前发生。

  • ctime:znode 被创建的毫秒数(从 1970 年开始)
  • mzxidznode 最后更新的事务 zxid
  • mtimeznode 最后修改的毫秒数(从 1970 年开始)
  • pZxidznode 最后更新的子节点 zxid
  • cversion:znode 子节点变化号,znode 子节点修改次数
  • dataversionznode 数据变化号
  • aclVersionznode 访问控制列表的变化号
  • ephemeralOwner:如果是临时节点,这个是 znode 拥有者的 session id。如果不是临时节点则是 0
  • dataLengthznode 的数据长度
  • numChildrenznode 子节点数量

2.四种结点的创建

四种结点类型如下:

  • 持久化目录节点 客户端与Zookeeper断开连接后,该节点依旧存在
  • 持久化顺序编号目录节点客户端与Zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
  • 临时目录节点客户端与Zookeeper断开连接后,该节点被删除
  • 临时顺序编号目录节点客户端与 Zookeeper 断开连接后 ,该节点被删除,只是Zookeeper给该节点名称进行顺序编号。

创建语句:create -s/-e /结点 "值"

创建永久结点

[zk: localhost:2181(CONNECTED) 1] create /sanguo "diaochan"
Created /sanguo

创建永久带序号结点

[zk: localhost:2181(CONNECTED) 1] create -s /sanguo/wuguo "caocao"
Created /sanguo/wuguo0000000001

创建暂时结点

[zk: localhost:2181(CONNECTED) 4] create -e /sanguo/weiguo "weiguo"
Created /sanguo/weiguo

创建暂时带序号结点

[zk: localhost:2181(CONNECTED) 5] create -e -s  /sanguo/weiguo "weiguo"
Created /sanguo/weiguo0000000003

验证短暂结点在重启zookeeper客户端后会消失:

首先查看已经创建的结点:

[zk: localhost:2181(CONNECTED) 6] ls /sanguo
[shuguo, weiguo, weiguo0000000003, wuguo0000000001]

退出重启客户端:

[zk: localhost:2181(CONNECTED) 7] quit
[root@hadoop100 zookeeper-3.5.7]# bin/zkCli.sh

查看结点:

[zk: localhost:2181(CONNECTED) 0] ls /sanguo
[shuguo, wuguo0000000001]

3.获取结点值

get -s /结点 

[zk: localhost:2181(CONNECTED) 7] get -s /sanguo
diaochan
cZxid = 0x400000002
ctime = Sun Oct 09 18:01:53 CST 2022
mZxid = 0x400000002
mtime = Sun Oct 09 18:01:53 CST 2022
pZxid = 0x400000003
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 1

 

4.修改结点值

set /结点 值

修改sanguo结点的值并重新查询

[zk: localhost:2181(CONNECTED) 3] set /sanguo "zhangfei"
[zk: localhost:2181(CONNECTED) 4] get -s /sanguo
zhangfei
cZxid = 0x400000002
ctime = Sun Oct 09 18:01:53 CST 2022
mZxid = 0x40000000c
mtime = Sun Oct 09 19:52:13 CST 2022
pZxid = 0x40000000a
cversion = 6
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 2

5.监听器

1 、监听原理详解
        1)首先要有一个 main() 线程
        2)在 main 线程中创建 Zookeeper 客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听( listener )。
        3)通过 connect 线程将注册的监听事件发送给 Zookeeper
        4)在 Zookeeper 的注册监听器列表中将注册的监听事件添加到列表中。
        5) Zookeeper 监听到有数据或路径变化,就会将这个消息发送给 listener 线程。
        6) listener 线程内部调用了 process() 方法。
2.常见的监听
        1)监听节点数据的变化
        get path [watch]
        2)监听子节点增减的变化
        ls path [watch]

监听节点数据的变化

在虚拟机hadoop103上注册对sanguo结点的监听器,首先查看sanguo结点的值,然后注册监听器:

[zk: localhost:2181(CONNECTED) 1] get -s /sanguo
zhangfei
cZxid = 0x400000002
ctime = Sun Oct 09 18:01:53 CST 2022
mZxid = 0x40000000c
mtime = Sun Oct 09 19:52:13 CST 2022
pZxid = 0x40000000a
cversion = 6
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 2
[zk: localhost:2181(CONNECTED) 2] get -w /sanguo
zhangfei

在虚拟机hadoop102上修改sanguo结点的值:

[zk: localhost:2181(CONNECTED) 1] set /sanguo "diaochan"

虚拟机hadoop103传递监听信息:

[zk: localhost:2181(CONNECTED) 3] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/sanguo

注意:

在hadoop102上多次修改sanguo的值,hadoop103只会接收一次,要重新监视的话需要重新注册。

监听子节点增减的变化

hadoop103监视sanguo结点的路径变化

[zk: localhost:2181(CONNECTED) 0] ls -w /sanguo
[shuguo, wuguo0000000001]

 hadoop102在sanguo结点下新建结点:

[zk: localhost:2181(CONNECTED) 2] create /sanguo/jinguo "simayi"
Created /sanguo/jinguo

虚拟机hadoop103传递监听信息:

[zk: localhost:2181(CONNECTED) 1] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/sanguo

注意:

在sanguo下多次创建新节点,hadoop103也只会接收一次,要重新监视的话需要重新注册。

 6.删除结点

删除一个结点:delete /结点

[zk: localhost:2181(CONNECTED) 1] delete /sanguo/jinguo
[zk: localhost:2181(CONNECTED) 2] ls /sanguo
[shuguo, wuguo0000000001]

删除sanguo结点,报错:

[zk: localhost:2181(CONNECTED) 3] delete /sanguo
Node not empty: /sanguo

需要递归删除结点:deleteall /结点

[zk: localhost:2181(CONNECTED) 3] deleteall /sanguo
[zk: localhost:2181(CONNECTED) 4] ls /
[zookeeper]

点赞,关注,收藏,您的支持是我更新的最大动力!!! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoeil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值