ZooKeeper 集群使用
ZooKeeper 集群 cli 使用
首先,我们可以是用命令bin/zkCli.sh
进入 ZooKeeper 的命令行客户端,这种是直接连接本机的 ZooKeeper 服务器,还有一种方式,可以连接其他的ZooKeeper 服务器,只需要我们在命令后面接一个参数-server
就可以了。例如:zkCli.sh -server hadoop01:2181
进入命令行之后,键入 help 可以查看简易的命令帮助文档,如下图
命令说明
说明 | 命令 |
---|---|
查看 znode 子节点内容 | ls / ls /ZooKeeper |
创建 znode 节点 | create /zk “myData” |
获取 znode 数据 | get /ZooKeeper get /ZooKeeper/node1 |
设置 znode 数据 | set /zk “myData1” |
监听 znode 事件 | ls /ZooKeeper watch ## 就对一个节点的子节点变化事件注册了监听 |
get /ZooKeeper watch ## 就对一个节点的数据内容变化事件注册了监听 | |
创建临时 znode 节点 | create -e /zk “myData” |
创建顺序 znode 节点 | create -s /zk “myData” |
删除 znode 节点 | delete /zk ## 只能删除没有子 znode 的 |
rmr /zk ## 不管里头有多少 znode,统统删除 |
znode 数据信息字段解释
说明 | |
---|---|
mydata | 节点数据 |
cZxid = 0x400000093 | 节点创建的时候的 zxid The zxid of the change that caused this znode to be created |
ctime = Fri Dec 02 16:41:50 PST 2016 | 节点创建的时间 The time in milliseconds from epoch when this znode was created. |
mZxid = 0x400000093 | 节点修改的时候的 zxid,与子节点的修改无关 The zxid of the change that last modified this znode. |
mtime = Fri Dec 02 16:41:50 PST 2016 | 节点的修改的时间 The time in milliseconds from epoch when this znode was last modified. |
pZxid = 0x400000093 | 和子节点的创建/删除对应的 zxid,和修改无关,和孙子节点无关 The zxid of the change that last modified children of this znode. |
cversion = 0 | 子节点的更新次数 The number of changes to the children of this znode. dataVersion = 0 |
dataVersion = 0 | 节点数据的更新次数 The number of changes to the data of this znode. |
aclVersion = 0 | 节点(ACL)的更新次数 The number of changes to the ACL of this znode. |
ephemeralOwner = 0x0 | 如果该节点为 ephemeral 节点, ephemeralOwner 值表示与该节点绑定的 session id. 如果该节点不是 ephemeral 节点, ephemeralOwner 值为 0 The session id of the owner of this znode if the znode is an ephemeral node. If it is not anephemeral node, it will be zero. |
dataLength = 6 | 节点数据的字节数 The length of the data field of this znode. |
numChildren = 0 | 子节点个数,不包含孙子节点 The number of children of this znode. |
ZooKeeper 四字命令:
1 | 使用格式: |
说明 | |
---|---|
conf | 输出相关服务配置的详细信息 |
cons | 列出所有连接到服务器的客户端的完全的连接/会话的详细信息。包括“接受/发送”的包数量、会话 id、操作延迟、最后的操作执行等等信息 |
dump | 列出未经处理的会话和临时节点 |
envi | 输出关于服务环境的详细信息(区别于 conf 命令) |
reqs | 列出未经处理的请求 |
ruok | 测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应 |
stat | 输出关于性能和连接的客户端的列表 |
wchs | 列出服务器 watch 的详细信息 |
wchc | 通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表 |
wchp | 通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径 |
ZooKeeper 集群 Java API 使用
说明 | |
---|---|
create (path, data, flags ) | 创建一个 znode, path 是其路径,data 是存储在该 ZNode 上的数据,flags 常用的有: PERSISTEN, PERSISTENT_SEQUENTAIL, EPHEMERAL, EPHEMERAL_SEQUENTAILdelete(path, version): 删除一个 ZNode,可以通过 version 删除指定的版本, 如果 version 是-1的话,表示删除所有的版本 |
exists (path, watch): | 判断指定 ZNode 是否存在,并设置是否 Watch 这个 ZNode。这里如果要设置 Watcher 的话,Watcher 是在创建 ZooKeeper 实例时 指定的,如果要设置特定的 Watcher的话,可以调用另一个重载版本的 exists(path, watcher)。以下几个带 watch 参数的 API 也都类似 |
getData (path, watch): | 读取指定 ZNode 上的数据,并设置是否 watch 这个 ZNode |
setData (path, watch): | 更新指定 ZNode 的数据,并设置是否 Watch 这个 ZNode |
getChildren (path, watch): | 获取指定 ZNode 的所有子 ZNode 的名字,并设置是否 Watch 这个ZNode |
sync (path): | 把所有在 sync 之前的更新操作都进行同步,达到每个请求都在半数以上的ZooKeeper Server 上生效。path 参数目前没有用 |
setAcl (path, acl): | 设置指定 ZNode 的 Acl |
getAcl (path): | 获取指定 ZNode 的 Acl 信息 |
实例
1 | package com.ghgj.zk; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 凉月の博客!
评论