当前位置: 代码网 > 科技>操作系统>Unix > Zookeeper的数据结构以及常用命令使用

Zookeeper的数据结构以及常用命令使用

2024年07月31日 Unix 我要评论
根目录中存在子目录,子目录中包含子文件,数据都在子文件中存储,而Zookeeper是在根节点下包含很多子节点,但是每一个节点都可以存储自己的一些数据和当前节点的信息,允许存储的数据大小为1M。Zookeeper的数据结构和标准的Unix文件系统类似,都存在一个(/)根,在Unix中数据结构被称为目录(根目录、子目录),而Zookeeper中的数据结构都被称为节点(根节点、子节点)。注意:如果要删除的节点中包含子节点,那么会删除失败,会提示节点不为空,只有当节点中不包含任何子节点时,才可以被删除。

目录

1.zookeeper的数据结构

2.zookeeper服务端常用操作命令

2.1.启动zookeeper服务

2.2.关闭zookeeper服务

2.3.重启zookeeper服务

2.4.查看zookeeper服务的状态

3.zookeeper客户端常用操作命令

3.1.进入zookeeper客户端命令行

3.2.查看命令帮助信息

3.3.查看zookeeper中节点信息

3.4.查看znode节点的详细信息

3.5.创建znode节点

3.6.查看znode节点中的数据

3.7.在znode节点中写入数据

3.8.删除znode节点

3.9.创建顺序性持久类型的节点

3.10.创建临时类型的节点

3.11创建顺序性临时类型的节点


1.zookeeper的数据结构

zookeeper的数据结构和标准的unix文件系统类似,都存在一个(/)根,在unix中数据结构被称为目录(根目录、子目录),而zookeeper中的数据结构都被称为节点(根节点、子节点)。

zookeeper的节点称为znode,znode是zookeeper中的最小数据单位,在znode下面还可以在有znode,层次感鲜明,一层层下去就形成了层次化命名空间znode树。

在zookeeper中,每一个数据节点都是一个znode,如下图所示,根节点中还有两个子节点,分别是/app1和/app2,其中/app1下面还有三个子节点。

image-20220315153023738

简而言之:zookeeper的数据结构就是一大堆子节点组成的树形结构,就好比是unix操作系统,根目录中存在子目录,子目录中包含子文件,数据都在子文件中存储,而zookeeper是在根节点下包含很多子节点,但是每一个节点都可以存储自己的一些数据和当前节点的信息,允许存储的数据大小为1m。

zookeeper节点类型可以分为三大类:持久性节点(persistent)、临时性节点(ephemeral)、顺序性节点(sequential),在生产使用中可以组合使用分为以下四种类型:

  • 持久性节点
    • 持久性节点指的是被创建后会一直存储在服务器中,直到删除操作主动清理。
    • 持久性节点可以创建子节点。
  • 临时性节点
    • 临时性节点指的是会被自动清理掉的节点,该种类型的节点声明周期会和客户端会话绑定在一起,当客户端结束会话,该节点就会被删除。
    • 临时性节点不允许创建子节点。
  • 顺序性持久节点
    • 顺序性持久节点与持久性节点的特性是一样的,只是额外表现在顺序上,在创建节点时会在节点的名称中增加数字编号,表示顺序。
  • 顺序性临时节点
    • 顺序性临时节点与临时性节点的特性是一样的,只是额外表现在顺序上,在创建节点时会在节点的名称中增加数字编号,表示顺序。

2.zookeeper服务端常用操作命令

