Zookeeper CLI

Zookeeper CLI

由 xpproen 建立,youj 最後一次修改 2016-12-27

ZooKeeper命令行界面(CLI)用於與ZooKeeper集合進行交互以進行開發。它有助於調試和解決不一樣的選項。node

要執行ZooKeeper CLI操做,首先打開ZooKeeper服務器(「bin/zkServer.sh start」),而後打開ZooKeeper客戶端(「bin/zkCli.sh」)。一旦客戶端啓動,你能夠執行如下操做:
一、建立znode
二、獲取數據
三、監視znode的變化
四、設置數據
五、建立znode的子節點
六、列出znode的子節點
七、檢查狀態
八、移除/刪除znode
如今讓咱們用一個例子逐個瞭解上面的命令。

Zookeeper CLI

由 xpproen 建立,youj 最後一次修改 2016-12-27

ZooKeeper命令行界面(CLI)用於與ZooKeeper集合進行交互以進行開發。它有助於調試和解決不一樣的選項。服務器

要執行ZooKeeper CLI操做,首先打開ZooKeeper服務器(「bin/zkServer.sh start」),而後打開ZooKeeper客戶端(「bin/zkCli.sh」)。一旦客戶端啓動,你能夠執行如下操做:
一、建立znode
二、獲取數據
三、監視znode的變化
四、設置數據
五、建立znode的子節點
六、列出znode的子節點
七、檢查狀態
八、移除/刪除znode
如今讓咱們用一個例子逐個瞭解上面的命令。

建立Znodes

用給定的路徑建立一個znode。flag參數指定建立的znode是臨時的,持久的仍是順序的。默認狀況下,全部znode都是持久的。
當會話過時或客戶端斷開鏈接時, 臨時節點(flag:-e)將被自動刪除。
順序節點保證znode路徑將是惟一的。
ZooKeeper集合將向znode路徑填充10位序列號。例如,znode路徑 /myapp 將轉換爲/myapp0000000001,下一個序列號將爲/myapp0000000002。若是沒有指定flag,則znode被認爲是持久的。

語法

 

create /path /data

示例

create /FirstZnode 「Myfirstzookeeper-app"

輸出

[zk: localhost:2181(CONNECTED) 0] create /FirstZnode 「Myfirstzookeeper-app"
Created /FirstZnode

要建立順序節點,請添加flag:-s,以下所示。app

語法

create -s /path /data

 

示例

create -s /FirstZnode second-data

輸出

[zk: localhost:2181(CONNECTED) 2] create -s /FirstZnode 「second-data"
Created /FirstZnode0000000023

要建立臨時節點,請添加flag:-e ,以下所示。命令行

語法

create -e /path /data

 

示例

create -e /SecondZnode 「Ephemeral-data"

輸出

[zk: localhost:2181(CONNECTED) 2] create -e /SecondZnode 「Ephemeral-data"
Created /SecondZnode

記住當客戶端斷開鏈接時,臨時節點將被刪除。你能夠經過退出ZooKeeper CLI,而後從新打開CLI來嘗試。調試

獲取數據

它返回znode的關聯數據和指定znode的元數據。你將得到信息,例如上次修改數據的時間,修改的位置以及數據的相關信息。此CLI還用於分配監視器以顯示數據相關的通知。遞歸

語法

get /path 

 

示例

get /FirstZnode

輸出

[zk: localhost:2181(CONNECTED) 1] get /FirstZnode
「Myfirstzookeeper-app"
cZxid = 0x7f
ctime = Tue Sep 29 16:15:47 IST 2015
mZxid = 0x7f
mtime = Tue Sep 29 16:15:47 IST 2015
pZxid = 0x7f
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 22
numChildren = 0

要訪問順序節點,必須輸入znode的完整路徑。開發

 

示例

get /FirstZnode0000000023

輸出

