Zookeeper CLI

2018-10-28 14:08 更新

ZooKeeper命令行界面(CLI)用于與ZooKeeper集合進(jìn)行交互以進(jìn)行開發(fā)。它有助于調(diào)試和解決不同的選項(xiàng)。

要執(zhí)行ZooKeeper CLI操作,首先打開ZooKeeper服務(wù)器(“bin/zkServer.sh start”),然后打開ZooKeeper客戶端(“bin/zkCli.sh”)。一旦客戶端啟動(dòng),你可以執(zhí)行以下操作:
1、創(chuàng)建znode
2、獲取數(shù)據(jù)
3、監(jiān)視znode的變化
4、設(shè)置數(shù)據(jù)
5、創(chuàng)建znode的子節(jié)點(diǎn)
6、列出znode的子節(jié)點(diǎn)
7、檢查狀態(tài)
8、移除/刪除znode
現(xiàn)在讓我們用一個(gè)例子逐個(gè)了解上面的命令。

創(chuàng)建Znodes

用給定的路徑創(chuàng)建一個(gè)znode。flag參數(shù)指定創(chuàng)建的znode是臨時(shí)的,持久的還是順序的。默認(rèn)情況下,所有znode都是持久的。
當(dāng)會(huì)話過期或客戶端斷開連接時(shí),臨時(shí)節(jié)點(diǎn)(flag:-e)將被自動(dòng)刪除。
順序節(jié)點(diǎn)保證znode路徑將是唯一的。
ZooKeeper集合將向znode路徑填充10位序列號(hào)。例如,znode路徑 /myapp 將轉(zhuǎn)換為/myapp0000000001,下一個(gè)序列號(hào)將為/myapp0000000002。如果沒有指定flag,則znode被認(rèn)為是持久的。

語法

create /path /data

示例

create /FirstZnode “Myfirstzookeeper-app"

輸出

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

要?jiǎng)?chuàng)建順序節(jié)點(diǎn),請(qǐng)?zhí)砑觙lag:-s,如下所示。

語法

create -s /path /data

示例

create -s /FirstZnode second-data

輸出

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

要?jiǎng)?chuàng)建臨時(shí)節(jié)點(diǎn),請(qǐng)?zhí)砑觙lag:-e ,如下所示。

語法

create -e /path /data

示例

create -e /SecondZnode “Ephemeral-data"

輸出

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

記住當(dāng)客戶端斷開連接時(shí),臨時(shí)節(jié)點(diǎn)將被刪除。你可以通過退出ZooKeeper CLI,然后重新打開CLI來嘗試。

獲取數(shù)據(jù)

它返回znode的關(guān)聯(lián)數(shù)據(jù)和指定znode的元數(shù)據(jù)。你將獲得信息,例如上次修改數(shù)據(jù)的時(shí)間,修改的位置以及數(shù)據(jù)的相關(guān)信息。此CLI還用于分配監(jiān)視器以顯示數(shù)據(jù)相關(guān)的通知。

語法

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

要訪問順序節(jié)點(diǎn),必須輸入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(監(jiān)視)

當(dāng)指定的znode或znode的子數(shù)據(jù)更改時(shí),監(jiān)視器會(huì)顯示通知。你只能在 get 命令中設(shè)置watch。

語法

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 命令,但它會(huì)等待后臺(tái)等待znode更改。<從這里開始>

設(shè)置數(shù)據(jù)

設(shè)置指定znode的數(shù)據(jù)。完成此設(shè)置操作后,你可以使用 get CLI命令檢查數(shù)據(jù)。

語法

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選項(xiàng)(如上一個(gè)命令),則輸出將類似如下所示。

輸出

[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

創(chuàng)建子項(xiàng)/子節(jié)點(diǎn)

創(chuàng)建子節(jié)點(diǎn)類似于創(chuàng)建新的znode。唯一的區(qū)別是,子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

列出子項(xiàng)

此命令用于列出和顯示znode的子項(xiàng)。

語法

ls /path

示例

ls /MyFirstZnode

輸出

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

檢查狀態(tài)

狀態(tài)描述指定的znode的元數(shù)據(jù)。它包含時(shí)間戳,版本號(hào),ACL,數(shù)據(jù)長(zhǎng)度和子znode等細(xì)項(xiàng)。

語法

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并遞歸其所有子節(jié)點(diǎn)。只有在這樣的znode可用的情況下才會(huì)發(fā)生。

語法

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 命令,除了它只適用于沒有子節(jié)點(diǎn)的znode。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)