ZooKeeper - 命令列介面 (CLI)



ZooKeeper 命令列介面 (CLI) 用於與 ZooKeeper 叢集進行互動以進行開發。它對於除錯和處理不同的選項非常有用。

要執行 ZooKeeper CLI 操作,首先啟動 ZooKeeper 伺服器(`bin/zkServer.sh start`),然後啟動 ZooKeeper 客戶端(`bin/zkCli.sh`)。客戶端啟動後,您可以執行以下操作:

  • 建立 znode
  • 獲取資料
  • 監視 znode 的變化
  • 設定資料
  • 建立 znode 的子節點
  • 列出 znode 的子節點
  • 檢查狀態
  • 刪除 znode

現在讓我們逐一檢視上面的命令及其示例。

建立 Znode

建立具有給定路徑的 znode。**標誌** 引數指定建立的 znode 是否為臨時性、永續性或順序性。預設情況下,所有 znode 都是永續性的。

  • **臨時性 znode** (標誌: e) 會在會話過期或客戶端斷開連線時自動刪除。

  • **順序性 znode** 保證 znode 路徑的唯一性。

  • ZooKeeper 叢集會在 znode 路徑中新增序列號,並使用 10 位數字進行填充。例如,znode 路徑 `/myapp` 將轉換為 `/myapp0000000001`,下一個序列號將為 `/myapp0000000002`。如果沒有指定標誌,則 znode 被視為**永續性**的。

語法

create /path /data

示例

create /FirstZnode “Myfirstzookeeper-app”

輸出

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

要建立一個**順序性 znode**,請新增**-s 標誌**,如下所示。

語法

create -s /path /data

示例

create -s /FirstZnode second-data

輸出

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

要建立一個**臨時性 znode**,請新增**-e 標誌**,如下所示。

語法

create -e /path /data

示例

create -e /SecondZnode “Ephemeral-data”

輸出

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

請記住,當客戶端連線丟失時,臨時性 znode 將被刪除。您可以嘗試退出 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,必須輸入 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

監視

監視器在指定 znode 或 znode 子節點資料發生變化時顯示通知。您只能在 `get` 命令中設定**監視器**。

語法

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 的變化。

設定資料

設定指定 znode 的資料。完成此設定操作後,您可以使用 `get` CLI 命令檢查資料。

語法

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` 命令中分配了**監視器**選項(如之前的命令),則輸出將類似於以下所示:

輸出

[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。唯一的區別是子 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` (`delete /path`) 命令類似於 `remove` 命令,區別在於它僅適用於沒有子節點的 znode。

廣告
© . All rights reserved.