目录
零、前置操作
1.群起服务端
2.启动客户端
一、命令行语法
二、节点信息
三、节点类型
四、节点操作
1.分别创建2个普通节点(持久节点 + 无序号)
创建节点
获取节点的信息
2.创建带序号的节点(持久节点 + 带序号)
3.创建短暂节点(短暂节点 + 无序号)
4.创建短暂节点(短暂节点 + 带序号)
5.修改节点值
6.删除和查看节点
删除
查看节点
zk的安装和集群的搭建 : Zookeeper - 本地安装与参数配置
Zookeeper - 集群搭建 + 群起集群脚本
咱们先把服务端起起来,这里用的群起脚本在集群搭建那篇博客中有展示:
zk.sh start
确认一下:
zk.sh status
cd /opt/module/zookeeper-3.5.7/bin/
./zkCli.sh
启动后的效果:
可以看到这里是本地起了一个2181客户端,咱们换一种方式来起,方便我们查看是具体哪一台服务器上的操作,ctrl+c退出去然后重进:
./zkCli.sh -server hadoop102:2181
基本语法 | 功能描述 |
help | 显示所有操作命令 |
ls path | 使用 ls 命令来查看当前 znode 的子节点 [可监听] -w 监听子节点变化 -s 附加次级信息 |
create | 普通创建 -s 含有序列 -e 临时(重启或者超时消失) |
get path | 获得节点的值 [可监听] -w 监听节点内容变化 -s 附加次级信息 |
set | 设置节点的具体值 |
stat | 查看节点状态 |
delete | 删除节点 |
deleteall | 递归删除节点 |
ls /
这里可以看到一个Zookeeper节点:
ls -s /
详细解释如下:
#创建节点的事务zxid,每次修改 ZooKeeper 状态都会产生一个 ZooKeeper 事务 ID。事务 ID 是
#ZooKeeper 中所有修改总的次序。每次修改都有唯一的 zxid,如果 zxid1 小于 zxid2,那么
#zxid1 在 zxid2 之前发生
[zookeeper]cZxid = 0x0
#znode 被创建的毫秒数(从 1970 年开始)
ctime = Thu Jan 01 08:00:00 CST 1970
#znode 最后更新的事务 zxid
mZxid = 0x0
#znode 最后修改的毫秒数(从 1970 年开始)
mtime = Thu Jan 01 08:00:00 CST 1970
#znode 最后更新的子节点 zxid
pZxid = 0x0
#znode 子节点变化号,znode 子节点修改次数
cversion = -1
#znode 数据变化号
dataVersion = 0
#znode 访问控制列表的变化号
aclVersion = 0
#如果是临时节点,这个是 znode 拥有者的 session id。如果不是
临时节点则是 0
ephemeralOwner = 0x0
#znode 的数据长度
dataLength = 0
#znode 子节点数量
numChildren = 1
类型可分为两类 '持久' 和 '短暂' 。两者之下还有 '有序号' 和 '无序号' 之分。持久有序号、持久无序号、短暂有序号、短暂无序号。这里提到的编号是一个顺序标识,znode名称 后会附加一个值,顺序号是一个单调递增的计数 器,由父节点维护。
持久(Persistent) :客户端和服务器端断开连接后,创建的节点不删除
├── 持久无序号:客户端与Zookeeper断开连接后,该节点依旧存在
└── 持久有序号:客户端与Zookeeper断开连接后,该节点依旧存 在,只是Zookeeper给该节点名称进行顺序编号
短暂(Ephemeral):客户端和服务器端断开连接后,创建的节点自己删除
├── 短暂无序号:客户端与Zookeeper断开连接后,该节点被删除
└── 短暂有序号:客户端与 Zookeeper 断开连接后 , 该 节 点 被 删 除 , 只 是 Zookeeper给该节点名称进行顺序编号。
这里创建了一个名叫rank1的节点:
#创建语法 节点名 节点值
create /rank1 "1"
创建完成之后可以 ls 查看一下:
ls /
可以看到里面多了一个叫做rank1的节点,节点创建成功。再在rank1下创建一个叫rank2额节点:
create /rank1/rank2 "1.2"
ls /rank1
get -s /rank1
创建时多加一个 -s :
create -s /rank1/rank3 "1.3"
查看一下:
ls /rank1
可以看到这里的rank3后面自己加上了序号。那么这个序号有什么用呢,我们重复上面的操作,再创建一个同名的节点 rank3 :
可以看到并没有因为名称重复而创建失败,而是序号自增。
因为是持久节点,所以我们退出客户端再重新进去,看看节点是否还存在:
quit
./zkCli.sh -server hadoop102:2181
ls -R /
可以看到都是存在的,并没有被删除:
create -e /rank1/rank4 "1.4"
create -es /rank1/rank5 "1.5"
看一眼:
然后退出重进查看:
quit
./zkCli.sh -server hadoop102:2181
可以看到刚刚创建的4和5已经被删除:
咱们把 /rank1/rank2 原本的1.2改成2.1:
set /rank1/rank2 "2.1"
get -s /rank1/rank2
修改成功。
delete /rank1/rank30000000001
然后咱们删除rank1看看:
delete /rank1
报错了,因为这里 要使用递归删除(rank节点下还存在其他的节点):
deleteall /rank1
stat /rank1