CSDN话题挑战赛第2期
参赛话题:学习笔记
学习之路,长路漫漫,需要您的陪伴。
关注一波,您的关注是我最大的动力。
目录
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 年开始)
- mzxid:znode 最后更新的事务 zxid
- mtime:znode 最后修改的毫秒数(从 1970 年开始)
- pZxid:znode 最后更新的子节点 zxid
- cversion:znode 子节点变化号,znode 子节点修改次数
- dataversion:znode 数据变化号
- aclVersion:znode 访问控制列表的变化号
- ephemeralOwner:如果是临时节点,这个是 znode 拥有者的 session id。如果不是临时节点则是 0。
- dataLength:znode 的数据长度
- numChildren:znode 子节点数量
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.监听器
监听节点数据的变化
在虚拟机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]
点赞,关注,收藏,您的支持是我更新的最大动力!!!