Zookeeper源語(客戶端命令)集合(3.5.6)

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

命令歷史

addauth scheme auth, getAcl [-s] path , setAcl [-s] [-v version] [-R] path acl 見權限篇

connect host:port

close (關閉連接但不退出,可用connect命令重連當前,或用connect host:port 連接其他)

quit (關閉連接且退出)

發佈了16 篇原創文章 · 獲贊 28 · 訪問量 2918
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章