今天同事忽然向看一下zookeeper中都建立了哪些節點,而我本人對zookeeper的客服端命令瞭解的不多,有些操做居然不知道怎麼用,因而乎就索性整理一下zookeeper客服端命令的使用,並再此記錄一下。java
想要用zkClient連接zookeeper,首先執行以下命令,鏈接到zookeeper servernode
./zkCli.sh -server localhost:2181
help命令session
help命令用於查詢客服端所支持的所用的命令,執行help,輸入以下:ui
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 get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port
connect命令spa
鏈接zk服務端,與close命令配合使用能夠鏈接或者斷開zk服務端code
connect 127.0.0.1:2181
close命令orm
close命令用於關閉與服務端的連接server
get命令blog
get命令用於獲取節點的信息,注意節點的路徑必須是以/開頭的絕對路徑。如get /ip
cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x1469 cversion = 3 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 4
其中:
cZxid:節點建立時的zxid
ctime:節點建立時間
mZxid:節點最近一次更新時的zxid
mtime:節點最近一次更新的時間
cversion:子節點數據更新次數
dataVersion:本節點數據更新次數
aclVersion:節點ACL(受權信息)的更新次數
ephemeralOwner:若是該節點爲臨時節點,ephemeralOwner值表示與該節點綁定的session id. 若是該節點不是臨時節點,ephemeralOwner值爲0
dataLength:節點數據長度,本例中爲hello world的長度
numChildren:子節點個數
stat命令
stat命令用於查看節點的狀態信息,如stat /
cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x1469 cversion = 3 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 4
該命令的結果參數說明同get命令
set命令
set命令用於設置節點的數據,如:
set /usergrid hellUsergrid
ls命令
ls命令用於獲取路徑下的節點信息,注意路徑爲絕對路徑,如:ls /storm
[assignments, storms, errors, supervisors, workerbeats]
ls2命令
ls2命令是ls命令的加強版,比ls命令多輸出本節點信息,如:ls2 /storm
[assignments, storms, errors, supervisors, workerbeats] cZxid = 0x1469 ctime = Tue Nov 14 11:32:09 CST 2017 mZxid = 0x1469 mtime = Tue Nov 14 11:32:09 CST 2017 pZxid = 0x1470 cversion = 5 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 1 numChildren = 5
listquota命令
listquota命令用於顯示配額,如listquota /storm
absolute path is /zookeeper/quota/storm/zookeeper_limits quota for /storm does not exist.
setquota命令
setquota命令用於設置節點個數以及數據長度的配額,如:
setquota –n 4 /zookeeper/node 設置/zookeeper/node子節點個數最大爲4 setquota –b 100 /zookeeper/node 設置/zookeeper/node節點長度最大爲100
delquota命令
delquota命令用於刪除配額,-n爲子節點個數,-b爲節點數據長度,如:delquota –n 2
history命令
history用於列出最近的命令歷史,能夠和redo配合使用。如history
12 - get /usergrid 13 - help 14 - ls / 15 - ls /storm 16 - ls2 /storm 17 - help 18 - listquota /storm 19 - listquota /zookeeper 20 - help 21 - history 22 - history
redo命令
redo命令用於再次執行某個命令,使用方式爲redo cmdid 如 redo 20
常與history配合使用
create命令
create命令用於建立節點,其中-s爲順序充點,-e臨時節點
create /zookeeper/node1"test_create" world:anyone:fdsfds
delete命令
delete命令用於刪除節點,如delete /nodeDelete
addauth命令
addauth命令用於節點認證,使用方式:如addauth digest username:password
setAcl命令
setAcl命令用於設置節點Acl
Acl由三部分構成:1爲scheme,2爲user,3爲permission,通常狀況下表示爲scheme:id:permissions
getAcl命令
獲取節點的Acl,如getAcl /node1
scheme和id
world: 它下面只有一個id, 叫anyone, world:anyone表明任何人,zookeeper中對全部人有權限的結點就是屬於world:anyone的
auth: 它不須要id, 只要是經過authentication的user都有權限(zookeeper支持經過kerberos來進行authencation, 也支持username/password形式的authentication)
digest: 它對應的id爲username:BASE64(SHA1(password)),它須要先經過username:password形式的authentication
ip: 它對應的id爲客戶機的IP地址,設置的時候能夠設置一個ip段,好比ip:192.168.1.0/16, 表示匹配前16個bit的IP段
super: 在這種scheme狀況下,對應的id擁有超級權限,能夠作任何事情(cdrwa)
CREATE(c): 建立權限,能夠在在當前node下建立child node
DELETE(d): 刪除權限,能夠刪除當前的node
READ(r): 讀權限,能夠獲取當前node的數據,能夠list當前node全部的child nodes
WRITE(w): 寫權限,能夠向當前node寫數據
ADMIN(a): 管理權限,能夠設置當前node的permission
sync命令
sync命令用於強制同步,因爲請求在半數以上的zk server上生效就表示此請求生效,那麼就會有一些zk server上的數據是舊的。sync命令就是強制同步全部的更新操做。
printwatchers命令
printWatchers命令用於設置和顯示監視狀態,值爲on或則off
quit命令
退出客戶端