目录

零、前置操作

1.群起服务端

2.启动客户端

一、命令行语法

二、节点信息 

三、节点类型

四、节点操作

1.分别创建2个普通节点(持久节点 + 无序号)

创建节点

获取节点的信息

2.创建带序号的节点(持久节点 + 带序号)

3.创建短暂节点(短暂节点 + 无序号)

4.创建短暂节点(短暂节点 + 带序号)

5.修改节点值

6.删除和查看节点

删除

查看节点


zk的安装和集群的搭建 :  Zookeeper - 本地安装与参数配置

                                        Zookeeper - 集群搭建 + 群起集群脚本


零、前置操作

1.群起服务端

咱们先把服务端起起来,这里用的群起脚本在集群搭建那篇博客中有展示:

zk.sh start

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper

确认一下:

zk.sh status

zookeeper检查集群状态 zookeeper查看集群节点_java-zookeeper_02


2.启动客户端

cd /opt/module/zookeeper-3.5.7/bin/
./zkCli.sh

启动后的效果: 

zookeeper检查集群状态 zookeeper查看集群节点_java_03

可以看到这里是本地起了一个2181客户端,咱们换一种方式来起,方便我们查看是具体哪一台服务器上的操作,ctrl+c退出去然后重进:

./zkCli.sh -server hadoop102:2181

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper_04


一、命令行语法

基本语法

功能描述

help

显示所有操作命令

ls path

使用 ls 命令来查看当前 znode 的子节点 [可监听] -w 监听子节点变化 -s 附加次级信息

create

普通创建 -s 含有序列 -e 临时(重启或者超时消失)

get path

获得节点的值 [可监听] -w 监听节点内容变化 -s 附加次级信息

set

设置节点的具体值

stat

查看节点状态

delete

删除节点

deleteall

递归删除节点


二、节点信息 

ls /

这里可以看到一个Zookeeper节点: 

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper_05

ls -s /

zookeeper检查集群状态 zookeeper查看集群节点_java-zookeeper_06

详细解释如下: 

#创建节点的事务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给该节点名称进行顺序编号。


四、节点操作

1.分别创建2个普通节点(持久节点 + 无序号)

创建节点

这里创建了一个名叫rank1的节点:

#创建语法     节点名    节点值
create       /rank1   "1"

zookeeper检查集群状态 zookeeper查看集群节点_java-zookeeper_07

创建完成之后可以 ls 查看一下:

ls /

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper检查集群状态_08

可以看到里面多了一个叫做rank1的节点,节点创建成功。再在rank1下创建一个叫rank2额节点:

create /rank1/rank2 "1.2"
ls /rank1

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper检查集群状态_09

获取节点的信息

get -s /rank1

zookeeper检查集群状态 zookeeper查看集群节点_服务器_10


2.创建带序号的节点(持久节点 + 带序号)

创建时多加一个 -s :

create -s /rank1/rank3 "1.3"

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper_11

查看一下:

ls /rank1

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper_12

可以看到这里的rank3后面自己加上了序号。那么这个序号有什么用呢,我们重复上面的操作,再创建一个同名的节点 rank3 :

zookeeper检查集群状态 zookeeper查看集群节点_java-zookeeper_13

可以看到并没有因为名称重复而创建失败,而是序号自增。

因为是持久节点,所以我们退出客户端再重新进去,看看节点是否还存在:

quit
./zkCli.sh -server hadoop102:2181
ls -R /

可以看到都是存在的,并没有被删除: 

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper_14


3.创建短暂节点(短暂节点 + 无序号)

create -e /rank1/rank4 "1.4"

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper检查集群状态_15


4.创建短暂节点(短暂节点 + 带序号)

create -es /rank1/rank5 "1.5"

zookeeper检查集群状态 zookeeper查看集群节点_java_16

看一眼:

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper检查集群状态_17

然后退出重进查看:

quit
./zkCli.sh -server hadoop102:2181

可以看到刚刚创建的4和5已经被删除:

zookeeper检查集群状态 zookeeper查看集群节点_java-zookeeper_18


5.修改节点值

咱们把 /rank1/rank2 原本的1.2改成2.1:

set /rank1/rank2 "2.1"
get -s /rank1/rank2

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper检查集群状态_19

修改成功。


6.删除和查看节点

删除

delete /rank1/rank30000000001

然后咱们删除rank1看看:

delete /rank1

zookeeper检查集群状态 zookeeper查看集群节点_zookeeper检查集群状态_20

报错了,因为这里 要使用递归删除(rank节点下还存在其他的节点):

deleteall /rank1

查看节点

stat /rank1

zookeeper检查集群状态 zookeeper查看集群节点_java-zookeeper_21