• Zookeeper - 节点


    目录

    零、前置操作

    1.群起服务端

    2.启动客户端

    一、命令行语法

    二、节点信息 

    三、节点类型

    四、节点操作

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

    创建节点

    获取节点的信息

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

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

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

    5.修改节点值

    6.删除和查看节点

    删除

    查看节点


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

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


    零、前置操作

    1.群起服务端

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

     zk.sh start

    确认一下:

    zk.sh status
    


    2.启动客户端

     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 /

    详细解释如下: 

    1. #创建节点的事务zxid,每次修改 ZooKeeper 状态都会产生一个 ZooKeeper 事务 ID。事务 ID 是
    2. #ZooKeeper 中所有修改总的次序。每次修改都有唯一的 zxid,如果 zxid1 小于 zxid2,那么
    3. #zxid1 在 zxid2 之前发生
    4. [zookeeper]cZxid = 0x0
    5. #znode 被创建的毫秒数(从 1970 年开始)
    6. ctime = Thu Jan 01 08:00:00 CST 1970
    7. #znode 最后更新的事务 zxid
    8. mZxid = 0x0
    9. #znode 最后修改的毫秒数(从 1970 年开始)
    10. mtime = Thu Jan 01 08:00:00 CST 1970
    11. #znode 最后更新的子节点 zxid
    12. pZxid = 0x0
    13. #znode 子节点变化号,znode 子节点修改次数
    14. cversion = -1
    15. #znode 数据变化号
    16. dataVersion = 0
    17. #znode 访问控制列表的变化号
    18. aclVersion = 0
    19. #如果是临时节点,这个是 znode 拥有者的 session id。如果不是
    20. 临时节点则是 0
    21. ephemeralOwner = 0x0
    22. #znode 的数据长度
    23. dataLength = 0
    24. #znode 子节点数量
    25. numChildren = 1

    三、节点类型

    类型可分为两类 '持久' '短暂' 。两者之下还有 '有序号' '无序号' 之分。持久有序号、持久无序号、短暂有序号、短暂无序号。这里提到的编号是一个顺序标识,znode名称 后会附加一个值,顺序号是一个单调递增的计数 器,由父节点维护。

    持久(Persistent) :客户端和服务器端断开连接后,创建的节点不删除

    ├── 持久无序号:客户端与Zookeeper断开连接后,该节点依旧存在
    └── 持久有序号:客户端与Zookeeper断开连接后,该节点依旧存 在,只是Zookeeper给该节点名称进行顺序编号

    短暂(Ephemeral):客户端和服务器端断开连接后,创建的节点自己删除 

    ├── 短暂无序号:客户端与Zookeeper断开连接后,该节点被删除
    └── 短暂有序号:客户端与 Zookeeper 断开连接后 , 该 节 点 被 删 除 , 只 是 Zookeeper给该节点名称进行顺序编号。


    四、节点操作

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

    创建节点

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

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

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

    ls /

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

    create /rank1/rank2 "1.2"
    
    ls /rank1
    

    获取节点的信息

    get -s /rank1


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

    创建时多加一个 -s :

    create -s /rank1/rank3 "1.3"
    

    查看一下:

    ls /rank1
    

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

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

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

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

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


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

    create -e /rank1/rank4 "1.4"
    


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

    create -es /rank1/rank5 "1.5"
    

    看一眼:

    然后退出重进查看:

    quit
    ./zkCli.sh -server hadoop102:2181
    

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


    5.修改节点值

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

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

    修改成功。


    6.删除和查看节点

    删除

    delete /rank1/rank30000000001
    

    然后咱们删除rank1看看:

    delete /rank1
    

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

    deleteall /rank1

    查看节点

    stat /rank1
    

  • 相关阅读:
    【python】—— python的基本介绍并附安装教程
    『忘了再学』Shell基础 — 12、用户自定义变量
    Element-Table处理属性列表问题
    【机器学习】039_合理初始化
    Mysql索引
    Spring项目结合Maven【实现读取不同的资源环境】
    Mybatis日志系统
    如何做好一道数学题
    HTML&CSS
    LeetCode.2940.找到Alice和Bob可以相遇的建筑
  • 原文地址:https://blog.csdn.net/Trollz/article/details/126704920