Zookeeper的数据结构以及常用下令利用

[复制链接]
发表于 2026-2-10 13:50:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次
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下面尚有三个子节点。

简而言之:Zookeeper的数据结构就是一大堆子节点构成的树形结构,就好比是Unix利用体系,根目次中存在子目次,子目次中包罗子文件,数据都在子文件中存储,而Zookeeper是在根节点下包罗许多子节点,但是每一个节点都可以存储自己的一些数据和当前节点的信息,答应存储的数据巨细为1M。
Zookeeper节点范例可以分为三大类:长期性节点(Persistent)、暂时性节点(Ephemeral)、次序性节点(Sequential),在生产利用中可以组合利用分为以下四种范例:


  • 长期性节点

    • 长期性节点指的是被创建后会不停存储在服务器中,直到删除利用主动整理。
    • 长期性节点可以创建子节点。

  • 暂时性节点

    • 暂时性节点指的是会被主动整理掉的节点,该种范例的节点声明周期会和客户端会话绑定在一起,当客户端竣事会话,该节点就会被删除。
    • 暂时性节点不答应创建子节点。

  • 次序性长期节点

    • 次序性长期节点与长期性节点的特性是一样的,只是额外体如今次序上,在创建节点时会在节点的名称中增长数字编号,表现次序。

  • 次序性暂时节点

    • 次序性暂时节点与暂时性节点的特性是一样的,只是额外体如今次序上,在创建节点时会在节点的名称中增长数字编号,表现次序。

2.Zookeeper服务端常用利用下令

2.1.启动Zookeeper服务

  1. # /data/zookeeper/bin/zkServer.sh start
  2. /usr/local/jdk1.8.0_211/bin/java
  3. ZooKeeper JMX enabled by default
  4. Using config: /data/zookeeper/bin/../conf/zoo.cfg
  5. Starting zookeeper ... STARTED
复制代码
2.2.关闭Zookeeper服务

  1. # /data/zookeeper/bin/zkServer.sh stop
  2. /usr/local/jdk1.8.0_211/bin/java
  3. ZooKeeper JMX enabled by default
  4. Using config: /data/zookeeper/bin/../conf/zoo.cfg
复制代码
2.3.重启zookeeper服务

  1. # /data/zookeeper/bin/zkServer.sh restart
  2. /usr/local/jdk1.8.0_211/bin/java
  3. ZooKeeper JMX enabled by default
  4. Using config: /data/zookeeper/bin/../conf/zoo.cfg
  5. /usr/local/jdk1.8.0_211/bin/java
  6. ZooKeeper JMX enabled by default
  7. Using config: /data/zookeeper/bin/../conf/zoo.cfg
  8. Stopping zookeeper ... STOPPED
  9. /usr/local/jdk1.8.0_211/bin/java
  10. ZooKeeper JMX enabled by default
  11. Using config: /data/zookeeper/bin/../conf/zoo.cfg
  12. Starting zookeeper ... STARTED
复制代码
2.4.检察zookeeper服务的状态

  1. # /data/zookeeper/bin/zkServer.sh status
  2. /usr/local/jdk1.8.0_211/bin/java
  3. ZooKeeper JMX enabled by default
  4. Using config: /data/zookeeper/bin/../conf/zoo.cfg
  5. Client port found: 2181. Client address: localhost.
  6. Mode: standalone
复制代码
3.Zookeeper客户端常用利用下令

3.1.进入Zookeeper客户端下令行

利用zkCli.sh可以进入zookeeper的客户端下令行,-server参数表现指定zookeeper的地点,不指定-server默认利用本机。
  1. # /data/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
  2. [zk: 127.0.0.1:2181(CONNECTED) 0]
复制代码

3.2.检察下令资助信息

通过help下令可以打印出客户端可以实行的下令资助信息。
  1. [zk: 127.0.0.1:2181(CONNECTED) 0] help
复制代码


  • 1

3.3.检察Zookeeper中节点信息

可以通过ls下令检察Zookeeper中各个节点的信息,下令格式:ls path
摆设完Zookeeper后默认有一个节点"zookeeper",可以通过ls下令查询该节点下尚有哪些节点。
  1. 1.查看根节点信息
  2. [zk: 127.0.0.1:2181(CONNECTED) 3] ls /
  3. [zookeeper]
  4. 2.查看/zookeeper节点信息
  5. [zk: 127.0.0.1:2181(CONNECTED) 4] ls /zookeeper
  6. [config, quota]
  7. 3.查看/zookeeper/config节点信息
  8. [zk: 127.0.0.1:2181(CONNECTED) 5] ls /zookeeper/config
  9. []
  10. 4.查看/zookeeper/quota节点信息
  11. [zk: 127.0.0.1:2181(CONNECTED) 6] ls /zookeeper/quota
  12. []
  13. #当节点下没有子节点时,会返回[]
复制代码


3.4.检察ZNode节点的详细信息

通过ls -s下令可以表现出ZNode的详细信息。
  1. [zk: 127.0.0.1:2181(CONNECTED) 18] ls -s /
  2. [zookeeper]cZxid = 0x0
  3. ctime = Thu Jan 01 08:00:00 CST 1970
  4. mZxid = 0x0
  5. mtime = Thu Jan 01 08:00:00 CST 1970
  6. pZxid = 0x10
  7. cversion = 7
  8. dataVersion = 0
  9. aclVersion = 0
  10. ephemeralOwner = 0x0
  11. dataLength = 0
  12. numChildren = 1
