zookeeper专栏 | ||
---|---|---|
上一篇 | 主目录 | 下一篇 |
【前言】
操作zookeeper集群有两种方式,cli客户端命令行窗口和javaAPI
1 cli客户端命令行窗口
进入zk的命令行客户端
(1) 直接连接本机的 ZooKeeper 服务器
zkCli.sh
(2) 连接其他的 ZooKeeper 服务器,在命令后面接一个参数-server
zkCli.sh -server hadoop02:2181
(3) 连接03,若03挂掉连接02
zkCli.sh -server hadoop02:2181,hadoop03: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 节点(-e是临时,默认是持久)
create -e /zk “myData”
#创建顺序 znode 节点(持久)
create -s /zk “myData”
#删除 znode 节点
delete /zk ## 只能删除没有子 znode 的 znode
rmr /zk ## 不管里头有多少 znode,统统删除
znode 数据信息字段解释(通过stat/get/ls2命令获取):
- mydata 节点数据
cZxid
= 0x400000093 节点创建的时候的 zxid
ctime
= Fri Dec 02 16:41:50 PST 2016 节点创建的时间
mZxid
= 0x400000093 节点修改的时候的 zxid,与子节点的修改无关
mtime
= Fri Dec 02 16:41:50 PST 2016 节点的修改的时间
pZxid
= 0x400000093 和子节点的创建/删除对应的 zxid,和修改无关,和孙子节点无关
cversion
= 0 子节点的更新次数
dataVersion
= 0 节点数据的更新次数
aclVersion
= 0 节点(ACL)的更新次数
ephemeralOwner
= 0x0 如果该节点为 ephemeral 临时节点, ephemeralOwner 值表示与该节点绑定的 session id. 如果该节点不是 ephemeral 节点,ephemeralOwner 值为 0
dataLength
= 6 节点数据的字节数
numChildren
= 0 子节点个数,不包含孙子节点
2 Java API
create(path, data, flags)
: 创建一个 znode, path 是其路径,data 是存储在该 ZNode 上的数据, flags 常用的有: PERSISTEN, PERSISTENT_SEQUENTAIL, EPHEMERAL, EPHEMERAL_SEQUENTAIL
delete(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 信