1. 程式人生 > >zookeeper客戶端命令詳解

zookeeper客戶端命令詳解

需要 des absolut 時間 its 認證 del 就會 ons

  今天同事突然向看一下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客戶端命令詳解