ZooKeeper命令行界面(CLI)用於與ZooKeeper進行交互以用於開發目的。它對於調試頗有用。html
要執行ZooKeeper CLI操做,首先打開你的ZooKeeper服務器(「bin / zkServer.sh start」),而後打開ZooKeeper客戶端(「bin / zkCli.sh」)。一旦客戶端啓動,能夠執行如下操做 -node
如今讓咱們用一個例子逐個看看上面的命令。服務器
建立具備給定路徑的znode。該默認狀況下,全部znode都是持久的。app
create /path /data
Examplespa
create /FirstZnode 「Myfirstzookeeper-app」
[zk: localhost:2181(CONNECTED) 0] create /FirstZnode 「Myfirstzookeeper-app」 Created /FirstZnode
它返回指定znode及關聯數據。包含上次修改數據的時間,修改的位置以及有關數據的信息。命令行
get /path
Example調試
get /FirstZnode
[zk: localhost:2181(CONNECTED) 1] get /FirstZnode 「Myfirstzookeeper-app」 cZxid = 0x7f ctime = Mon Feb 27 16:15:47 HKT 2017 mZxid = 0x7f mtime = Mon Feb 27 16:15:47 HKT 2017 pZxid = 0x7f cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 22 numChildren = 0
當指定的znode或znode的子數據更改時,watch會顯示通知。只能在get命令中設置watch。htm
get /path [watch] 1
Exampleblog
get /FirstZnode 1
[zk: localhost:2181(CONNECTED) 1] get /FirstZnode 1 「Myfirstzookeeper-app」 cZxid = 0x7f ctime = Mon Feb 27 16:15:47 HKT 2017 mZxid = 0x7f mtime = Mon Feb 27 16:15:47 HKT 2017 pZxid = 0x7f cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 22 numChildren = 0
輸出相似於正常的get命令,但它會在後臺等待znode更改。遞歸
設置指定znode的數據。完成此設置操做後,能夠使用get CLI命令檢查數據。
set /path /data
Example
set /SecondZnode Data-updated
[zk: localhost:2181(CONNECTED) 1] get /SecondZnode 「Data-updated」 cZxid = 0x82 ctime = Mon Feb 27 16:15:47 HKT 2017 mZxid = 0x83 mtime = Mon Feb 27 16:15:47 HKT 2017 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 = Mon Feb 27 16:15:47 HKT 2017 mZxid = 0x84 mtime = Mon Feb 27 16:15:47 HKT 2017 pZxid = 0x7f cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 23 numChildren = 0
建立子節點相似於建立新的znode。惟一的區別是子節點znode的路徑也將具備父路徑。
create /parent/path/subnode/path /data
Example
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
Example
ls /MyFirstZnode
[zk: localhost:2181(CONNECTED) 2] ls /MyFirstZnode [mysecondsubnode, myfirstsubnode]
狀態描述指定znode的元數據。它包含詳細信息,如時間戳,版本號,ACL,數據長度和子節點znode。
stat /path
Example
stat /FirstZnode
[zk: localhost:2181(CONNECTED) 1] stat /FirstZnode cZxid = 0x7f ctime = Mon Feb 27 16:15:47 HKT 2017 mZxid = 0x7f mtime = Mon Feb 27 16:15:47 HKT 2017 pZxid = 0x7f cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 23 numChildren = 0
刪除指定的znode並遞歸地刪除其全部子節點。這將發生只有這樣的znode可用。
rmr /path
Example
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。