2.1.启动zookeeper服务
# /data/zookeeper/bin/zkserver.sh start
/usr/local/jdk1.8.0_211/bin/java
zookeeper jmx enabled by default
using config: /data/zookeeper/bin/../conf/zoo.cfg
starting zookeeper ... started
2.2.关闭zookeeper服务
# /data/zookeeper/bin/zkserver.sh stop
/usr/local/jdk1.8.0_211/bin/java
zookeeper jmx enabled by default
using config: /data/zookeeper/bin/../conf/zoo.cfg
2.3.重启zookeeper服务
# /data/zookeeper/bin/zkserver.sh restart
/usr/local/jdk1.8.0_211/bin/java
zookeeper jmx enabled by default
using config: /data/zookeeper/bin/../conf/zoo.cfg
/usr/local/jdk1.8.0_211/bin/java
zookeeper jmx enabled by default
using config: /data/zookeeper/bin/../conf/zoo.cfg
stopping zookeeper ... stopped
/usr/local/jdk1.8.0_211/bin/java
zookeeper jmx enabled by default
using config: /data/zookeeper/bin/../conf/zoo.cfg
starting zookeeper ... started
2.4.查看zookeeper服务的状态
# /data/zookeeper/bin/zkserver.sh status
/usr/local/jdk1.8.0_211/bin/java
zookeeper jmx enabled by default
using config: /data/zookeeper/bin/../conf/zoo.cfg
client port found: 2181. client address: localhost.
mode: standalone

3.zookeeper客户端常用操作命令

3.1.进入zookeeper客户端命令行

使用zkcli.sh可以进入zookeeper的客户端命令行,-server参数表示指定zookeeper的地址,不指定-server默认使用本机。

# /data/zookeeper/bin/zkcli.sh -server 127.0.0.1:2181
[zk: 127.0.0.1:2181(connected) 0] 

image-20220315161655442

3.2.查看命令帮助信息

通过help命令可以打印出客户端可以执行的命令帮助信息。

[zk: 127.0.0.1:2181(connected) 0] help
  • 1

image-20220315161828488

3.3.查看zookeeper中节点信息

可以通过ls命令查看zookeeper中各个节点的信息,命令格式:ls path

部署完zookeeper后默认有一个节点"zookeeper",可以通过ls命令查询该节点下还有哪些节点。

1.查看根节点信息
[zk: 127.0.0.1:2181(connected) 3] ls /
[zookeeper]

2.查看/zookeeper节点信息
[zk: 127.0.0.1:2181(connected) 4] ls /zookeeper
[config, quota]

3.查看/zookeeper/config节点信息
[zk: 127.0.0.1:2181(connected) 5] ls /zookeeper/config
[]

4.查看/zookeeper/quota节点信息
[zk: 127.0.0.1:2181(connected) 6] ls /zookeeper/quota
[]

#当节点下没有子节点时,会返回[]

image-20220315162054924

3.4.查看znode节点的详细信息

通过ls -s命令可以显示出znode的详细信息。

[zk: 127.0.0.1:2181(connected) 18] ls -s /
[zookeeper]czxid = 0x0
ctime = thu jan 01 08:00:00 cst 1970
mzxid = 0x0
mtime = thu jan 01 08:00:00 cst 1970
pzxid = 0x10
cversion = 7
dataversion = 0
aclversion = 0
ephemeralowner = 0x0
datalength = 0
numchildren = 1
3.5.创建znode节点

可以使用create命令创建节点,命令格式:create /节点 数据

1.创建节点不写入任何数据
[zk: 127.0.0.1:2181(connected) 7] create /app1
created /app1

2.创建节点并写入数据
[zk: 127.0.0.1:2181(connected) 8] create /app2 app2data
created /app2

3.在/app1下再创建节点
[zk: 127.0.0.1:2181(connected) 10] create /app1/node_1
created /app1/node_1

3.查看创建的节点
[zk: 127.0.0.1:2181(connected) 9] ls /
[app1, app2, zookeeper]

image-20220315165448418

3.6.查看znode节点中的数据

可以使用get命令查看节点中的数据,命令格式:get /节点

1.如果节点没有数据则返回null
[zk: 127.0.0.1:2181(connected) 0] get /app1
null

