暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

zookeeper命令行操作

OpenInfo 2020-03-12
345

前言

在3台机器分别部署了zookeeper-3.4.5,本文操作是在此基础上进行的。部署详情参见上一篇文章 ZooKeeper部署.


客户端登录与帮助查看

    # 由于是集群模式,所以可以在3台机器的其中任意一台进行登录,操作结果和数据也会同步到其他机器 
    [root@docker01 bin]# pwd
    /app/zookeeper-3.4.5/bin
    [root@docker01 bin]# ll
    total 64
    -rwxr-xr-x 1 501 games 238 Oct 1 2012 README.txt
    -rwxr-xr-x 1 501 games 1909 Oct 1 2012 zkCleanup.sh
    -rwxr-xr-x 1 501 games 1049 Oct 1 2012 zkCli.cmd
    -rwxr-xr-x 1 501 games 1512 Oct 1 2012 zkCli.sh
    -rwxr-xr-x 1 501 games 1333 Oct 1 2012 zkEnv.cmd
    -rwxr-xr-x 1 501 games 2599 Oct 1 2012 zkEnv.sh
    -rwxr-xr-x 1 501 games 1084 Oct 1 2012 zkServer.cmd
    -rwxr-xr-x 1 501 games 5467 Oct 1 2012 zkServer.sh
    -rw-r--r-- 1 root root 25108 May 26 14:51 zookeeper.out
    [root@docker01 bin]# ./zkCli.sh # 客户端登录
    ……………… # 一些摘要信息
    [zk: localhost:2181(CONNECTED) 0]
    [zk: localhost:2181(CONNECTED) 0] help # 客户端帮助信息
    ZooKeeper -server host:port cmd args
    stat path [watch] # 查看路径【节点】属性信息 [watch] 观察模式,有改变则会被通知,watch一次有效一次
    set path data [version] # 设置/修改节点信息
    ls path [watch] # 查看路径【节点】 [watch] 观察模式,有改变则会被通知,watch一次有效一次
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history
    redo cmdno
    printwatches on|off
    delete path [version] # 删除节点
    sync path
    listquota path
    rmr path # 递归删除
    get path [watch] # 更具路径【节点】得到信息 [watch] 观察模式,有改变则会被通知,watch一次有效一次
    create [-s] [-e] path data acl # 创建节点和数据 -s 序列化【避免重复】 -e 临时数据【常用】
    addauth scheme auth
    quit # 退出客户端
    getAcl path
    close
    connect host:port # 可以连接到其他客户端,前提在一个集群内
    [zk: localhost:2181(CONNECTED) 1]


    数据的属性说明

    属性描述
    czxid节点被创建的Zxid值
    mzxid节点被修改的Zxid值
    ctime节点被创建的时间
    mtime节点最后一次被修改的时间
    versoin节点被修改的版本号
    cversion节点的所拥有子节点被修改的版本号
    aversion节点的ACL被修改的版本号
    emphemeralOwner如果此节点为临时节点,那么它的值为这个节点拥有者的会话ID;否则,它的值为0
    dataLength节点数据域的长度
    numChildren节点拥有的子节点个数


    常用操作

    切换到其他客户端

      [zk: localhost:2181(CONNECTED) 1] connect 172.16.1.13:2181  
      ……………… # 一些摘要信息
      WATCHER::


      WatchedEvent state:SyncConnected type:None path:null


      [zk: 172.16.1.13:2181(CONNECTED) 2]


      节点的增删改查

      增加节点

        [zk: 172.16.1.13:2181(CONNECTED) 2] ls 
        [zookeeper]
        [zk: 172.16.1.13:2181(CONNECTED) 3] create zhang01/yang01 test0001 # 保证父节点存在
        Node does not exist: zhang01/yang01
        [zk: 172.16.1.13:2181(CONNECTED) 4]
        [zk: 172.16.1.13:2181(CONNECTED) 4] create zhang01 test01
        Created zhang01
        [zk: 172.16.1.13:2181(CONNECTED) 5] ls
        [zookeeper, zhang01]


        查询节点

          [zk: 172.16.1.13:2181(CONNECTED) 7] ls      
          [zookeeper, zhang01]
          [zk: 172.16.1.13:2181(CONNECTED) 8] get zhang01
          test01 # 内容
          cZxid = 0x100000007 # 创建数据时的事物编号
          ctime = Sat May 26 15:11:40 CST 2018 # 创建时间
          mZxid = 0x100000007 # 修改数据时的事物编号
          mtime = Sat May 26 15:11:40 CST 2018 # 修改时间
          pZxid = 0x100000007 # 持久化事物编号
          cversion = 0 # 创建版本号
          dataVersion = 0 # 数据版本
          aclVersion = 0 # 权限版本
          ephemeralOwner = 0x0 # 持久接待
          dataLength = 6 # 数据长度
          numChildren = 0 # 子节点数


          修改节点

            [zk: 172.16.1.13:2181(CONNECTED) 9] ls 
            [zookeeper, zhang01]
            [zk: 172.16.1.13:2181(CONNECTED) 10] set zhang01 1111111 # 修改节点信息
            cZxid = 0x100000007
            ctime = Sat May 26 15:11:40 CST 2018
            mZxid = 0x100000009
            mtime = Sat May 26 15:15:38 CST 2018
            pZxid = 0x100000007
            cversion = 0
            dataVersion = 1
            aclVersion = 0
            ephemeralOwner = 0x0
            dataLength = 7
            numChildren = 0
            [zk: 172.16.1.13:2181(CONNECTED) 11] get zhang01
            1111111
            cZxid = 0x100000007
            ctime = Sat May 26 15:11:40 CST 2018
            mZxid = 0x100000009
            mtime = Sat May 26 15:15:38 CST 2018
            pZxid = 0x100000007
            cversion = 0
            dataVersion = 1
            aclVersion = 0
            ephemeralOwner = 0x0
            dataLength = 7
            numChildren = 0


            节点常规删除

              [zk: localhost:2181(CONNECTED) 1] ls zhang01
              [test04, test03, test02, test01]
              [zk: localhost:2181(CONNECTED) 3] ls zhang01/test04 # 没有子节点
              []
              [zk: localhost:2181(CONNECTED) 4] get zhang01/test04
              date_test04
              cZxid = 0x10000000d
              ………………
              [zk: localhost:2181(CONNECTED) 5] delete zhang01/test04 # 删除子节点
              [zk: localhost:2181(CONNECTED) 6] ls zhang01 # 经查看删除成功
              [test03, test02, test01]
              [zk: localhost:2181(CONNECTED) 7] delete zhang01 # 如果有子节点那么不能删除
              Node not empty: zhang01


              递归删除节点

                [zk: localhost:2181(CONNECTED) 8] ls zhang01
                [test03, test02, test01]
                [zk: localhost:2181(CONNECTED) 9] rmr zhang01 # 递归删除
                [zk: localhost:2181(CONNECTED) 10] ls zhang01 # 删除成功
                Node does not exist: zhang01
                [zk: localhost:2181(CONNECTED) 11] ls
                [zookeeper]


                持久节点和临时节点

                第一台客户端

                  [zk: localhost:2181(CONNECTED) 14] ls             
                  [zookeeper]
                  [zk: localhost:2181(CONNECTED) 15] create zhang01 yang01 # 默认持久节点
                  Created zhang01
                  [zk: localhost:2181(CONNECTED) 16] create -e zhang02 yang02 # 创建临时节点
                  Created zhang02
                  [zk: localhost:2181(CONNECTED) 17] ls
                  [zookeeper, zhang02, zhang01]
                  [zk: localhost:2181(CONNECTED) 18] get zhang01
                  yang01
                  cZxid = 0x100000018
                  ctime = Sat May 26 15:33:47 CST 2018
                  mZxid = 0x100000018
                  mtime = Sat May 26 15:33:47 CST 2018
                  pZxid = 0x100000018
                  cversion = 0
                  dataVersion = 0
                  aclVersion = 0
                  ephemeralOwner = 0x0 # 代表持久节点
                  dataLength = 6
                  numChildren = 0
                  [zk: localhost:2181(CONNECTED) 19] get zhang02
                  yang02
                  cZxid = 0x100000019
                  ctime = Sat May 26 15:33:55 CST 2018
                  mZxid = 0x100000019
                  mtime = Sat May 26 15:33:55 CST 2018
                  pZxid = 0x100000019
                  cversion = 0
                  dataVersion = 0
                  aclVersion = 0
                  ephemeralOwner = 0x1639b3087ac0002 # 代表临时节点
                  dataLength = 6
                  numChildren = 0
                  [zk: localhost:2181(CONNECTED) 20] quit # 退出当前客户端【那么当前这个客户端创建的临时节点会被自动删除】


                  第二台客户端

                    # 之前可以正常查到,但是当上面的客户端退出后,节点/zhang02 被自动删除了  
                    [zk: localhost:2181(CONNECTED) 4] ls /
                    [zookeeper, zhang01]


                    节点序列化

                      [zk: localhost:2181(CONNECTED) 14] ls /
                      [zookeeper, zhang01]
                      [zk: localhost:2181(CONNECTED) 15] ls /zhang01
                      []
                      [zk: localhost:2181(CONNECTED) 16]
                      [zk: localhost:2181(CONNECTED) 16] create -s /zhang01/test01 test01
                      Created /zhang01/test010000000002
                      [zk: localhost:2181(CONNECTED) 17] create -s -e /zhang01/test02 test02
                      Created /zhang01/test020000000003
                      [zk: localhost:2181(CONNECTED) 18]
                      [zk: localhost:2181(CONNECTED) 18] ls /zhang01
                      [test020000000003, test010000000002]


                      watch模式节点操作

                      watch监听有不同的类型,有监听状态的stat ,内容的get,目录结构的ls。


                      watch节点属性

                      监听到自身属性改变则被通知

                        # 第一台客户端监听
                        [zk: localhost:2181(CONNECTED) 4] ls /
                        [zookeeper, zhang01]
                        [zk: localhost:2181(CONNECTED) 5] stat /zhang01 watch
                        cZxid = 0x100000018
                        ctime = Sat May 26 15:33:47 CST 2018
                        mZxid = 0x10000001e
                        mtime = Sat May 26 15:44:20 CST 2018
                        pZxid = 0x100000018
                        cversion = 0
                        dataVersion = 2
                        aclVersion = 0
                        ephemeralOwner = 0x0
                        dataLength = 8
                        numChildren = 0


                        # 第二台客户端操作
                        [zk: localhost:2181(CONNECTED) 10] set /zhang01 yyyywwwww # 修改节点信息,节点属性被改变
                        ……………………


                        # 第一台客户端自动响应
                        [zk: localhost:2181(CONNECTED) 6]
                        WATCHER::


                        WatchedEvent state:SyncConnected type:NodeDataChanged path:/zhang01


                        watch路径

                          # 第一台客户端
                          [zk: localhost:2181(CONNECTED) 6] ls /zhang01 watch
                          []


                          # 第二台客户端操作
                          [zk: localhost:2181(CONNECTED) 11] create -e /zhang01/test01 test01
                          Created /zhang01/test01


                          # 第一台客户端自动响应
                          [zk: localhost:2181(CONNECTED) 7]
                          WATCHER::


                          WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/zhang01


                          [zk: localhost:2181(CONNECTED) 7]


                          watch节点内容

                          节点自身内容改变和节点被删除都会被通知


                          自身属性改变

                            # 第一台客户端
                            [zk: localhost:2181(CONNECTED) 7] ls /
                            [zookeeper, zhang01]
                            [zk: localhost:2181(CONNECTED) 8] ls /zhang01
                            [test01]
                            [zk: localhost:2181(CONNECTED) 9]
                            [zk: localhost:2181(CONNECTED) 9] get /zhang01/test01 watch
                            test01
                            cZxid = 0x100000020
                            ………………


                            # 第二台客户端操作
                            [zk: localhost:2181(CONNECTED) 12] set /zhang01/test01 kkkk
                            cZxid = 0x100000020
                            ctime = Sat May 26 15:49:30 CST 2018
                            ………………


                            # 第一台客户端自动响应
                            [zk: localhost:2181(CONNECTED) 10]
                            WATCHER::


                            WatchedEvent state:SyncConnected type:NodeDataChanged path:/zhang01/test01


                            [zk: localhost:2181(CONNECTED) 10]


                            节点删除

                              # 第一台客户端
                              [zk: localhost:2181(CONNECTED) 10] get /zhang01/test01 watch
                              kkkk
                              cZxid = 0x100000020
                              ………………


                              # 第二台客户端操作
                              [zk: localhost:2181(CONNECTED) 14] delete /zhang01/test01


                              # 第一台客户端自动响应
                              [zk: localhost:2181(CONNECTED) 11]
                              WATCHER::


                              WatchedEvent state:SyncConnected type:NodeDeleted path:/zhang01/test01


                              [zk: localhost:2181(CONNECTED) 11]



                              另请参见:

                              ZooKeeper入门概述

                              ZooKeeper部署



                              ———END———

                              如果觉得不错就关注下呗 (-^O^-) !



                              文章转载自OpenInfo,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                              评论