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 開源項目大數據入門指南

相關文章
相關標籤/搜索