文章目錄
- Source language 源語 [(3.5.6版本)](https://zookeeper.apache.org/doc/r3.5.6/zookeeperProgrammers.html)
- 縮寫
- create [-s] [-e] [-c] [-t ttl] path [data] [acl]
- ls [-s] [-w] [-R] path 查看節點、監聽節點的存在性(一次性)
- ls2 path [watch] (deprecated)
- get [-s] [-w] path 查看節點數據、監聽節點數據狀態(一次性)
- stat [-w] path 監聽節點數據狀態(一次性)
- printwatches on|off
- delete [-v version] path
- deleteall path
- set [-s] [-v version] path data
- setquota -n|-b val path
- listquota path
- delquota [-n|-b] path
- delquota刪除後需要重連才能再次創建不同類型的quota
- 添加/刪除/修改新機器到zookeeper集羣
- config [-c] [-w] [-s]
- redo cmdno
- removewatches path [-c|-d|-a] [-l]
- rmr path(deprecated)-> deleteall
- sync path
- history
- addauth scheme auth, getAcl [-s] path , setAcl [-s] [-v version] [-R] path acl 見權限篇
- connect host:port
- close (關閉連接但不退出,可用connect命令重連當前,或用connect host:port 連接其他)
- quit (關閉連接且退出)
Source language 源語 (3.5.6版本)
縮寫
- zxid : ZooKeeper Transaction Id
- m :modified
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
- c :Container
- t :TTL
- e:Ephemeral Nodes
- s:Sequence Nodes
[zk: localhost:2181(CONNECTED) 2] create /lock "lock root" # 持久節點,數據爲lock root
Created /lock
[zk: localhost:2181(CONNECTED) 3] create -e /lock/seq- # 臨時節點, 數據爲null
Created /lock/seq-
[zk: localhost:2181(CONNECTED) 6] create -s /lock/seq- # 創建順序節點
Created /lock/seq-0000000001
[zk: localhost:2181(CONNECTED) 21] create -t "123" /lock/seqs # -t必須是一個long值
-t argument must be a long value
[zk: localhost:2181(CONNECTED) 7] create -t 15 /a # ttl跟操作系統有關,默認是禁用的,使用zookeeper.extendedTypesEnabled=true開啓,詳見zk配置
KeeperErrorCode = Unimplemented for /a
ls [-s] [-w] [-R] path 查看節點、監聽節點的存在性(一次性)
- -s :state
- -w:watcher
- -R:recursion
[zk: localhost:2181(CONNECTED) 7] ls -s /root #獲取path的信息,包括子節點列表、個數
[node1, node2]cZxid = 0x22 # 節點創建時的事物id
ctime = Thu Dec 26 22:23:35 CST 2019 # 創建時間
mZxid = 0x24 # 上次修改當前節點的值的事物id
mtime = Thu Dec 26 22:24:24 CST 2019 # 最後修改時間 以前版本是時間戳
pZxid = 0x25 # 最後修改子節點(添加/刪除)的事物id
cversion = 2 # 子節點版本 create/delete -> cversion++
dataVersion = 1 # 數據版本,每set一次就+1
aclVersion = 0 # 權限版本,每次修改+1 (官方文檔寫的aversion實際上是左側值)
ephemeralOwner = 0x0 # 如果當前節點是臨時節點則值爲當前會話id形如0x101c68b09e80001,否則爲0x0
dataLength = 4 # get path的數據長度
numChildren = 2 # 子節點個數
[zk: localhost:2181(CONNECTED) 1] ls -w /root # 監聽/root的子節點(直接子節點)增刪變化(一次性),替代了老版本的ls path true 如果有更改->WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/root
[node1, node2]
[zk: localhost:2181(CONNECTED) 4] ls -R /root # 遞歸展示節點
/root
/root/node1
/root/node2
/root/node1/nodeCh
ls2 path [watch] (deprecated)
get [-s] [-w] path 查看節點數據、監聽節點數據狀態(一次性)
[zk: localhost:2181(CONNECTED) 41] get /root
dasd
[zk: localhost:2181(CONNECTED) 40] get -s /root
dasd # /root的數據
cZxid = 0x22
ctime = Thu Dec 26 22:23:35 CST 2019
mZxid = 0x36
mtime = Thu Dec 26 22:32:55 CST 2019
pZxid = 0x32
cversion = 7
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 5
[zk: localhost:2181(CONNECTED) 42] get -w /root # 監聽/root節點的數據變化 修改刪除
dasd
stat [-w] path 監聽節點數據狀態(一次性)
# stat命令可以獲取節點的屬性,可以監聽其是否存在,值是否變換。
獲取到節點stat信息, 其餘同get 值變化,刪除
printwatches on|off
是否打印watches信息
默認是on
delete [-v version] path
[zk: localhost:2181(CONNECTED) 42] delete /bai # 直接刪除節點
[zk: localhost:2181(CONNECTED) 43] delete -v 0 /node # 指定dataVersion版本刪除,如果版本不對則無法刪除version No is not valid : /bai
deleteall path
# 遞歸刪除,將所有子節點一起刪除
set [-s] [-v version] path data
[zk: localhost:2181(CONNECTED) 0] set /zk "dsadas" # 直接set更新值
[zk: localhost:2181(CONNECTED) 1] set -s /zk dsad # set並返回新的stat
cZxid = 0x800000002
ctime = Mon Dec 30 15:58:01 CST 2019
mZxid = 0xa00000006
mtime = Mon Dec 30 16:55:12 CST 2019
pZxid = 0x800000002
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 2]
[zk: localhost:2181(CONNECTED) 2] set -v 1 /zk asv # -v 需要跟dataVersion匹配才能修改(類似於CAS)
version No is not valid : /zk
[zk: localhost:2181(CONNECTED) 3] set -v 2 /zk asv
[zk: localhost:2181(CONNECTED) 4]
setquota -n|-b val path
配額,未設置爲-1。
-
-n nodes 節點個數(包括本身)
-
-b bytes 數據總長度(包括本身)
[zk: localhost:2181(CONNECTED) 1] setquota -n 2 /bai
setquota 覆蓋問題
set以後只能刪除重新設置,set不會覆蓋重置。
[zk: localhost:2181(CONNECTED) 1] setquota -n 2 /bai
[zk: localhost:2181(CONNECTED) 15] listquota /bai
absolute path is /zookeeper/quota/bai/zookeeper_limits # 配額數據存儲位置
Output quota for /bai count=2,bytes=-1 # 配額限制
Output stat for /bai count=6,bytes=13 # 目前狀態, 超過配額以後不會有任何提示,在java客戶端會有warn
# 重複設置後果如下:
Exception in thread "main" java.lang.IllegalArgumentException: /zk has a parent /zookeeper/quota/zk which has a quota
# -b -n兩種方案只能選一種
[zk: localhost:2181(CONNECTED) 1] setquota -b 5 /zkk
[zk: localhost:2181(CONNECTED) 2] setquota -n 2 /zkk
org.apache.commons.cli.AlreadySelectedException: The option 'n' was specified but an option from this group has already been selected: 'b'
listquota path
[zk: localhost:2181(CONNECTED) 1] listquota /zk
absolute path is /zookeeper/quota/zk/zookeeper_limits
Output quota for /zk count=-1,bytes=3
Output stat for /zk count=1,bytes=0
delquota [-n|-b] path
將count/bytes設置爲-1,刪除zookeeper/quota/path對應的節點以及子節點。
[zk: localhost:2181(CONNECTED) 4] delquota -b /zkk
[zk: localhost:2181(CONNECTED) 5] listquota /zkk
absolute path is /zookeeper/quota/zkk/zookeeper_limits
Output quota for /zkk count=-1,bytes=-1
Output stat for /zkk count=2,bytes=10
delquota刪除後需要重連才能再次創建不同類型的quota
[zk: localhost:2181(CONNECTED) 1] setquota -b 2 /zk
[zk: localhost:2181(CONNECTED) 2] ls -R /
/zk
/zookeeper
Authentication is not valid : /a
[zk: localhost:2181(CONNECTED) 3] ls -R /z
zk zookeeper
[zk: localhost:2181(CONNECTED) 3] ls -R /zookeeper
/zookeeper
/zookeeper/config
/zookeeper/quota
/zookeeper/quota/zk
/zookeeper/quota/zk/zookeeper_limits
/zookeeper/quota/zk/zookeeper_stats
[zk: localhost:2181(CONNECTED) 4] delquota /zk
[zk: localhost:2181(CONNECTED) 5] ls -R /zookeeper
/zookeeper
/zookeeper/config
/zookeeper/quota
[zk: localhost:2181(CONNECTED) 6] setquota -n 2 /zk
org.apache.commons.cli.AlreadySelectedException: The option 'n' was specified but an option from this group has already been selected: 'b'
[zk: localhost:2181(CONNECTED) 7] setquota -b 3 /zk
[zk: localhost:2181(CONNECTED) 8] ls -R /zookeeper
/zookeeper
/zookeeper/config
/zookeeper/quota
/zookeeper/quota/zk
/zookeeper/quota/zk/zookeeper_limits
/zookeeper/quota/zk/zookeeper_stats
添加/刪除/修改新機器到zookeeper集羣
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,…]]] | [-add serverId=host:port1:port2;port3[,…]] [-remove serverId[,…]*]
# 在配置文件裏面必須有reconfigEnabled=true的配置
reconfig -add server.4=localhost:2890:3890:participant;0.0.0.0:2183
reconfig -remove 4 # 刪除4
config [-c] [-w] [-s]
[zk: localhost:2181(CONNECTED) 13] config # 單機狀態沒有
[zk: localhost:2181(CONNECTED) 10] config # 三臺機器集羣狀態下, 第一任Leader無法查看
server.1=192.168.40.128:5520:5620:participant
server.2=192.168.40.131:5521:5621:participant
server.3=192.168.40.132:5522:5622:participant
version=0 # 每增加/刪除/修改一次上述信息,version++
[zk: localhost:2181(CONNECTED) 11] config -c
0 ,,
redo cmdno
沒找到資料, 官網上只有例子裏面的源語列表有個redo cmdno然後就沒有任何資料介紹了。
removewatches path [-c|-d|-a] [-l]
[zk: localhost:2181(CONNECTED) 6] removewatches /zk
[zk: localhost:2181(CONNECTED) 7]
WATCHER::
WatchedEvent state:SyncConnected type:DataWatchRemoved path:/zk
[zk: localhost:2181(CONNECTED) 7]
rmr path(deprecated)-> deleteall
遞歸刪除
sync path
[zk: localhost:2181(CONNECTED) 29] sync /bai
Sync is OK
history
命令歷史