一、啓動zookeeper集羣
進入zookeeper安裝目錄下的bin目錄內,通過命令啓動
./zkServer.sh start
通過命令查看節點狀態
./zkServer.sh status
通過命令關閉
./zkServer.sh stop
二、連接zookeeper服務
啓動zookeeper服務之後,輸入以下命令,連接到Zookeeper服務,注意:如果沒有配置環境變量在zookeeper的安裝目錄下的bin目錄下執行:
./zkCli.sh -server localhost:2181
連接成功後顯示:
到這裏後我們就很開心了,接下來就可以進行操作了,下面介紹一些zookeeper的shell基本操作
三、 shell基本操作
- 查看節點:ls path [watch] 或 get path [watch] 或 ls2 path [watch]
ls 命令可以列出 Zookeeper 指定節點下的所有子節點,只能查看指定節點下的第一級的所有子節點;
get 命令可以獲取 Zookeeper 指定節點的數據內容和屬性信息
ls2命令可以列出 Zookeeper 指定節點下的所有子節點及屬性信息
[zk: localhost:2181(CONNECTED) 13] get / cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x800000008 cversion = 8 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 2 [zk: localhost:2181(CONNECTED) 14] ls / [zookeeper, test0000000004] [zk: localhost:2181(CONNECTED) 15] ls2 / [zookeeper, test0000000004] cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x800000008 cversion = 8 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 2
- 創建節點:create [-s] [-e] path data acl
其中,-s 或-e 分別指定節點特性,順序或臨時節點,若不指定,則表示持久節點;acl 用來進行權限控制。
- 創建順序節點:
[zk: localhost:2181(CONNECTED) 8] create -s /test 123 Created /test0000000004 [zk: localhost:2181(CONNECTED) 9]
- 創建臨時節點:
[zk: localhost:2181(CONNECTED) 16] create -e /test-tmp 123tmp Created /test-tmp
- 創建永久節點:
[zk: localhost:2181(CONNECTED) 17] create /test-p 123p Created /test-p
- 查看節點內容:get path [watch]
[zk: localhost:2181(CONNECTED) 21] get /test-p 123p cZxid = 0x80000000a ctime = Wed Jul 04 23:57:01 CST 2018 mZxid = 0x80000000a mtime = Wed Jul 04 23:57:01 CST 2018 pZxid = 0x80000000a cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 4 numChildren = 0
- 更改節點信息:set path data [version]
data 就是要更新的新內容,version 表示數據版本。
[zk: localhost:2181(CONNECTED) 22] set /test-p 123456 cZxid = 0x80000000a ctime = Wed Jul 04 23:57:01 CST 2018 mZxid = 0x80000000b mtime = Thu Jul 05 00:01:59 CST 2018 pZxid = 0x80000000a cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 numChildren = 0 [zk: localhost:2181(CONNECTED) 23] get /test-p 123456 cZxid = 0x80000000a ctime = Wed Jul 04 23:57:01 CST 2018 mZxid = 0x80000000b mtime = Thu Jul 05 00:01:59 CST 2018 pZxid = 0x80000000a cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 numChildren = 0
- 刪除節點:delete path [version] 若刪除節點存在子節點,那麼無法刪除該節點,必須先刪除子節點,再刪除父節點。
Rmr path 遞歸刪除節點。
[zk: localhost:2181(CONNECTED) 0] ls / [test-p, zookeeper, test0000000004] [zk: localhost:2181(CONNECTED) 1] delete /test0000000004 [zk: localhost:2181(CONNECTED) 2] ls / [test-p, zookeeper]
[zk: localhost:2181(CONNECTED) 9] ls / [test-p, zookeeper, test] [zk: localhost:2181(CONNECTED) 10] rmr /test [zk: localhost:2181(CONNECTED) 11] ls / [test-p, zookeeper]
- quota
setquota -n|-b val path 對節點增加限制
n:表示子節點的最大個數
b:表示數據值的最大長度
val:子節點最大個數或數據值的最大長度
path:節點路徑
[zk: localhost:2181(CONNECTED) 13] setquota -n 2 /test-p Comment: the parts are option -n val 2 path /test-p
listquota path 列出指定節點的 quota
[zk: localhost:2181(CONNECTED) 14] listquota /test-p absolute path is /zookeeper/quota/test-p/zookeeper_limits Output quota for /test-p count=2,bytes=-1 Output stat for /test-p count=1,bytes=6
子節點個數爲 2,數據長度-1 表示沒限制
delquota [-n|-b] path 刪除 quota
[zk: localhost:2181(CONNECTED) 15] delquota /test-p [zk: localhost:2181(CONNECTED) 16] listquota /test-p absolute path is /zookeeper/quota/test-p/zookeeper_limits quota for /test-p does not exist.
- 其他命令
- history : 列出命令歷史
[zk: localhost:2181(CONNECTED) 17] history 7 - ls / 8 - create /test 111 9 - ls / 10 - rmr /test 11 - ls / 12 - listquota /test-p 13 - setquota -n 2 /test-p 14 - listquota /test-p 15 - delquota /test-p 16 - listquota /test-p 17 - history ZooKeeper -server host:port cmd args stat path [watch] set path data [version] ls path [watch] delquota [-n|-b] path ls2 path [watch] setAcl path acl setquota -n|-b val path history redo cmdno printwatches on|off delete path [version] sync path listquota path rmr path get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port
- redo:該命令可以重新執行指定命令編號的歷史命令,命令編號可以通過history 查看