介紹zookeeper的shell命令
1.進入客戶端命令行
--(1) 連接本地服務
[hadoop@hadoop01 ~]$ zkCli.sh
[zk: localhost:2181(CONNECTED) 0]
--(2) 連接其他節(jié)點服務
[hadoop@hadoop01 ~]$ zkCli.sh -server hadoop02:2181
[zk: hadoop02:2181(CONNECTED) 0]
--(3) 連接其他節(jié)點服務
[hadoop@hadoop01 ~]$ zkCli.sh -server hadoop02:2181,hadoop03:2181
[zk: hadoop02:2181,hadoop03:2181(CONNECTED) 0]
# 這里并不是連接了兩個節(jié)點,而是按照順序連接一個,當?shù)谝粋€連接無法獲取時,就連接第二個
2.查看幫助
[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
3.connect host:port(在客戶端命令行連接其他節(jié)點)
[zk: localhost:2181(CONNECTED) 1] connect hadoop02:2181
[zk: hadoop02:2181(CONNECTED) 1]
4.quit(退出客戶端命令行)
zk: hadoop02:2181(CONNECTED) 1] quit
Quitting...
2017-12-18 20:34:17,418 [myid:] - INFO [main:ZooKeeper@684] - Session: 0x2606996fc450002 closed
[hadoop@hadoop01 ~]$
5.create(創(chuàng)建節(jié)點)、ls(查看節(jié)點)
# 默認創(chuàng)建persistent、非sequential節(jié)點(斷開連接不刪除、不自動編號)
[zk: localhost:2181(CONNECTED) 1] create /zk1 'zk1'
Created /zk1
# ls 查看該節(jié)點中的文件或目錄,[]代表其中沒有文件或子目錄
[zk: localhost:2181(CONNECTED) 2] ls /zk1
[]
# 創(chuàng)建子節(jié)點
[zk: localhost:2181(CONNECTED) 3] create /zk1/zk1-1 'zk1-1'
Created /zk1/zk1-1
# 創(chuàng)建ephemeral節(jié)點(斷開連接自動刪除)
[zk: localhost:2181(CONNECTED) 2] create -e /zk2 "zk2"
Created /zk2
# 創(chuàng)建sequential節(jié)點(自動按順序編號)
[zk: localhost:2181(CONNECTED) 4] create -s /mynode "mynode"
Created /mynode0000000002
[zk: localhost:2181(CONNECTED) 1] create -s /jed "jed"
Created /jed0000000003
# ls2 查看詳細信息
[zk: localhost:2181(CONNECTED) 5] ls2 /zk1
[zk1-1] # 節(jié)點數(shù)據(jù)
cZxid = 0x400000011 # 節(jié)點創(chuàng)建的時候的zxid
ctime = Mon Dec 18 20:37:32 CST 2017 # 節(jié)點創(chuàng)建的時間
mZxid = 0x400000011 # 節(jié)點修改的時候的zxid,與子節(jié)點的修改無關
mtime = Mon Dec 18 20:37:32 CST 2017 # 節(jié)點修改的時間
pZxid = 0x400000012 # 子節(jié)點的創(chuàng)建/刪除對應的 zxid,和修改無關,和孫子節(jié)點無關
cversion = 1 # 子節(jié)點的更新次數(shù)
dataVersion = 0 # 節(jié)點數(shù)據(jù)的更新次數(shù)
aclVersion = 0 # 節(jié)點(ACL)的更新次數(shù)
ephemeralOwner = 0x0 # 值表示與該節(jié)點綁定的 session id. 如果該節(jié)點不是 ephemeral 節(jié)點, ephemeralOwner 值為0
dataLength = 3 # 節(jié)點數(shù)據(jù)的字節(jié)數(shù)
numChildren = 1 # 子節(jié)點個數(shù),不包含孫子節(jié)點
說明:
zxid:zookeeper集群內部在工作的時候(選舉、原子廣播等事務操作)所使用的一個全局的分布式事務的編號,是一個64位的長整型數(shù)
zxid分成兩部分:
高32位表示當前的leader關系是否改變
低32位表示當前這個leader領導期間的所有事務編號
每更換一個leader,低32位就從0開始再計數(shù),高32位加1cZxid:創(chuàng)建這個節(jié)點的事務編號
mZxid:修改這個節(jié)點的事務編號
pZxid:子節(jié)點的最后一個事務編號
這里的pZxid為pZxid = 0x400000012,說明zk1下的子節(jié)點zk1-1的cZxid也0x400000012,因為我們還沒有對zk1-1進行其他事務操作,所以pZxid就是zk1-1的創(chuàng)建時的事務編號
# stat:查看znode狀態(tài)
[zk: localhost:2181(CONNECTED) 8] stat /zk1/zk1-1
cZxid = 0x400000012
ctime = Mon Dec 18 20:38:42 CST 2017
mZxid = 0x400000012
mtime = Mon Dec 18 20:38:42 CST 2017
pZxid = 0x400000012
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
6.get(獲取znode數(shù)據(jù))和set(設置znode數(shù)據(jù))
[zk: localhost:2181(CONNECTED) 9] set /zk1/zk1-1 'zk1-1-version2'
[zk: localhost:2181(CONNECTED) 10] get /zk1/zk1-1
zk1-1-version2
7.delete(只能刪除一個znode)、rmr(級聯(lián)刪除)
[zk: localhost:2181(CONNECTED) 11] delete /zk1
Node not empty: /zk1
[zk: localhost:2181(CONNECTED) 12] delete /zk1/zk1-1
[zk: localhost:2181(CONNECTED) 13] rmr /zk1
[zk: localhost:2181(CONNECTED) 14] ls /
[zookeeper]
8.close(關閉當前session)
[zk: hadoop02:2181(CONNECTED) 1] close
2017-12-19 08:34:16,056 [myid:] - INFO [main:ZooKeeper@684] - Session: 0x2606c217fbf0000 closed
[zk: hadoop02:2181(CLOSED) 2] ls /
Not connected
9.監(jiān)聽
--(1)"NodeDataChanged"事件
[zk: localhost:2181(CONNECTED) 15] create /jed "jed"
[zk: localhost:2181(CONNECTED) 16] get /jed
jed
# 給/jed節(jié)點添加"數(shù)據(jù)變化"的監(jiān)聽事件
[zk: localhost:2181(CONNECTED) 17] get /jed watch
# 并在hadoop02中修改/jed的數(shù)據(jù)
[zk: localhost:2181(CONNECTED) 2] set /jed "tom"
# hadoop01中監(jiān)聽到/jed節(jié)點數(shù)據(jù)變化,并打印提示信息
[zk: localhost:2181(CONNECTED) 18]
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/jed
--(2)"NodeChildrenChanged"事件
[zk: localhost:2181(CONNECTED) 19] ls /jed watch
[zk: localhost:2181(CONNECTED) 3] create /jed/jed1 "jed1"
[zk: localhost:2181(CONNECTED) 20]
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/jed4
--(3)"NodeDeleted"事件
[zk: localhost:2181(CONNECTED) 28] stat /jed watch
[zk: localhost:2181(CONNECTED) 4] rmr /jed
[zk: localhost:2181(CONNECTED) 30]
WATCHER::
WatchedEvent state:SyncConnected type:NodeDeleted path:/jed
--(4)"NodeCreated"事件
# zookeeper cli 方式無法進行監(jiān)聽