zookeeper客户端常用命令

一。连接zookeeper

  1. 本地节点连接

[root@host1 bin]# ./zkCli.sh
[zk: localhost:2181(CONNECTED) 0]

  2. 指定节点连接

[root@host1 bin]# ./zkCli.sh -server host2:2181
[zk: host2:2181(CONNECTED) 0]

  3. 客户端里连接

[zk: host2:2181(CONNECTED) 1] connect host3:2181
[zk: host3:2181(CONNECTED) 2]

  4. help命令

[zk: host3:2181(CONNECTED) 2] help
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [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]
    create [-s] [-e] path data acl      # create [有序的] [短暂的] 路径 数据 权限
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port
[zk: host3:2181(CONNECTED) 3]

二。操作znode(树状结构,每个znode节点可以包含子节点和数据),ephemeral(短暂)节点不能有子节点

  1. 查看znode节点。

[zk: host3:2181(CONNECTED) 9] ls /      #  / 为根节点
[zookeeper]
[zk: host3:2181(CONNECTED) 10]

  2. 创建节点。

persistent(持久)节点(默认的),客户端断开不删除

[zk: host3:2181(CONNECTED) 16] create /app1 123qwe
Created /app1

ephemeral(短暂)节点,客户端断开就删除

[zk: host3:2181(CONNECTED) 19] create -e /app2 123qwefdsssa
Created /app2
[zk: host3:2181(CONNECTED) 20]

sequentital(有序的)节点,可以搭配短暂和持久节点一起使用,在此父节点下序号会自曾(与其他父节点的有序节点不影响)

[zk: host3:2181(CONNECTED) 30] create -s /app1/a 123qwe
Created /app1/a0000000001
[zk: host3:2181(CONNECTED) 31] create -s /app1/b 123qwewer
Created /app1/b0000000002
[zk: host3:2181(CONNECTED) 32] create -s /app1/a 123qweweroeis
Created /app1/a0000000003
[zk: host3:2181(CONNECTED) 33]

  3 查看节点数据。

[zk: host3:2181(CONNECTED) 18] get /app1
123qwe                        # 节点保存的数据
cZxid = 0x100000006                 # 创建的事务id(内部的事务控制编号)
ctime = Sun Sep 02 05:46:06 CST 2018      # 创建时间
mZxid = 0x100000006                # 修改的事务id(内部的事务控制编号),没修改过和创建的事务id相同
mtime = Sun Sep 02 05:46:06 CST 2018      # 修改的时间
pZxid = 0x100000006                # 数据持久化的事务控制id
cversion = 0                    # 创建的版本号
dataVersion = 0                   # 数据的版本号
aclVersion = 0                    # 权限的版本号
ephemeralOwner = 0x0                # 短暂节点特有的,Session值
dataLength = 6                   # 数据长度
numChildren = 0                   # 子节点数
[zk: host3:2181(CONNECTED) 19]

  4. 设置节点数据

[zk: host3:2181(CONNECTED) 37] set /app1 0000
cZxid = 0x100000006
ctime = Sun Sep 02 05:46:06 CST 2018
mZxid = 0x10000000e
mtime = Sun Sep 02 06:28:57 CST 2018
pZxid = 0x10000000d
cversion = 4
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 4
[zk: host3:2181(CONNECTED) 38] get /app1

  5. 删除节点

只删除没有子节点的节点

[zk: localhost:2181(CONNECTED) 3] delete /app1/a
[zk: localhost:2181(CONNECTED) 4]

递归删除,可删除有子节点的节点

[zk: localhost:2181(CONNECTED) 7] rmr /app1
[zk: localhost:2181(CONNECTED) 8]

三。数据和节点的监督

  1. 监督数据变化

[zk: localhost:2181(CONNECTED) 2] get /app1 watch
0000
cZxid = 0x100000006
ctime = Sun Sep 02 05:46:06 CST 2018
mZxid = 0x10000000e
mtime = Sun Sep 02 06:28:57 CST 2018
pZxid = 0x10000000f
cversion = 5
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 3
[zk: localhost:2181(CONNECTED) 3] 

在其他地方改变 /app1 节点的数据,能够监听到数据发生改变,只监听一次

[zk: localhost:2181(CONNECTED) 3] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/app1

[zk: localhost:2181(CONNECTED) 3]

  2. 监督节点变化

[zk: localhost:2181(CONNECTED) 3] ls /app1 watch
[b0000000002, a0000000001, a0000000003]
[zk: localhost:2181(CONNECTED) 4]

在其他地方 改变 /app1 子节点,能够监听到。只能监听一次,且不包括下一级的节点变化。

[zk: localhost:2181(CONNECTED) 4] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/app1

[zk: localhost:2181(CONNECTED) 4]

 

posted @ 2018-09-03 12:41  Python++  阅读(238)  评论(0编辑  收藏  举报