Zookeeper的命令行界面(CLI)用於與Zookeeper集羣進行交互以用於開發目的。
一、CLI命令
[zk: localhost:2181(CONNECTED) 0] -h
ZooKeeper -server host:port cmd args
addauth scheme auth
close
config [-c] [-w] [-s]
connect host:port
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
delete [-v version] path
deleteall path
delquota [-n|-b] path
get [-s] [-w] path
getAcl [-s] path
history
listquota path
ls [-s] [-w] [-R] path
ls2 path [watch] # 已被棄用,等價於ls -s
printwatches on|off
quit
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
redo cmdno
removewatches path [-c|-d|-a] [-l]
rmr path
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b val path
stat [-w] path
sync path
命令 | 描述 |
connect host:port |
連接到某臺服務器上 |
create [-s] [-e] [-c] [-t ttl] path [data] [acl] | 創建一個新的znode節點,-s表示順序節點,-e表示臨時節點,acl訪問控制列表 |
delete [-v version] path |
刪除某一節點,只能刪除無子節點的節點。-v 表示節點版本號 |
deleteall path | 遞歸的刪除某一節點及其子節點,同rmr命令 |
get [-s] [-w] path | 獲取節點數據信息,-s表示獲取節點信息,包括時間戳、版本號、數據大小等 |
getAcl [-s] [-w] path |
獲取節點的訪問控制列表,-s表示順序節點 |
ls [-s] [-w] [-R] path | 獲取節點列表,-s表示獲取節點信息,相當於ls2,-R表示遞歸的獲取 |
ls2 path [watch] |
獲取節點列表及節點信息,該命令在最新版本中已棄用 |
set [-s] [-v version] path data |
設置節點數據,-s表示節點爲順序節點,-v 指定版本號 |
setAcl [-s] [-v version] [-R] path acl | 設置節點的訪問控制列表,-s表述順序節點,-v指定版本號,-R遞歸的設置 |
state [-w] path | 查看節點信息 |
setquota -n|-b val path |
設置節點的quota(限制),-n表示子節點個數,-b表示空間大小 |
delquota [-n|-b] path | 刪除節點的quota(限制) |
listquota path | 列出節點的quota信息 |
printwatches | 設置和顯示監視狀態,on開啓,off關閉 |
history |
列出本次會話中的歷史操作命令 |
redo cmdno | 再次執行某一命令,cmdno爲前一次改名執行是的ID,可通過history命令查看 |
rmr |
遞歸的刪除某一節點及其子節點,該命令在最新版本中已棄用 |
sync | 強制同步所有的更新操作到所有節點 |
addauth schema auth | 增加節點認證 |
close | 關閉連接,但是客戶端不退出 |
quit | 關閉連接並退出客戶端 |
二、創建Znodes
語法
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
注:-s 表示創建順序節點
-e 表示創建臨時節點
-c
-t
acl 訪問控制列表
舉例
[zk: localhost:2181(CONNECTED) 5] create /FirstZnode "MyFirstZookeeper-App” # 創建永久節點
Created /FirstZnode
[zk: localhost:2181(CONNECTED) 13] create -s /FirstSequentialZnode "MyFirstSequentialZnode-App" # 創建順序節點
Created /FirstSequentialZnode0000000002
[zk: localhost:2181(CONNECTED) 16] create -e /FirstEphemeralZnode "MyFirstEphemeralZnode-App” # 創建臨時節點,當客戶端斷開連接時,該節點將被刪除
Created /FirstEphemeralZnode
三、獲取節點數據
語法
get [-s] [-w] path
注:-s 節點數據+節點信息
-w 設置監視?
Key |
Value |
cZxid |
節點被創建時的事物的ID |
crime | 節點的創建時間 |
mZxid | 節點最後一次被修改的事務的ID |
mtime | 節點最後一次被修改的時間 |
pZxid | 自節點列表最近一次被修改的事務的ID |
cversion | 子節點版本號 |
dataVersion | 數據版本號 |
aclVersion |
ACL版本號 |
ephemeralOwner | 創建臨時節點的事務的ID,持久節點事務爲0 |
dataLength | 數據長度,每個節點都可保存數據 |
numChildren | 子節點的個數 |
舉例
[zk: localhost:2181(CONNECTED) 6] get /FirstZnode
MyFirstZookeeper-App
[zk: localhost:2181(CONNECTED) 22] get -s /FirstZnode # 獲取節點數據+節點信息
MyFirstZnode-App
cZxid = 0x6
ctime = Tue Sep 24 08:10:44 CST 2019
mZxid = 0xb
mtime = Tue Sep 24 08:29:42 CST 2019
pZxid = 0x6
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 16
numChildren = 0
[zk: localhost:2181(CONNECTED) 15] get /FirstSequentialZnode0000000002 # 獲取順序節點必須指定完整路徑
MyFirstSequentialZnode-App
四、設置節點數據
語法
set [-s] [-v version] path data
注:-s 表示設置順序節點
-v 表示設置版本號?
舉例
[zk: localhost:2181(CONNECTED) 18] set /FirstZnode "MyFirstZnode-App"
[zk: localhost:2181(CONNECTED) 19] get /FirstZnode
MyFirstZnode-App
五、創建子節點
語法
create [-s] [-e] [-c] [-t ttl] /parent/path/subnode/path [data] [acl]
注:參數同創建節點
舉例
[zk: localhost:2181(CONNECTED) 23] create /FirstZnode/Child1 "MyFirstChildZnode-App"
Created /FirstZnode/Child1
六、列出子節點列表
語法
ls [-s] [-w] [-R] path
注:-s 列出path指定的節點的節點信息
-w
-R 遞歸的列出子節點列表
舉例
[zk: localhost:2181(CONNECTED) 24] ls /
[FirstEphemeralZnode, FirstSequentialZnode0000000002, FirstZnode, zookeeper]
[zk: localhost:2181(CONNECTED) 25] ls -s /
[FirstEphemeralZnode, FirstSequentialZnode0000000002, FirstZnode, zookeeper]cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0xa
cversion = 4
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 4
[zk: localhost:2181(CONNECTED) 26] ls -R /
/
/FirstEphemeralZnode
/FirstSequentialZnode0000000002
/FirstZnode
/zookeeper
/FirstZnode/Child1
/zookeeper/config
/zookeeper/quota
七、查看節點信息
語法
stat [-w] path
注:-w
舉例
[zk: localhost:2181(CONNECTED) 29] stat /FirstZnode
cZxid = 0x6
ctime = Tue Sep 24 08:10:44 CST 2019
mZxid = 0xb
mtime = Tue Sep 24 08:29:42 CST 2019
pZxid = 0xc
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 16
numChildren = 1
八、刪除節點
語法
rmr path # 遞歸的刪除指定的znode及其子節點,舊版本的命令
delete [-v version] path # 刪除不帶子節點的節點
deleteall path # 功能同rmr,新版本的命令
舉例
[zk: localhost:2181(CONNECTED) 4] ls -R / # 查看所有節點
/
/FirstSequentialZnode0000000002
/FirstZnode
/zookeeper
/FirstZnode/Child1
/zookeeper/config
/zookeeper/quota
[zk: localhost:2181(CONNECTED) 5] rmr /FirstZnode # 舊命令刪除
The command 'rmr' has been deprecated. Please use 'deleteall' instead.
[zk: localhost:2181(CONNECTED) 6]
[zk: localhost:2181(CONNECTED) 6]
[zk: localhost:2181(CONNECTED) 6] deleteall /FirstZnode # 新命令刪除,提示不存在是因爲rmr已經將其刪除
Node does not exist: /FirstZnode
[zk: localhost:2181(CONNECTED) 7] ls -R / # 查看確認刪除
/
/FirstSequentialZnode0000000002
/zookeeper
/zookeeper/config
/zookeeper/quota
待完善......
參考: