# 啓動服務 bin/zkServer.sh start #鏈接服務 不指定服務地址則默認鏈接到localhost:2181 zkCli.sh -server hadoop001:2181
使用 help
能夠查看全部命令及格式。html
查看節點列表有 ls path
和 ls2 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
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
# 格式 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 | 數據節點當前的子節點個數 |
可使用 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
更新節點的命令是 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 #無效的版本號
刪除節點的語法以下: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
。
使用 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 #節點值改變
使用 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 #節點值改變
使用 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
命令 | 功能描述 |
---|---|
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 開源項目: 大數據入門指南