zookeeper客戶端命令詳解
今天同事突然向看一下zookeeper中都創建了哪些節點,而我本人對zookeeper的客服端命令了解的很少,有些操作竟然不知道怎麽用,於是乎就索性整理一下zookeeper客服端命令的使用,並再此記錄一下。
想要用zkClient鏈接zookeeper,首先執行如下命令,連接到zookeeper server
./zkCli.sh -server localhost:2181
help命令
help命令用於查詢客服端所支持的所用的命令,執行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 get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port
connect命令
連接zk服務端,與close命令配合使用可以連接或者斷開zk服務端
connect 127.0.0.1:2181
close命令
close命令用於關閉與服務端的鏈接
get命令
get命令用於獲取節點的信息,註意節點的路徑必須是以/開頭的絕對路徑。如get /
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)
permissions
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命令
退出客戶端
zookeeper客戶端命令詳解