2.如果节点有数据则返回数据内容
[zk: 127.0.0.1:2181(connected) 1] get /app2
app2data

image-20220315165051234

3.7.在znode节点中写入数据

可以使用set命令向节点中写入数据,命令格式:set /节点 数据

1.在/app1节点中写入数据
[zk: 127.0.0.1:2181(connected) 4] set /app1 napp1data

2.查看写入的数据
[zk: 127.0.0.1:2181(connected) 5] get /app1
napp1data

image-20220315165235136

3.8.删除znode节点

可以使用delete命令向节点中写入数据,命令格式:delete /节点

注意:如果要删除的节点中包含子节点,那么会删除失败,会提示节点不为空,只有当节点中不包含任何子节点时,才可以被删除。

如果想要删除节点下的所有节点可以使用deleteall命令,命令格式:deleteall /节点

1.删除一个空的节点
[zk: 127.0.0.1:2181(connected) 15] delete /app2

2.删除节点下的子节点
[zk: 127.0.0.1:2181(connected) 16] delete /app1/node_1

3.删除节点下的所有节点包含父节点
[zk: 127.0.0.1:2181(connected) 17] deleteall /app1
3.9.创建顺序性持久类型的节点

依旧使用create命令进行创建,加上-s参数创建节点名会带有一组数字编号,形成顺序。

创建顺序性的节点,多次创建可以使用相同的节点名称,zookeeper会自动为其增加一组数字编号,并且是有顺序的。

顺序编号在集群中通用,即使另外名称的节点也会按照当前的编号顺序往下创建。

不带任何参数创建的默认就是持久性节点,不会被删除,除非人为手动删除。

[zk: 127.0.0.1:2181(connected) 19] create -s /app_seq
created /app_seq0000000004
[zk: 127.0.0.1:2181(connected) 20] create -s /app_seq
created /app_seq0000000005
[zk: 127.0.0.1:2181(connected) 21] create -s /app_seq
created /app_seq0000000006
[zk: 127.0.0.1:2181(connected) 22] create -s /app_seq
created /app_seq0000000007
[zk: 127.0.0.1:2181(connected) 23] create -s /app_seq
created /app_seq0000000008
[zk: 127.0.0.1:2181(connected) 24] create -s /jiangxl_seq
created /jiangxl_seq0000000009
[zk: 127.0.0.1:2181(connected) 25] create -s /jiangxl_seq
created /jiangxl_seq0000000010
[zk: 127.0.0.1:2181(connected) 26] create -s /jiangxl_seq
created /jiangxl_seq0000000011

image-20220315172134832

3.10.创建临时类型的节点

依旧使用create命令进行创建,加上-e参数表示创建临时性的节点。

临时性的节点当会话退出后会自动删除。

[zk: 127.0.0.1:2181(connected) 28] create -e /tem1
created /tem1
[zk: 127.0.0.1:2181(connected) 29] create -e /tem2
created /tem2

image-20220315172318980

退出会话再次进入时,临时性的节点会被自动删除。

image-20220315172407302

3.11创建顺序性临时类型的节点

依旧使用create命令进行创建,加上-es参数表示创建顺序性的临时节点,退出会话自动被删除。

[zk: 127.0.0.1:2181(connected) 1] create -es /tmp_node
created /tmp_node0000000014
[zk: 127.0.0.1:2181(connected) 2] create -es /tmp_node
created /tmp_node0000000015
[zk: 127.0.0.1:2181(connected) 3] create -es /tmp_node
created /tmp_node0000000016
[zk: 127.0.0.1:2181(connected) 4] create -es /tmp_node
created /tmp_node0000000017
[zk: 127.0.0.1:2181(connected) 5] create -es /tmp_node
created /tmp_node0000000018
[zk: 127.0.0.1:2181(connected) 6] create -es /tmp_node
created /tmp_node0000000019

image-20220315172611451

会话退出后临时节点自动删除。

image-20220315172650528

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com