• Zookeeper集群操作


    命令行语法

    命令基本语法

    功能描述

    help

    显示所有操作命令

    ls path [watch]

    使用 ls 命令来查看当前znode中所包含的内容

    ls -s path [watch]

    查看当前节点信息

    create

    普通创建

    -s 含有序列

    -e 临时(重启或者超时消失)

    get path [watch]

    获得节点的值

    set

    设置节点的具体值

    stat

    查看节点状态

    delete

    删除节点

    rmr(已过时)

    递归删除节点

    1)启动客户端

    [atguigu@hadoop102 zookeeper-3.5.7]$ zkCli.sh -server

    hadoop102:2181

    2)显示所有操作命令

    [zk: hadoop102:2181(CONNECTED) 1] help

     

    znode节点信息

    1)查看当前znode中所包含的内容

    [zk: hadoop102:2181(CONNECTED) 0] ls /

    [zookeeper] 

     

    2)查看当前节点详细数据

    [zk: hadoop102:2181(CONNECTED) 5] 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 = 0x0

    cversion = -1

    dataVersion = 0

    aclVersion = 0

    ephemeralOwner = 0x0

    dataLength = 0

    numChildren = 1

    (1)czxid:创建节点的事务 zxid。每次修改 ZooKeeper 状态都会产生一个 ZooKeeper 事务ID。事务 ID 是 ZooKeeper 中所 有修改总的次序。每次修改都有唯一的 zxid,如果 zxid1 小于 zxid2,那么 zxid1 在 zxid2 之前发生。

    (2)ctime:znode 被创建的毫秒数(从 1970 年开始)

    (3)mzxid:znode 最后更新的事务 zxid

    (4)mtime:znode 最后修改的毫秒数(从 1970 年开始)

    (5)pZxid:znode 最后更新的子节点 zxid

    (6)cversion:znode 子节点变化号,znode 子节点修改次数

    (7)dataversion:znode 数据变化号

    (8)aclVersion:znode 访问控制列表的变化号

    (9)ephemeralOwner:如果是临时节点,这个是 znode 拥有者的 sessionid。如果不是临时节点(即持久节点)则是 0。

    (10)dataLength:znode 的数据长度

    (11)numChildren:znode 子节点数量

    节点类型(面试重点)

            znode是zookeeper的 核心,所有的数据都存储在znode上。znode分为持久类型节点和短暂(临时)节点。它们又可以分为带序号的和不带序号的,通过序号可以推断事件的顺序。

            创建持久节点和短暂节点可以通过 create 命令的参数 "-e" 决定:创建持久节点不需要带参数-e,创建短暂节点需要带参数-e。

            通过 ls -s 观察节点是否是一个持久化节点,需要看ephemeralOwner存储的数据信息,如果是0则为持久节点。如下:test1试试短暂节点,故ephemeralOwner存储了一个大于0的值。  

    创建不带序号的永久节点

    [zk: localhost:2181(CONNECTED) 3] create /test "diaochan"

    Created /test

    [zk: localhost:2181(CONNECTED) 4] create /test/youge "liubei"

    Created /test/youge

    获得节点的值

    [zk: localhost:2181(CONNECTED) 5] get -s /test

    diaochan

    cZxid = 0x100000003

    ctime = Wed Aug 29 00:03:23 CST 2018

    mZxid = 0x100000003

    mtime = Wed Aug 29 00:03:23 CST 2018

    pZxid = 0x100000004

    cversion = 1

    dataVersion = 0

    aclVersion = 0

    ephemeralOwner = 0x0

    dataLength = 7

    numChildren = 1

    [zk: localhost:2181(CONNECTED) 6] get -s /test/youge

    liubei

    cZxid = 0x100000004

    ctime = Wed Aug 29 00:04:35 CST 2018

    mZxid = 0x100000004

    mtime = Wed Aug 29 00:04:35 CST 2018

    pZxid = 0x100000004

    cversion = 0

    dataVersion = 0

    aclVersion = 0

    ephemeralOwner = 0x0

    dataLength = 6

    numChildren = 0

    创建带序号的永久节点

    (1)先创建一个普通的根节点/test/huiyin

    [zk:localhost:2181(CONNECTED) 1] create /test/huiyin "caocao"

    Created /test/huiyin

    (2)创建带序号的节点

    [zk:localhost:2181(CONNECTED) 2] create -s /test/huiyin/ui "ui"

    Created /test/huiyin/ui0000000000

    [zk:localhost:2181(CONNECTED) 3] create -s /test/huiyin/ui "ui"

    Created /test/huiyin/ui0000000001

    [zk:localhost:2181(CONNECTED) 4] create -s /test/huiyin/design " design"

    Created /test/huiyin/design0000000002

    如果原来没有序号节点,序号从 0 开始依次递增。如果原节点下已有 2 个节点,则再排序时从2 开始,以此类推。

    创建短暂节点

    (1)创建短暂的不带序号的节点

    [zk: localhost:2181(CONNECTED) 7] create -e /sanguo/wuguo "zhouyu"

    Created /sanguo/wuguo

    (2)创建短暂的带序号的节点

    [zk: localhost:2181(CONNECTED) 2] create -e -s /sanguo/wuguo "zhouyu"

    Created /sanguo/wuguo0000000001

    (3)在当前客户端是能查看到的

    [zk: localhost:2181(CONNECTED) 3] ls /sanguo

    [wuguo, wuguo0000000001, shuguo]

    (4)退出当前客户端然后再重启客户端

    [zk: localhost:2181(CONNECTED) 12] quit

    [root@node1 zookeeper-3.5.7]$ bin/zkCli.sh

    (5)再次查看根目录下短暂节点已经删除

    [zk: localhost:2181(CONNECTED) 0] ls /sanguo

    [shuguo]

    修改节点数据值

    [zk: localhost:2181(CONNECTED) 6] set /sanguo/weiguo "simayi"

    监听器原理(面试重点)

            客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、节点删除、子目录节点增加删除)时,ZooKeeper 会通知客户端。监听机制保证ZooKeeper 保存的任何的数据的任何改变都能快速的响应到监听了该节点的应用程序。

    节点的值变化监听

    1)在node1 主机上注册监听/test节点数据变化

    [zk: localhost:2181(CONNECTED) 26] get -w /test

    2)在node2主机上修改/test 节点的数据

    [zk: localhost:2181(CONNECTED) 1] set /test "watch"

    3)观察node1主机收到数据变化的监听

    WATCHER::

    WatchedEvent state:SyncConnected

    type:NodeDataChanged

    path:/test

    注意】在node2再多次修改/test的值,node上不会再收到监听。因为注册一次只能监听一次。想再次监听,需要再次注册。

    节点的子节点变化监听(路径变化)

    1)在 node1主机上注册监听/uek 节点的子节点变化

    [zk: localhost:2181(CONNECTED) 1] ls -w /test

    2)在node2 主机/sanguo 节点上删除子节点

    [zk: localhost:2181(CONNECTED) 2] delete /test/lasting

    3)观察node1 主机收到子节点变化的监听

    WATCHER::

    WatchedEvent state:SyncConnected type:NodeChildrenChanged

    path:/test

    注意】节点的路径变化,也是注册一次,生效一次。想多次生效,就需要多次注册。

    节点删除与查看

    删除节点

    [zk: localhost:2181(CONNECTED) 4] delete /test/test_delete

    递归删除节点

    [zk: localhost:2181(CONNECTED) 15] deleteall /test

    查看节点状态

    [zk: localhost:2181(CONNECTED) 17] stat /test20000000006

    注意】stat 命令和 ls -s作用一样,都是查看当前节点的结构体。

  • 相关阅读:
    jquery学习11.3.4
    寒假帝释天
    我的2010年
    终于放假了!!!
    2010.1.21
    寒假第五天
    关于三层架构
    js正则表达式限制文本框只能输入数字,小数点,英文字母
    windows的命令行方式下TAB键自动补全设置方法
    Oracle的一些常用命令
  • 原文地址:https://www.cnblogs.com/zyd-994264926326/p/15163601.html
Copyright © 2020-2023  润新知