基本操作命令

ZooKeeper命令行工具类似于Linux的shell环境,不过功能肯定不及shell啦,但是使用它我们可以简单的对ZooKeeper进行访问,数据创建,数据修改等操作.

命令行工具的一些简单操作如下:

  • zkCli.sh客户端连接命令

  • ls 与 ls2 命令

  • get 与 stat 命令

  • create 命令

  • set 命令

  • delete 命令

客户端连接

使用zkCli.sh -server 127.0.0.1:2181连接到 ZooKeeper 服务,连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息。

查看znode结构

  • ls命令:显示根目录下文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容

[zk: localhost:2181(CONNECTED) 4] ls /
[zookeeper]

第一次部署的ZoopKeeper集群,默认在根节点“/”下面有一个叫做/zookeeper的保留节点

  • ls2命令:显示根目录下文件:ls2 /查看当前节点数据并能看到更新次数等数据

[zk: localhost:2181(CONNECTED) 2] ls2 /
[zk-book, zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2

status命令+ls命令的结果=ls2命令结果

创建节点,并设置初始内容

语法:

create [-s] [-e] path data acl
  • -e 创建临时节点,当客户端断开连接,session回话结果,心跳时间检测,临时节点消失(注意非实时,而是会在比如10s,20s检测)

  • -s创建顺序节点。

操作:

create /zk "test"创建一个新的 znode节点“ zk ”以及与它关联的字符串

[zk: localhost:2181(CONNECTED) 5] create /zk "test"
Created /zk

创建顺序节点:

$ create -s  /abc
Created /abc0000000001
$ create -s  /abc
Created /abc0000000002
$ create -s  /abc
Created /abc0000000003
$ ls /abc
[abc0000000001, abc0000000002, abc0000000003]

获取节点内容

get /zk 确认 znode 是否包含我们所创建的字符串

[zk: localhost:2181(CONNECTED) 7] get /zk
test
cZxid = 0x3
ctime = Fri Jul 20 10:39:45 CST 2018
mZxid = 0x3
mtime = Fri Jul 20 10:39:45 CST 2018
pZxid = 0x3
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

修改节点内容

语法:

set path data [version]

version - 乐观锁

操作:

set /zk "zkbak" 对 zk 所关联的字符串进行设置

[zk: localhost:2181(CONNECTED) 8] set /zk "zkbak"
cZxid = 0x3
ctime = Fri Jul 20 10:39:45 CST 2018
mZxid = 0x4
mtime = Fri Jul 20 10:40:51 CST 2018
pZxid = 0x3
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
  • cZxid - 创建了这个节后,zookeeper为这个节点分配的id

  • ctime - create time,节点创建的时间

  • mZxid - 修改后,zookeeper为这个节点分配的id

  • mtime - 节点修改的时间,当没有修改过,则创建时间和修改时间是一样的

  • pZxid - 子节点的id

  • cversion - 子节点的版本号

  • dataVersion - 当前数据的版本号

  • aclVersion - 权限版本号

  • ephemeralOwner - 根据值可区分是否是临时节点

  • dataLength - 数据的长度

  • numChildren - 下面有几个子节点

dataVersiond 值也由原来的0变成了1,这是因为刚才的更新操作导致该节点的数据版本也发生了变更。

删除节点

语法:

delete path [version]

操作:

delete /zk 将刚才创建的 znode 删除

[zk: localhost:2181(CONNECTED) 9] delete /zk

注意无法删除一个包含子节点的节点

[zk: localhost:2181(CONNECTED) 10] create /zk-book 123
Created /zk-book
[zk: localhost:2181(CONNECTED) 11] create /zk-book/child 123456
Created /zk-book/child
[zk: localhost:2181(CONNECTED) 12] delete /zk-book
Node not empty: /zk-book

关闭客户端连接

quit

帮助命令

help

Last updated