zoukankan      html  css  js  c++  java
  • zookeeper基本操作

    1.客户端连接

    [tx@test1 bin]$ jps
    23433 Jps
    23370 QuorumPeerMain    #zookeeper进程
    
    [tx@test1 bin]$ ./zkCli.sh -server test1:2182
    Connecting to test1:2182
    2018-01-24 23:42:09,024 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.5-1392090, built on 
    
    [zk: test1:2182(CONNECTED) 0] ls /
    [zookeeper]

    2.help来查看客户端的操作 

    [zk: test1:2182(CONNECTED) 1] help
    ZooKeeper -server host:port cmd args
        connect host:port
        get path [watch]
        ls path [watch]
        set path data [version]
        rmr path
        delquota [-n|-b] path
        quit 
        printwatches on|off
        create [-s] [-e] path data acl
        stat path [watch]
        close 
        ls2 path [watch]
        history 
        listquota path
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        setquota -n|-b val path

    3.创建节点

    使用create命令,可以创建一个Zookeeper节点, 如

    create [-s] [-e] path data acl

    其中,-s或-e分别指定节点特性,顺序或临时节点,若不指定,则表示持久节点;acl用来进行权限控制。

    ① 创建顺序节点

    使用 create -s /zk-test 123 命令创建zk-test顺序节点,节点的内容为123

    [zk: test1:2182(CONNECTED) 3] ls /
    [zk-test0000000000, zookeeper]

    可以看到创建的zk-test节点后面添加了一串数字以示区别。

    ② 创建临时节点

    使用 create -e /zk-temp 123 命令创建zk-temp临时节点

    临时节点在客户端会话结束后,就会自动删除,下面使用quit命令退出客户端

    再次使用客户端连接服务端,并使用ls / 命令查看根目录下的节点

    可以看到根目录下已经不存在zk-temp临时节点了。

    [zk: test1:2182(CONNECTED) 4] create -e /zk-temp 123
    Created /zk-temp
    [zk: test1:2182(CONNECTED) 5] ls /
    [zk-temp, zk-test0000000000, zookeeper]

      [zk: test1:2182(CONNECTED) 0] ls /
      [zk-test0000000000, zookeeper]

    ③ 创建永久节点

    使用 create /zk-permanent 123 命令创建zk-permanent永久节点 

    [zk: test1:2182(CONNECTED) 1] create /zk-permanent 123
    Created /zk-permanent
    [zk: test1:2182(CONNECTED) 2] ls /
    [zk-test0000000000, zk-permanent, zookeeper]

    可以看到永久节点不同于顺序节点,不会自动在后面添加一串数字。

      4. 读取节点

        与读取相关的命令有ls 命令和get 命令,ls命令可以列出Zookeeper指定节点下的所有子节点,只能查看指定节点下的第一级的所有子节点;get命令可以获取Zookeeper指定节点的数据内容和属性信息。其用法分别如下

      ls path [watch]

      get path [watch]

      ls2 path [watch]

      若获取根节点下面的所有子节点,使用ls / 命令即可 

    [zk: test1:2182(CONNECTED) 2] ls /
    [zk-test0000000000, zk-permanent, zookeeper]

    若想获取根节点数据内容和属性信息,使用get / 命令即可 

    [zk: test1:2182(CONNECTED) 3] get /
    
    cZxid = 0x0
    ctime = Wed Dec 31 16:00:00 PST 1969
    mZxid = 0x0
    mtime = Wed Dec 31 16:00:00 PST 1969
    pZxid = 0x400000008
    cversion = 3
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 0
    numChildren = 3

    也可以使用ls2 / 命令查看

    [zk: test1:2182(CONNECTED) 4] ls2 /
    [zk-test0000000000, zk-permanent, zookeeper]
    cZxid = 0x0
    ctime = Wed Dec 31 16:00:00 PST 1969
    mZxid = 0x0
    mtime = Wed Dec 31 16:00:00 PST 1969
    pZxid = 0x400000008
    cversion = 3
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 0
    numChildren = 3

    可以看到其子节点数量为3

    若想获取/zk-permanent的数据内容和属性,可使用如下命令:get /zk-permanent 

    [zk: test1:2182(CONNECTED) 5] get /zk-permanent
    123
    cZxid = 0x400000008
    ctime = Tue Jan 30 22:21:47 PST 2018
    mZxid = 0x400000008
    mtime = Tue Jan 30 22:21:47 PST 2018
    pZxid = 0x400000008
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 3
    numChildren = 0

    可以看到其数据内容为123,还有其他的属性,之后会详细介绍。

    5. 更新节点

    使用set命令,可以更新指定节点的数据内容,用法如下

    set path data [version]

    其中,data就是要更新的新内容,version表示数据版本,如将/zk-permanent节点的数据更新为456,可以使用如下命令:set /zk-permanent 456 

    [zk: test1:2182(CONNECTED) 6] set /zk-permanent 456
    cZxid = 0x400000008
    ctime = Tue Jan 30 22:21:47 PST 2018
    mZxid = 0x400000009
    mtime = Tue Jan 30 22:27:05 PST 2018
    pZxid = 0x400000008
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 3
    numChildren = 0

    现在dataVersion已经变为1了,表示进行了更新。

    5 删除节点

    使用delete命令可以删除Zookeeper上的指定节点,用法如下

    delete path [version]

    其中version也是表示数据版本,使用delete /zk-permanent 命令即可删除/zk-permanent节点 

    [zk: test1:2182(CONNECTED) 8] delete /zk-permanent 
    [zk: test1:2182(CONNECTED) 9] ls /
    [zk-test0000000000, zookeeper]

    可以看到,已经成功删除/zk-permanent节点。值得注意的是,若删除节点存在子节点,那么无法删除该节点

     rmr path [version]  

    删除有子节点的节点

    [zk: test1:2182(CONNECTED) 10] create /zk-permanent 123
    Created /zk-permanent
    [zk: test1:2182(CONNECTED) 11] create /zk-permanent/test 123
    Created /zk-permanent/test
    [zk: test1:2182(CONNECTED) 13] delete /zk-permanent         
    Node not empty: /zk-permanent
    [zk: test1:2182(CONNECTED) 14] rmr /zk-permanent
    [zk: test1:2182(CONNECTED) 15] ls /
    [zk-test0000000000, zookeeper]
  • 相关阅读:
    常量的三种定义方式和static在c语言中的三种修饰
    字符串的定义方式;输出和计算长度时的细节
    指针小白:修改*p与p会对相应的地址的变量产生什么影响?各个变量指针的长度为多少?
    习题 :任意输入十个数按大小排序;构造简单数学运算模块(形参和实参)
    for循环简单实例(打印乘法表,打印菱形)
    几个简单if程序的细节比较与加法程序设计
    冒泡排序法,两个数组内容的互换,两个变量之间的交换
    scanf加不加 ?
    jqplot导入包小结
    使用ajax与jqplot的小体会
  • 原文地址:https://www.cnblogs.com/cornerxin/p/8351612.html
Copyright © 2011-2022 走看看