- ZooKeeper 教程
- ZooKeeper – 首頁
- ZooKeeper – 概述
- ZooKeeper - 基礎知識
- ZooKeeper – 工作流程
- ZooKeeper – 領導者選舉
- ZooKeeper – 安裝
- ZooKeeper - 命令列介面 (CLI)
- ZooKeeper – API
- ZooKeeper – 應用
- ZooKeeper 有用資源
- ZooKeeper – 快速指南
- ZooKeeper – 有用資源
- ZooKeeper – 討論
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。