zookeeper常用命令
- 1. 下載安裝
- 2. 配置說明
- 2.1 配置
- 3. zookeeper的常見命令
- 3.1 server端啟動停止等命令
- 3.2 客戶端連接等命令
- 3.3 客戶端簡單常用命令
- 3.3.1 查看目錄(查看數據結構)
- 3.3.2 刪除目錄
- 3.3.3 創建目錄
- 3.3.4 創建目錄并寫入值 + 查看節點值
- 3.3.5 設置節點值
- 3.3.6 查詢節點
- 3.3.6.1 普通查詢
- 3.3.6.1.1 普通簡單查詢
- 3.3.6.1.2 普通遞歸查詢
- 3.3.6.2 查詢節點的詳細信息
- 3.3.6.3 查詢節點的詳細信息2
- 3.3.7 創建持久序號節點
- 3.3.8 創建臨時節點
- 3.4 權限設置——創建權限節點
- 3.4.1 步驟
- 3.4.2 解釋
- 4. zookeeper 內部的數據模型
- 4.1 數據結構模型圖
- 5.
1. 下載安裝
- 可以參考下面的文章:
zookeeper安裝與使用(win+linux).
2. 配置說明
2.1 配置
- 如下:
# The number of milliseconds of each tick # zookeeper時間配置中的基本單位(毫秒) tickTime=2000# The number of ticks that the initial # synchronization phase can take # 允許 follower 初始化連接到 leader 最大時長,它表示tickTime時間倍數,即:initLimit * tickTime initLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgement # 允許 follower 與 leader 數據同步最大時長,它表示tickTime時間倍數 syncLimit=5# the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. # zookeeper 數據存儲目錄及日志保存目錄(如果沒有指明dataLogDir,則日志也保存到這個文件夾中) # dataDir=/tmp/zookeeper dataDir=/home/susu/soft/softWare/zk/apache-zookeeper-3.5.9-bin/dataDir# the port at which the clients will connect # 對客戶端提供的端口號 clientPort=2181# the maximum number of client connections. # increase this if you need to handle more clients # 單個客戶端與zookeeper最大并發連接數 # maxClientCnxns=60# Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir # 保存數據快照數量,之外的將會被清除 # autopurge.snapRetainCount=3# Purge task interval in hours # Set to "0" to disable auto purge feature # 自動觸發清除時間間隔,單位為小時。默認為0,表示不自動清除 # autopurge.purgeInterval=1
3. zookeeper的常見命令
3.1 server端啟動停止等命令
-
啟動
- 不指定配置文件啟動
./zkServer.sh start #進入bin目錄下,直接執行此命令
- 指定配置文件啟動
./zkServer.sh start ../conf/zoo.cfg
- 不指定配置文件啟動
-
停止
./zkServer.sh stop # 不指定文件 ./zkServer.sh stop ../conf/zoo.cfg # 指定文件
-
查看zk服務器的狀態
./zkServer.sh status
3.2 客戶端連接等命令
- 啟動server之后,連接客戶端,連接客戶端命令
./zkCli.sh./zkCli.sh -server 127.0.0.1:2181
- 退出客戶端命令:
quit # 注意:不加分號
3.3 客戶端簡單常用命令
3.3.1 查看目錄(查看數據結構)
- 如下:
ls /
3.3.2 刪除目錄
- 刪除目錄
delete /aa # 下面沒有子節點的,可以直接用 delete deleteall /手機 # 下面有子節點的,用 deleteall
3.3.3 創建目錄
- 直接創建目錄
create /狗狗 create /狗狗/邊牧 create /狗狗/邊牧/麥兜
3.3.4 創建目錄并寫入值 + 查看節點值
- 如下:
create /駱駝 園區2號 get /駱駝
3.3.5 設置節點值
- 如下:
set /猩猩 園外區-1號
3.3.6 查詢節點
3.3.6.1 普通查詢
3.3.6.1.1 普通簡單查詢
- 如下:
get /駱駝 # 查詢節點值 ls /狗狗/邊牧 # 查詢其下的子節點
3.3.6.1.2 普通遞歸查詢
- 如下:
ls -R /
3.3.6.2 查詢節點的詳細信息
- 查詢含節點值的詳細信息,如下:
get -s /猩猩
- 解釋:
- 第一行顯示:該節點的值
- cZxid:創建節點的事務ID
- ctime:創建節點的時間
- mZxid:修改節點的事務ID
- mtime:修改節點的時間(最近修改時間)
- pZxid:添加和刪除子節點的事務ID
- cversion:cversion是指節點的子節點版本號,也就是說當一個節點的子節點發生變化時,cversion會自增。(即:每新增或刪除一個子節點時,版本?1)
- dataVersion:dataVersion是指節點數據的版本號,當一個節點的數據發生變化時,dataVersion會自增。每更新一次數據(set一次即更新節點值),版本會?1
- aclVersion:此節點的權限版本
- ephemeralOwner:如果當前節點是臨時節點,該值是當前節點所有者的session id。如果節點不是臨時節點,則值為零。
- dataLength:節點內數據的長度(節點值)
- numChildren:該節點的子節點個數
3.3.6.3 查詢節點的詳細信息2
- 查詢含子節點的,可以直接ls ,如下:
ls -s /猩猩
3.3.7 創建持久序號節點
- 加選項
-s
,如下:create -s /bb/bb1
3.3.8 創建臨時節點
- 什么是臨時節點?
臨時節點是在會話結束后,自動被刪除的,通過這個特性,zk可以實現服務注冊與發現的效果。 - 臨時節點和普通節點的不同?臨時節點如何維持心跳呢?
- 在Zookeeper中,臨時節點和持久節點是兩種不同的節點類型。
- 持久節點一旦創建,除非主動調用刪除操作,否則會一直存儲在Zookeeper上。
- 而臨時節點是與客戶端會話綁定的,一旦客戶端會話失效,這個客戶端所創建的所有臨時節點都會被移除。
- 臨時節點的特點是它們的生命周期與客戶端會話相關,當客戶端會話結束時,臨時節點會被自動刪除。而持久節點則會一直存在,直到被顯式刪除。
- 看下面結構圖理解臨時節點和持久節點:
- 創建臨時節點的命令,如下:
create -e /cc # 臨時節點 create -e -s /dd # 臨時序號節點
3.4 權限設置——創建權限節點
3.4.1 步驟
- 首先,使用
addauth digest
命令給當前會話添加一個認證用戶,如下:addauth digest maidou # 不帶密碼addauth digest beita:123456 # 帶密碼
3.4.2 解釋
- 在ZooKeeper中,創建節點權限的命令可以使用以下命令:
其中,path是要創建的節點路徑,data是節點的數據,acl是節點的權限設置。權限設置可以使用以下格式:create \[-s\] \[-e\] path data acl
其中,scheme是權限方案,id是授權的對象,permission是授予的權限。常用的權限包括:scheme:id:permission
- c:創建權限,可以在當前節點下創建子節點
- r:讀權限,可以讀取節點的內容及子節點
- w:寫權限,可以向節點寫入數據
- d:刪除權限,可以刪除節點的子節點
- a:管理權限,可以設置節點的權限
- 所以,創建節點權限的命令可以使用類似以下格式:
create /path data scheme:id:permission
4. zookeeper 內部的數據模型
4.1 數據結構模型圖
- 如下:
- 解釋
- zookeeper 中的數據是保存在節點上的,節點就是znode,多個znode之間構成一顆樹的目錄結構。zookeeper 的數據模型是什么樣子的呢?它很像數據結構當中的樹,也很像文件系統的目錄。
- 樹是由節點組成,zookeeper 的數據存儲也同樣是基于節點,這種節點叫做znode。但是不同于樹的節點,znode的引用方式是路徑引用,類似于文件路徑,如下:
- 這樣的層級結構,讓每一個znode節點擁有唯一的路徑,就像命名空間一樣,對不同信息做出清晰的隔離。