本文主要介绍了在zookeeper中日常用到的命令行操作

更新于 2021-04-17


登录zookeeper shell

使用如下命令连接本地的zookeeper:

1
bin/zkCli.sh

节点操作

查看节点

使用下面的命令查看都有哪些节点:

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

默认只有一个zookeeper节点

创建一个节点

1
2
3
4
[zk: localhost:2181(CONNECTED) 9] create /workers ""
Created /workers
[zk: localhost:2181(CONNECTED) 10] ls /
[workers, zookeeper]

当创建/workers节点后指定了一个空字符串(“”),说明此刻不希望在这个znode中保存数据。然而,该接口中的这个参数可以使我们保存任何字符串到ZooKeeper的节点中。比如,可以替 换””为”workers”。

创建带序号的节点

如果此时再次支执行create /workers "",则会报错:Node already exists,此时可以使用-s参数表示创建一个带序号的节点:

1
2
[zk: localhost:2181(CONNECTED) 9] create -s /workers ""
Created /workers000000002

带序号的节点会把序号追加到节点名字后且全局唯一

创建临时节点

create的时候使用-e可以创建临时节点:

1
2
[zk: localhost:2181(CONNECTED) 9] create -e /tmpnode ""
Created /tmnpnode

当创建临时节点的会话中断之后,临时节点就会消失;

注册到节点

通知客户端zookeeper节点数据变化是zookeeper的一个重要功能,使用如下的命令可以将当前会话注册到zookeeper:

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

-w表示watch,意思是监控当前的节点,如果节点发生变化则会被zookeepr通知

此时如果/节点发生了变化,则这个会话会收到通知:WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/

查看节点状态

使用下面的命令可以查看节点的状态:

1
[zk: localhost:2181(CONNECTED) 9] state /workers

其中会输出如下内容:

  • czxid:创建节点的事物id;
  • ctime:创建该节点的时间;
  • mZxid:修改该节点的事物id;
  • pZxid:最后一次修改子节点的zxid;
  • cversion:子节点修改次数;
  • dataversion:当前节点修改次数;
  • aclVersion:访问控制列表变化的次数;

删除节点

1
2
3
[zk: localhost:2181(CONNECTED) 11] delete /workers
[zk: localhost:2181(CONNECTED) 12] ls /
[zookeeper]

delete只能删除没有子节点的节点,如果要递归删除则使用deleteall

1
[zk: localhost:2181(CONNECTED) 11] deleteall /workers

退出shell

1
2
3
4
5
6
7
[zk: localhost:2181(CONNECTED) 13] quit

WATCHER::

WatchedEvent state:Closed type:None path:null
2020-12-12 15:14:16,594 [myid:] - INFO [main:ZooKeeper@1422] - Session: 0x100f8067ce90000 closed
2020-12-12 15:14:16,594 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x100f8067ce90000