zookeeper客戶端命令詳解

  今天同事忽然向看一下zookeeper中都建立了哪些節點,而我本人對zookeeper的客服端命令瞭解的不多,有些操做居然不知道怎麼用,因而乎就索性整理一下zookeeper客服端命令的使用,並再此記錄一下。java

  想要用zkClient連接zookeeper,首先執行以下命令,鏈接到zookeeper servernode

./zkCli.sh -server localhost:2181

help命令session

help命令用於查詢客服端所支持的所用的命令,執行help,輸入以下:ui

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命令spa

  鏈接zk服務端,與close命令配合使用能夠鏈接或者斷開zk服務端code

connect 127.0.0.1:2181

close命令orm

  close命令用於關閉與服務端的連接server

get命令blog

  get命令用於獲取節點的信息,注意節點的路徑必須是以/開頭的絕對路徑。如get /ip

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命令

  退出客戶端

相關文章
相關標籤/搜索