复制代码
3.5.创建ZNode节点

可以利用create下令创建节点,下令格式:create /节点 数据。
  1. 1.创建节点不写入任何数据
  2. [zk: 127.0.0.1:2181(CONNECTED) 7] create /app1
  3. Created /app1
  4. 2.创建节点并写入数据
  5. [zk: 127.0.0.1:2181(CONNECTED) 8] create /app2 app2data
  6. Created /app2
  7. 3.在/app1下再创建节点
  8. [zk: 127.0.0.1:2181(CONNECTED) 10] create /app1/node_1
  9. Created /app1/node_1
  10. 3.查看创建的节点
  11. [zk: 127.0.0.1:2181(CONNECTED) 9] ls /
  12. [app1, app2, zookeeper]
复制代码

3.6.检察ZNode节点中的数据

可以利用get下令检察节点中的数据,下令格式:get /节点。
  1. 1.如果节点没有数据则返回null
  2. [zk: 127.0.0.1:2181(CONNECTED) 0] get /app1
  3. null
  4. 2.如果节点有数据则返回数据内容
  5. [zk: 127.0.0.1:2181(CONNECTED) 1] get /app2
  6. app2data
复制代码

3.7.在ZNode节点中写入数据

可以利用set下令向节点中写入数据,下令格式:set /节点 数据。
  1. 1.在/app1节点中写入数据
  2. [zk: 127.0.0.1:2181(CONNECTED) 4] set /app1 napp1data
  3. 2.查看写入的数据
  4. [zk: 127.0.0.1:2181(CONNECTED) 5] get /app1
  5. napp1data
复制代码

3.8.删除Znode节点

可以利用delete下令向节点中写入数据,下令格式:delete /节点。
留意:假如要删除的节点中包罗子节点,那么会删除失败,会提示节点不为空,只有当节点中不包罗任何子节点时,才可以被删除。
假如想要删除节点下的全部节点可以利用deleteall下令,下令格式:deleteall /节点。
  1. 1.删除一个空的节点
  2. [zk: 127.0.0.1:2181(CONNECTED) 15] delete /app2
  3. 2.删除节点下的子节点
  4. [zk: 127.0.0.1:2181(CONNECTED) 16] delete /app1/node_1
  5. 3.删除节点下的所有节点包含父节点
  6. [zk: 127.0.0.1:2181(CONNECTED) 17] deleteall /app1
复制代码
3.9.创建次序性长期范例的节点

仍旧利用create下令举行创建,加上-s参数创建节点名会带有一组数字编号,形成次序。
创建次序性的节点,多次创建可以利用雷同的节点名称,zookeeper会主动为其增长一组数字编号,而且是有次序的。
次序编号在集群中通用,纵然别的名称的节点也会按照当前的编号次序往下创建。
不带任何参数创建的默认就是长期性节点,不会被删除,除非人为手动删除。
  1. [zk: 127.0.0.1:2181(CONNECTED) 19] create -s /app_seq
  2. Created /app_seq0000000004
  3. [zk: 127.0.0.1:2181(CONNECTED) 20] create -s /app_seq
  4. Created /app_seq0000000005
  5. [zk: 127.0.0.1:2181(CONNECTED) 21] create -s /app_seq
  6. Created /app_seq0000000006
  7. [zk: 127.0.0.1:2181(CONNECTED) 22] create -s /app_seq
  8. Created /app_seq0000000007
  9. [zk: 127.0.0.1:2181(CONNECTED) 23] create -s /app_seq
  10. Created /app_seq0000000008
  11. [zk: 127.0.0.1:2181(CONNECTED) 24] create -s /jiangxl_seq
  12. Created /jiangxl_seq0000000009
  13. [zk: 127.0.0.1:2181(CONNECTED) 25] create -s /jiangxl_seq
  14. Created /jiangxl_seq0000000010
  15. [zk: 127.0.0.1:2181(CONNECTED) 26] create -s /jiangxl_seq
  16. Created /jiangxl_seq0000000011
复制代码


3.10.创建暂时范例的节点

仍旧利用create下令举行创建,加上-e参数表现创建暂时性的节点。
暂时性的节点当会话退出后会主动删除。
  1. [zk: 127.0.0.1:2181(CONNECTED) 28] create -e /tem1
  2. Created /tem1
  3. [zk: 127.0.0.1:2181(CONNECTED) 29] create -e /tem2
  4. Created /tem2
复制代码

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

3.11创建次序性暂时范例的节点

仍旧利用create下令举行创建,加上-es参数表现创建次序性的暂时节点,退出会话主动被删除。
  1. [zk: 127.0.0.1:2181(CONNECTED) 1] create -es /tmp_node
  2. Created /tmp_node0000000014
  3. [zk: 127.0.0.1:2181(CONNECTED) 2] create -es /tmp_node
  4. Created /tmp_node0000000015
  5. [zk: 127.0.0.1:2181(CONNECTED) 3] create -es /tmp_node
  6. Created /tmp_node0000000016
  7. [zk: 127.0.0.1:2181(CONNECTED) 4] create -es /tmp_node
  8. Created /tmp_node0000000017
  9. [zk: 127.0.0.1:2181(CONNECTED) 5] create -es /tmp_node
  10. Created /tmp_node0000000018
  11. [zk: 127.0.0.1:2181(CONNECTED) 6] create -es /tmp_node
  12. Created /tmp_node0000000019
复制代码

会话退出后暂时节点主动删除。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表