[zk: localhost:2181(CONNECTED) 1] get /FirstZnode0000000023
「Second-data"
cZxid = 0x80
ctime = Tue Sep 29 16:25:47 IST 2015
mZxid = 0x80
mtime = Tue Sep 29 16:25:47 IST 2015
pZxid = 0x80
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 13
numChildren = 0

Watch(監視)

當指定的znode或znode的子數據更改時,監視器會顯示通知。你只能在 get 命令中設置watchrem

語法

get /path [watch] 1

 

示例

get /FirstZnode 1

輸出

[zk: localhost:2181(CONNECTED) 1] get /FirstZnode 1
「Myfirstzookeeper-app"
cZxid = 0x7f
ctime = Tue Sep 29 16:15:47 IST 2015
mZxid = 0x7f
mtime = Tue Sep 29 16:15:47 IST 2015
pZxid = 0x7f
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 22
numChildren = 0

輸出相似於普通的 get 命令,但它會等待後臺等待znode更改。<從這裏開始>get

設置數據

設置指定znode的數據。完成此設置操做後,你可使用 get CLI命令檢查數據。io

語法

set /path /data

 

示例

set /SecondZnode Data-updated

輸出

[zk: localhost:2181(CONNECTED) 1] get /SecondZnode 「Data-updated"
cZxid = 0x82
ctime = Tue Sep 29 16:29:50 IST 2015
mZxid = 0x83
mtime = Tue Sep 29 16:29:50 IST 2015
pZxid = 0x82
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x15018b47db00000
dataLength = 14
numChildren = 0

若是你在 get 命令中分配了watch選項(如上一個命令),則輸出將相似以下所示。

輸出

[zk: localhost:2181(CONNECTED) 1] get /FirstZnode 「Mysecondzookeeper-app"

WATCHER: :

WatchedEvent state:SyncConnected type:NodeDataChanged path:/FirstZnode
cZxid = 0x7f
ctime = Tue Sep 29 16:15:47 IST 2015
mZxid = 0x84
mtime = Tue Sep 29 17:14:47 IST 2015
pZxid = 0x7f
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 23
numChildren = 0

建立子項/子節點

建立子節點相似於建立新的znode。惟一的區別是,子znode的路徑也將具備父路徑。

語法

create /parent/path/subnode/path /data

 

示例

create /FirstZnode/Child1 firstchildren

輸出

[zk: localhost:2181(CONNECTED) 16] create /FirstZnode/Child1 「firstchildren"
created /FirstZnode/Child1
[zk: localhost:2181(CONNECTED) 17] create /FirstZnode/Child2 「secondchildren"
created /FirstZnode/Child2

 

列出子項

此命令用於列出和顯示znode的子項。

語法

ls /path

 

示例

ls /MyFirstZnode

輸出

[zk: localhost:2181(CONNECTED) 2] ls /MyFirstZnode
[mysecondsubnode, myfirstsubnode]

檢查狀態

狀態描述指定的znode的元數據。它包含時間戳,版本號,ACL,數據長度和子znode等細項。

語法

stat /path

 

示例

stat /FirstZnode

輸出

[zk: localhost:2181(CONNECTED) 1] stat /FirstZnode
cZxid = 0x7f
ctime = Tue Sep 29 16:15:47 IST 2015
mZxid = 0x7f
mtime = Tue Sep 29 17:14:24 IST 2015
pZxid = 0x7f
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 23
numChildren = 0

移除Znode

移除指定的znode並遞歸其全部子節點。只有在這樣的znode可用的狀況下才會發生。

語法

rmr /path

 

示例

rmr /FirstZnode

輸出

[zk: localhost:2181(CONNECTED) 10] rmr /FirstZnode
[zk: localhost:2181(CONNECTED) 11] get /FirstZnode
Node does not exist: /FirstZnode

刪除(delete/path)命令相似於 remove 命令,除了它只適用於沒有子節點的znode。

相關文章
相關標籤/搜索