ZooKeeper命令行操作

原创
2016/07/11 01:20
阅读数 9K

ZooKeeper命令行脚本

ZooKeeper安装目录下的 bin 目录下提供了一些命令行工具。

脚本 说明
zkCleanup.sh 用于清理 ZooKeeper 事务日志文件和对应的数据快照文件
zkCli.sh ZooKeeper 客户端
zkEnv.sh 设置 ZooKeeper 环境变量
zkServer.sh 启动、停止和重启 ZooKeeper 服务

本文主要演示如何使用 ZooKeeper 的客户端与 ZooKeeper 服务器进行交互。


##连接ZooKeeper服务器

输入以下命令可以连接到 ZooKeeper 服务器:

zkCli.sh

如果连接成功, 会输出以下信息, 限于篇幅, 中间会省略一些信息:

Connecting to localhost:2181
2016-07-10 23:22:18,200 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.8--1, built on 02/06/2016 03:18 GMT
2016-07-10 23:22:18,202 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=master
2016-07-10 23:22:18,203 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.7.0_80
........................
2016-07-10 23:22:18,207 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@39165e21
Welcome to ZooKeeper!
........................

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]

因为没有显示地指定 ZooKeeper 服务器的地址, 默认将会连接到本机的 ZooKeeper 服务器。可以使用下面的方式指定连接的 ZooKeeper 服务器:

zkCli.sh -server slave01:2181

连接信息如下:

Connecting to slave01:2181
..................................
WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: slave01:2181(CONNECTED) 0] 

可以看到已经成功连接到 slave01 上的 ZooKeeper 服务器。

在 shell 中, 输入 "help" 可以得到客户端可以执行的命令列表:

输入图片说明


##常用命令行操作 ###查看(ls) ####用法 使用 ls 命令可以列出 ZooKeeper 指定节点下的所有子节点。需要注意的是只能查看指定节点下的第一级子节点。具体用法如下:

ls path [watch]

其中 path 用于指定节点路径。 ####示例 ls

在根节点 "/" 下面默认有一个 "/zookeeper" 的保留节点。 ###创建(create) ####用法 使用 create 命令可以创建一个 znode, 具体用法如下:

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

其中, -s 用于指定节点是否是顺序的, -e 用于指定节点是否是临时的, -s 和 -e 是可选的, 默认创建持久节点。path 用于指定节点路径, data 表示节点数据, acl 用于权限控制, 默认情况下不做权限控制。 ####示例

create

可以看到 "/zk_test" 节点已经成功创建。

###读取(get) ####用法 使用 get 命令可以获取 ZooKeeper 指定节点的数据内容和相关信息, 具体用法如下:

get path [watch]

其中 path 指定的是节点路径。 ####示例 get

输出的第一行是节点 "/zk_test" 的数据内容, cZxid 是创建 "/zk_test" 节点的事务ID, ctime 表示节点创建的时间, mZxid 是最后更新 "/zk_test" 节点的事务ID, mtime 是最后更新 "/zk_test" 节点的时间, cversion 表示子节点更新的次数, dataVersion 表示数据版本, aclVersion 表示 ACL 更新的次数, 如果节点是一个临时节点的话 ephemeralOwner 表示节点拥有者的会话ID, 如果不是临时节点, ephemeralOwner 的值将会是 0, dataLength 表示数据长度, numChildren 表示子节点数量, 等等。 ###更新(set) ####用法 使用 set 命令可以更新节点的数据, 具体用法如下:

set path data [version]

其中 path 指定节点路径, data 是更新后的数据,在 ZooKeeper 中, znode 中的数据是有版本概念的, version 就是用来指定更新操作是基于 znode 的哪一个数据版本。 ####示例 set

执行完 set 命令后, "/zk_test" 节点数据已经被更新成 test_data_updated。从上图可以看到, dataVersion 的值由 0 变成了 1。

updated

###删除(delete) ####用法 使用 delete 命令可以删除指定的节点, 具体用法如下:

delete path [version]

其中 path 指定节点路径, version 参数和 set 命令中的 version 参数一样。

####示例 delete

从上图可以看到, "/zk_test" 节点成功被删除。需要注意的是, 如果要删除的节点有子节点, 则删除会失败。如下:

delete_child

从上图可以看到, "/zk_test" 节点删除失败, 提示 "Node not empty: /zk_test", 因为 "/zk_test" 节点包含一个子节点 "/test_child"。 ###统计(stat) 使用 stat 命令可以输出节点的统计信息, 具体用法如下:

stat path [watch]

其中 path 指定节点路径。 ####用法 stat ###历史(history) 使用 history 命令可以查看客户端中执行的历史命令。 history ###退出(quit)和关闭(close) 使用 quit 和 close 命令均可以关闭会话。 quit

close ###其它 其它命令这里不再过多描述。


##参考资料 http://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_ConnectingToZooKeeper

展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部