Zookeeper(三)客户端脚本

来源:互联网 发布:约到优质学生炮 知乎 编辑:程序博客网 时间:2024/05/03 21:37

我们来看下zkCli这个脚本。进入ZooKeeper的bin目录后,直接执行如下命令:

$sh zkCli.sh

当看到如下输出信息时,表示已经成功连接上本地的ZooKeeper服务器了。

WatchedEvent state:SyncConnected type:Node path:null

[zk:localhost:2181(CONNECTED)0]

注意上面的命令没有显式地指定ZooKeeper服务器地址,那么默认是连接本地ZooKeeper服务器。如果希望连接指定ZooKeeper服务器,可以通过如下方式实现:、

$sh zkCli.sh -server ip:port

创建

使用create命令,可以创建一个ZooKeeper节点。用法如下:

create [-s] [-e] path data acl

其中,-s或-e分别指定节点特性:顺序或临时节点。默认情况下即不添加-s或-e参数的,创建的是持久节点。

执行如下命令:

[zk:localhost:2181(CONNECTED)0] create /zk-book 123

Created /zk-book

执行完上面的命令,就在ZooKeeper的根节点下创建了一个叫做/zk-book的节点,并且节点的数据内容是“123”。另外,create命令的最后一个参数是acl,它是用来进行全线控制的,缺省情况下,不做任何权限控制。关于ZooKeeper权限控制,后面我们会介绍

读取

与读取相关的命令包括ls命令和set命令

ls

使用ls命令,可以列出ZooKeeper指定节点下的所有子节点。当然,这个命令只能考到指定节点下第一级的所有子节点。用法如下:

ls path [watch]

其中 path表示的是指定数据节点的节点路径。

执行如下命令:

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

[zookeeper]

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


get:

使用get命令,可以获取ZooKeeper指定节点的数据内容和属性信息。用法如下:

get path [watch]

执行如下命令:

[zk:localhost:2181(CONNECTED)0] get /zk-book

123

cZxid=0xa

ctime=Thu Jun 20 10:35:00 UTC 2013

mZxid=0xa

mtime=Thu Jun 20 10:35:00 UTC 2013

pZxid=0xa

cversion=0

dataVersion=0

aclVersion=0

ephemeralOwner=0x0

dataLength=3

numChildren=0

从上面的输出信息中,我们可以看到,第一行是节点/zk-book的数据内容,其他几行则是创建该节点的事务ID(cZxid),最后一次更新该节点的事务ID(mZxid)和最后一次更新该节点的时间(mtime)等属性信息。关于ZooKeeper节点的数据结构,在后面讲解。


更新

使用set命令可以更新指定节点的数据内容。用法如下:

set path data【version】

其中,data就是要更新的内容。注意,set命令后面还有一个version参数。在ZooKeeeper中,节点的数据是由版本概念的,这个用于指定本次更新操作时基于ZNode的哪一个版本进行的。

执行如下命令:

[zk:localhost:2181(CONNECTTED)3] set /zk-book 456

cZxid = 0xa

ctime = Thu jun 20 10:35:00 UTC 2013

mZxid = 0x11

mtime = Fri Jun 21 01:05:49 UTC 2013

pZxid = 0xa

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 3

numChildren = 0

执行完以上命令后,节点/zk-book的数据内容就已经被更新成“456”了。细心的读者还会发现,在输出信息中,dataVersion的值由原来的0变成了1,这是因为刚才的更新操作导致该节点的数据版本也发生了变更。关于ZNode的数据版本,将在后面做详细解释,这里只是演示简单操作,不再详细展开。

删除

使用delete命令,可以删除ZooKeeper上的指定节点。用法如下:

delete path [version]

此命令中的version参数和set命令中的version参数的作用是一致的。

执行如下命令:

[zk:localhost:2181(CONNECTED)2] delete /zk-book

执行完以上命令后,就可以把/zi-book这个节点成功删除了。但是这里要注意的一点是:要想删除某一个指定节点,该节点必须没有子节点存在。这可以通过执行如下命令来进行验证:

[zk:localhost:2181(CONNECTED) 7] create /zk-book 123

Create /zk-book

[zk:localhost:2181(CONNECTED) 8] create /zk-book/child 12345

Created /zk-book/child

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

Node not empty:..zk-book

上面的这个输出结果已经很清晰地表明了删除失败,通过Node not empty这个出错信息,可以看出无法删除一个包含子节点的节点。


注:博主后面工作会比较忙,晚上也没有时间在忙。估计要停更一段时间,不过等忙完这一阵,博主会努力加油更新的。

0 0
原创粉丝点击