zookeeper操作命令


首先說明一下如何打開zk服務端和客戶端,cd到zk安裝目錄下,運行bin/zkServer.shstart即可啟動服務端,運行bin/zkCli.sh –server ip:port即可啟動客戶端。

help命令

顯示客戶所支持的所有命令,如:

ZooKeeper -server host:port cmd args

       connecthost:port

       getpath [watch]

       lspath [watch]

       setpath data [version]

       rmrpath

       delquota[-n|-b] path

       quit

       printwatcheson|off

       create[-s] [-e] path data acl

       statpath [watch]

       close

       ls2path [watch]

       history

       listquotapath

       setAclpath acl

       getAclpath

       syncpath

       redocmdno

       addauthscheme auth

       deletepath [version]

       setquota-n|-b val path

connect命令

連接zk服務端,與close命令配合使用可以連接或者斷開zk服務端。

如connect 127.0.0.1:2181

get命令

獲取節點信息,注意節點的路徑皆為絕對路徑,也就是說必要要從/(根路徑)開始。

如get /

hello world

cZxid = 0x0

ctime = Thu Jan 01 08:00:00 CST 1970

mZxid = 0x5

mtime = Thu Apr 27 15:09:00 CST 2017

pZxid = 0xc

cversion = 1

dataVersion = 2

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 11

numChildren = 1

詳解:

hello world為節點數據信息

cZxid節點創建時的zxid

ctime節點創建時間

mZxid節點最近一次更新時的zxid

mtime節點最近一次更新的時間

cversion子節點數據更新次數

dataVersion本節點數據更新次數

aclVersion節點ACL(授權信息)的更新次數

ephemeralOwner如果該節點為臨時節點,ephemeralOwner值表示與該節點綁定的session id. 如果該節點不是臨時節點,ephemeralOwner值為0

dataLength節點數據長度,本例中為hello world的長度

numChildren子節點個數

ls命令

獲取路徑下的節點信息,注意此路徑為絕對路徑,類似於linux的ls命令。

如ls /zookeeper

set命令

設置節點的數據。

如set /zookeeper "hello world"

rmr命令

刪除節點命令,此命令與delete命令不同的是delete不可刪除有子節點的節點,但是rmr命令可以刪除,注意路徑為絕對路徑。

如rmr /zookeeper/znode

delquota命令

刪除配額,-n為子節點個數,-b為節點數據長度。

如delquota –n 2,請參見listquota和setquota命令。

quit命令

退出。

printwatches命令

設置和顯示監視狀態,on或者off。

如printwatches on

create命令

創建節點,其中-s為順序充點,-e臨時節點。

如create /zookeeper/node1"test_create" world:anyone:cdrwa

其中acl處,請參見getAcl和setAcl命令。

stat命令

查看節點狀態信息。如stat /

cZxid = 0x0

ctime = Thu Jan 01 08:00:00 CST 1970

mZxid = 0x1f

mtime = Thu Apr 27 16:05:14 CST 2017

pZxid = 0xc

cversion = 1

dataVersion = 3

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 5

numChildren = 1

與get命令大體相同,請參見get命令。

close命令

斷開客戶端與服務端的連接。

ls2命令

ls2為ls命令的擴展,比ls命令多輸出本節點信息。

如 ls /zookeeper

history命令

列出最近的歷史命令。

如history

0 - ls /

1 - ls /

2 - ls2 /

3 - history

4 - listquota /zookeeper

5 – history

基本格式為:命令ID-命令,可以與redo命令配合使用。

 

listquota命令

顯示配額。

如listquota /zookeeper

absolute path is/zookeeper/quota/zookeeper/zookeeper_limits

Output quota for /zookeepercount=2,bytes=-1

解釋:

/zookeeper節點個數限額為2,長度無限額。

 

setAcl命令

設置節點Acl。

此處重點說一下acl,acl由大部分組成:1為scheme,2為user,3為permission,一般情況下表示為scheme:id:permissions。

其中scheme和id是相關的,下面將scheme和id一起說明。

 

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

綜上,一個簡單使用setAcl命令,則可以為:

setAcl /zookeeper/node1 world:anyone:cdrw

 getAcl命令

獲取節點Acl。

如getAcl /zookeeper/node1

'world,'anyone

: cdrwa

注:可參見setAcl命令。

sync命令

強制同步。

如sync /zookeeper

由於請求在半數以上的zk server上生效就表示此請求生效,那么就會有一些zk server上的數據是舊的。sync命令就是強制同步所有的更新操作。

redo命令

再次執行某命令。

如redo 10

其中10為命令ID,需與history配合使用。

addauth命令

節點認證。

如addauth digest username:password,可參見setAcl命令digest處。

使用方法:

一、通過setAcl設置用戶名和密碼

setAcl pathdigest:username:base64(sha1(password)):crwda

二、認證

addauth digest username:password

delete命令

刪除節點。

如delete /zknode1

setquota命令

設置子節點個數和數據長度配額。

如setquota –n 4 /zookeeper/node 設置/zookeeper/node子節點個數最大為4

setquota –b 100 /zookeeper/node 設置/zookeeper/node節點長度最大為100

轉自https://blog.csdn.net/heihei36/article/details/70871074

轉自https://www.cnblogs.com/yangjinqiang/p/8809400.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM