ZooKeeper系列(三)—— Zookeeper 经常使用 Shell 命令

1、节点增删改查

1.1 启动服务和链接服务

# 启动服务
bin/zkServer.sh start

#链接服务 不指定服务地址则默认链接到localhost:2181
zkCli.sh -server hadoop001:2181

1.2 help命令

使用 help 能够查看全部命令及格式。html

1.3 查看节点列表

查看节点列表有 ls pathls2 path 两个命令,后者是前者的加强,不只能够查看指定路径下的全部节点,还能够查看当前节点的信息。git

[zk: localhost:2181(CONNECTED) 0] ls /
[cluster, controller_epoch, brokers, storm, zookeeper, admin,  ...]
[zk: localhost:2181(CONNECTED) 1] ls2 /
[cluster, controller_epoch, brokers, storm, zookeeper, admin, ....]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x130
cversion = 19
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 11

1.4 新增节点

create [-s] [-e] path data acl   #其中-s 为有序节点,-e 临时节点

建立节点并写入数据:github

create /hadoop 123456

建立有序节点,此时建立的节点名为指定节点名 + 自增序号:shell

[zk: localhost:2181(CONNECTED) 23] create -s /a  "aaa"
Created /a0000000022
[zk: localhost:2181(CONNECTED) 24] create -s /b  "bbb"
Created /b0000000023
[zk: localhost:2181(CONNECTED) 25] create -s /c  "ccc"
Created /c0000000024

建立临时节点,临时节点会在会话过时后被删除:apache

[zk: localhost:2181(CONNECTED) 26] create -e /tmp  "tmp"
Created /tmp

1.5 查看节点

1. 获取节点数据

# 格式
get path [watch]
[zk: localhost:2181(CONNECTED) 31] get /hadoop
123456   #节点数据
cZxid = 0x14b
ctime = Fri May 24 17:03:06 CST 2019
mZxid = 0x14b
mtime = Fri May 24 17:03:06 CST 2019
pZxid = 0x14b
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

节点各个属性以下表。其中一个重要的概念是 Zxid(ZooKeeper Transaction Id),ZooKeeper 节点的每一次更改都具备惟一的 Zxid,若是 Zxid1 小于 Zxid2,则 Zxid1 的更改发生在 Zxid2 更改以前。服务器

状态属性 说明
cZxid 数据节点建立时的事务 ID
ctime 数据节点建立时的时间
mZxid 数据节点最后一次更新时的事务 ID
mtime 数据节点最后一次更新时的时间
pZxid 数据节点的子节点最后一次被修改时的事务 ID
cversion 子节点的更改次数
dataVersion 节点数据的更改次数
aclVersion 节点的 ACL 的更改次数
ephemeralOwner 若是节点是临时节点,则表示建立该节点的会话的 SessionID;若是节点是持久节点,则该属性值为 0
dataLength 数据内容的长度
numChildren 数据节点当前的子节点个数

2. 查看节点状态

可使用 stat 命令查看节点状态,它的返回值和 get 命令相似,但不会返回节点数据。oop

[zk: localhost:2181(CONNECTED) 32] stat /hadoop
cZxid = 0x14b
ctime = Fri May 24 17:03:06 CST 2019
mZxid = 0x14b
mtime = Fri May 24 17:03:06 CST 2019
pZxid = 0x14b
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

1.6 更新节点

更新节点的命令是 set,能够直接进行修改,以下:测试

[zk: localhost:2181(CONNECTED) 33] set /hadoop 345
cZxid = 0x14b
ctime = Fri May 24 17:03:06 CST 2019
mZxid = 0x14c
mtime = Fri May 24 17:13:05 CST 2019
pZxid = 0x14b
cversion = 0
dataVersion = 1  # 注意更改后此时版本号为 1,默认建立时为 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

也能够基于版本号进行更改,此时相似于乐观锁机制,当你传入的数据版本号 (dataVersion) 和当前节点的数据版本号不符合时,zookeeper 会拒绝本次修改:大数据

[zk: localhost:2181(CONNECTED) 34] set /hadoop 678 0
version No is not valid : /hadoop    #无效的版本号

1.7 删除节点

删除节点的语法以下:ui

delete path [version]

和更新节点数据同样,也能够传入版本号,当你传入的数据版本号 (dataVersion) 和当前节点的数据版本号不符合时,zookeeper 不会执行删除操做。

[zk: localhost:2181(CONNECTED) 36] delete /hadoop 0
version No is not valid : /hadoop   #无效的版本号
[zk: localhost:2181(CONNECTED) 37] delete /hadoop 1
[zk: localhost:2181(CONNECTED) 38]

要想删除某个节点及其全部后代节点,可使用递归删除,命令为 rmr path

2、监听器

2.1 get path [watch]

使用 get path [watch] 注册的监听器可以在节点内容发生改变的时候,向客户端发出通知。须要注意的是 zookeeper 的触发器是一次性的 (One-time trigger),即触发一次后就会当即失效。

[zk: localhost:2181(CONNECTED) 4] get /hadoop  watch
[zk: localhost:2181(CONNECTED) 5] set /hadoop 45678
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop  #节点值改变

2.2 stat path [watch]

使用 stat path [watch] 注册的监听器可以在节点状态发生改变的时候,向客户端发出通知。

[zk: localhost:2181(CONNECTED) 7] stat /hadoop watch
[zk: localhost:2181(CONNECTED) 8] set /hadoop 112233
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/hadoop  #节点值改变

2.3 ls\ls2 path [watch]

使用 ls path [watch]ls2 path [watch] 注册的监听器可以监听该节点下全部子节点的增长和删除操做。

[zk: localhost:2181(CONNECTED) 9] ls /hadoop watch
[]
[zk: localhost:2181(CONNECTED) 10] create  /hadoop/yarn "aaa"
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/hadoop

3、 zookeeper 四字命令

命令 功能描述
conf 打印服务配置的详细信息。
cons 列出链接到此服务器的全部客户端的完整链接/会话详细信息。包括接收/发送的数据包数量,会话 ID,操做延迟,上次执行的操做等信息。
dump 列出未完成的会话和临时节点。这只适用于 Leader 节点。
envi 打印服务环境的详细信息。
ruok 测试服务是否处于正确状态。若是正确则返回“imok”,不然不作任何相应。
stat 列出服务器和链接客户端的简要详细信息。
wchs 列出全部 watch 的简单信息。
wchc 按会话列出服务器 watch 的详细信息。
wchp 按路径列出服务器 watch 的详细信息。

更多四字命令能够参阅官方文档:https://zookeeper.apache.org/doc/current/zookeeperAdmin.html

使用前须要使用 yum install nc 安装 nc 命令,使用示例以下:

[root@hadoop001 bin]# echo stat | nc localhost 2181
Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, 
built on 06/29/2018 04:05 GMT
Clients:
 /0:0:0:0:0:0:0:1:50584[1](queued=0,recved=371,sent=371)
 /0:0:0:0:0:0:0:1:50656[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/19
Received: 372
Sent: 371
Connections: 2
Outstanding: 0
Zxid: 0x150
Mode: standalone
Node count: 167

更多大数据系列文章能够参见 GitHub 开源项目大数据入门指南

相关文章
相关标签/搜索