zookeeper的shell命令使用

介绍zookeeper的shell命令

1.进入客户端命令行

--(1) 连接本地服务
[hadoop@hadoop01 ~]$ zkCli.sh
[zk: localhost:2181(CONNECTED) 0]

--(2) 连接其他节点服务
[hadoop@hadoop01 ~]$ zkCli.sh -server hadoop02:2181
[zk: hadoop02:2181(CONNECTED) 0]

--(3) 连接其他节点服务
[hadoop@hadoop01 ~]$ zkCli.sh -server hadoop02:2181,hadoop03:2181
[zk: hadoop02:2181,hadoop03:2181(CONNECTED) 0]
# 这里并不是连接了两个节点,而是按照顺序连接一个,当第一个连接无法获取时,就连接第二个

2.查看帮助

[zk: localhost:2181(CONNECTED) 0] 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
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port

3.connect host:port(在客户端命令行连接其他节点)

[zk: localhost:2181(CONNECTED) 1] connect hadoop02:2181
[zk: hadoop02:2181(CONNECTED) 1]

4.quit(退出客户端命令行)

zk: hadoop02:2181(CONNECTED) 1] quit
Quitting...
2017-12-18 20:34:17,418 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x2606996fc450002 closed
[hadoop@hadoop01 ~]$

5.create(创建节点)、ls(查看节点)

# 默认创建persistent、非sequential节点(断开连接不删除、不自动编号)
[zk: localhost:2181(CONNECTED) 1] create /zk1 'zk1'
Created /zk1

# ls 查看该节点中的文件或目录,[]代表其中没有文件或子目录
[zk: localhost:2181(CONNECTED) 2] ls /zk1
[]

# 创建子节点
[zk: localhost:2181(CONNECTED) 3] create /zk1/zk1-1 'zk1-1'
Created /zk1/zk1-1

# 创建ephemeral节点(断开连接自动删除)
[zk: localhost:2181(CONNECTED) 2] create -e /zk2 "zk2"
Created /zk2

# 创建sequential节点(自动按顺序编号)
[zk: localhost:2181(CONNECTED) 4] create -s /mynode "mynode" 
Created /mynode0000000002
[zk: localhost:2181(CONNECTED) 1] create -s /jed "jed" 
Created /jed0000000003

# ls2 查看详细信息
[zk: localhost:2181(CONNECTED) 5] ls2 /zk1
[zk1-1] # 节点数据
cZxid = 0x400000011 # 节点创建的时候的zxid
ctime = Mon Dec 18 20:37:32 CST 2017 # 节点创建的时间
mZxid = 0x400000011 # 节点修改的时候的zxid,与子节点的修改无关
mtime = Mon Dec 18 20:37:32 CST 2017 # 节点修改的时间
pZxid = 0x400000012 # 子节点的创建/删除对应的 zxid,和修改无关,和孙子节点无关
cversion = 1 # 子节点的更新次数
dataVersion = 0 # 节点数据的更新次数
aclVersion = 0 # 节点(ACL)的更新次数
ephemeralOwner = 0x0 # 值表示与该节点绑定的 session id. 如果该节点不是 ephemeral 节点, ephemeralOwner 值为0
dataLength = 3 # 节点数据的字节数
numChildren = 1 # 子节点个数,不包含孙子节点

说明:

  • zxid:zookeeper集群内部在工作的时候(选举、原子广播等事务操作)所使用的一个全局的分布式事务的编号,是一个64位的长整型数

  • zxid分成两部分:
    高32位表示当前的leader关系是否改变
    低32位表示当前这个leader领导期间的所有事务编号
    每更换一个leader,低32位就从0开始再计数,高32位加1

  • cZxid:创建这个节点的事务编号

  • mZxid:修改这个节点的事务编号

  • pZxid:子节点的最后一个事务编号
    这里的pZxid为pZxid = 0x400000012,说明zk1下的子节点zk1-1的cZxid也0x400000012,因为我们还没有对zk1-1进行其他事务操作,所以pZxid就是zk1-1的创建时的事务编号

# stat:查看znode状态
[zk: localhost:2181(CONNECTED) 8] stat /zk1/zk1-1
cZxid = 0x400000012
ctime = Mon Dec 18 20:38:42 CST 2017
mZxid = 0x400000012
mtime = Mon Dec 18 20:38:42 CST 2017
pZxid = 0x400000012
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

6.get(获取znode数据)和set(设置znode数据)

[zk: localhost:2181(CONNECTED) 9] set /zk1/zk1-1 'zk1-1-version2'
[zk: localhost:2181(CONNECTED) 10] get /zk1/zk1-1
zk1-1-version2

7.delete(只能删除一个znode)、rmr(级联删除)

[zk: localhost:2181(CONNECTED) 11] delete /zk1
Node not empty: /zk1
[zk: localhost:2181(CONNECTED) 12] delete /zk1/zk1-1
[zk: localhost:2181(CONNECTED) 13] rmr /zk1
[zk: localhost:2181(CONNECTED) 14] ls /
[zookeeper]

8.close(关闭当前session)

[zk: hadoop02:2181(CONNECTED) 1] close
2017-12-19 08:34:16,056 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x2606c217fbf0000 closed
[zk: hadoop02:2181(CLOSED) 2] ls /
Not connected

9.监听

--(1)"NodeDataChanged"事件
[zk: localhost:2181(CONNECTED) 15] create /jed "jed"
[zk: localhost:2181(CONNECTED) 16] get /jed
jed

# 给/jed节点添加"数据变化"的监听事件
[zk: localhost:2181(CONNECTED) 17] get /jed watch

# 并在hadoop02中修改/jed的数据
[zk: localhost:2181(CONNECTED) 2] set /jed "tom"

# hadoop01中监听到/jed节点数据变化,并打印提示信息
[zk: localhost:2181(CONNECTED) 18] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/jed

--(2)"NodeChildrenChanged"事件
[zk: localhost:2181(CONNECTED) 19] ls /jed watch
[zk: localhost:2181(CONNECTED) 3] create /jed/jed1 "jed1"
[zk: localhost:2181(CONNECTED) 20] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/jed4

--(3)"NodeDeleted"事件
[zk: localhost:2181(CONNECTED) 28] stat /jed watch
[zk: localhost:2181(CONNECTED) 4] rmr /jed
[zk: localhost:2181(CONNECTED) 30] 
WATCHER::

WatchedEvent state:SyncConnected type:NodeDeleted path:/jed

--(4)"NodeCreated"事件
# zookeeper cli 方式无法进行监听
    原文作者:CoderJed
    原文地址: https://www.jianshu.com/p/30752ba8059b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