zookerper單機部署及操作命令詳解

單機模式安裝

準備環境,需要提前安裝好jdk,準備好zookeeper安裝包

上傳到用戶目錄下

在這裏插入圖片描述
安裝工具使用rz命令進行上傳,也可以使用xftp等工具上傳

安裝rz  $sudo yum install -y lrzsz(此命令僅限桌面環境使用ssh工具)

Cd到zookeeper安裝目錄

使用命令解壓
Tar -zxvf ~/zookeeper -C.

在這裏插入圖片描述
解壓完成目錄出現文件夾

$ cd /app/zookeeper-3.4.13/conf/

在這裏插入圖片描述

將zoo_sample.cfg改名爲zoo.cfg
$ cp zoo_sample.cfg zoo.cfg 
$ vim zoo.cfg

在這裏插入圖片描述
修改dataDir爲zookeeper的數據目錄,可以自定義,不要使用系統的/tmp目錄修改dataDir爲zookeeper的數據目錄,可以自定義,不要使用系統的/tmp目錄

配置zookeeper環境變量
$sudo vim /etc/profile.d/zookeeper.sh
export ZOOKEEPER_HOME=/app/zookeeper-3.4.13/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
Source /etc/profile

啓動zookeeper服務器

查看所有命令
$ cd /app/zookeeper-3.4.13/bin/

在這裏插入圖片描述

-zkServer.sh 爲zookeeper服務器啓動命令(.sh爲linux下腳本,.cmd爲windows下腳本)

在這裏插入圖片描述

啓動zookeeper爲zkServer.sh start;停止則爲zkServer.sh stop
啓動默認佔用2181端口;

開啓zookeeper客戶端
-zkCli.sh 同時可以指定連接的服務器 -zkCli.sh -server host
zoo.cfg相關配置信息
① tickTime:CS通信心跳時間
Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。tickTime以毫秒爲單位。
tickTime=2000
② initLimit:LF初始通信時限
集羣中的follower服務器(F)與leader服務器(L)之間初始連接時能容忍的最多心跳數(tickTime的數量)。
initLimit=5
③ syncLimit:LF同步通信時限
集羣中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。
syncLimit=2
④ dataDir:數據文件目錄
Zookeeper保存數據的目錄,默認情況下,Zookeeper將寫數據的日誌文件也保存在這個目錄裏。
dataDir=/home/michael/opt/zookeeper/data
⑤ clientPort:客戶端連接端口
客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
clientPort=2181
⑥ 服務器名稱與地址:集羣信息(服務器編號,服務器地址,LF通信端口,選舉端口)
這個配置項的書寫格式比較特殊,規則如下:
server.N=YYY:A:B
server.1=hadoop4:2888:3888
server.2=hadoop5:2888:3888
server.3=hadoop6:2888:3888
server.A=B:C:D 其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址;C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;D 表示的是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。

Zookeeper的基本命令

在這裏插入圖片描述
在這裏插入圖片描述
從左向右表示,連接服務器的地址,與服務器連接狀態,執行命令的次數
-ls / 使用 ls 命令來查看某個目錄包含的所有文件,例如:
在這裏插入圖片描述
-ls2 / 使用 ls2 命令來查看某個目錄包含的所有文件,與ls不同的是它查看到time、version等信息。
在這裏插入圖片描述
-stat / 列出指定節點的狀態信息,或者說是元數據信息

[zk: localhost:2181(CONNECTED) 3] stat /
# 節點被創建時的事務ID
cZxid = 0x0
# 節點創建時間
ctime = Thu Jan 01 08:00:00 CST 1970
# 最近一次更新時的事務ID
mZxid = 0x0
# 最近一次更新時間
mtime = Thu Jan 01 08:00:00 CST 1970
# 該節點的子節點列表最近一次被修改的事務ID
# 添加、刪除子節點會影響該值
pZxid = 0x100000014
# 子節點版本號
cversion = 1
# 數據版本號
dataVersion = 0
# 訪問控制版本號
aclVersion = 0
# 創建臨時節點的事務ID
# 如果是持久節點,則該值爲0x0
ephemeralOwner = 0x0
# 當前節點的數據長度
dataLength = 0
# 當前節點的子節點數目
numChildren = 3

在這裏插入圖片描述

-create [-s] [-e] path data acl
    s:可選,表示該節點爲順序節點
    e:可選,表示該節點爲臨時節點
    path:節點路徑
    data:節點數據
acl:訪問控制列表

create /c 123 --必須要指定數據,否則無法創建成功
在這裏插入圖片描述

-set path data [version]
    path : 節點路徑
    data : 新數據
    version : 版本號,要麼不寫,要麼和上一次查詢出的版本號一致

該操作會影響節點的mZxid、dataVersion和mtime屬性
Set /a 123
在這裏插入圖片描述

-delete path [version]
path :要刪除的節點的路徑

在這裏插入圖片描述

-setquota -n|-b val path  //對節點增加限制(配額)
    n:表示子節點的最大個數
    b:表示數據值的最大長度
    val:子節點最大個數或數據值的最大長度
    path:節點路徑

在這裏插入圖片描述
-listquota path //列出指定節點的quota
在這裏插入圖片描述
-1 表示不限
-delquota path //刪除路徑的限制
-ACL (Access Control List)和Linux文件系統的中的那個訪問控制列表有點類似
權限主要有:

CREATE : 創建子節點
READ : 獲取節點數據和子節點列表
WRITE : 更新節點數據
DELETE : 刪除子節點
ADMIN : 設置節點ACL的權限

與授權相關的幾個概念:

shchema:權限模式,有IP和digest兩種
ID:授權對象 
schema爲IP時,該值爲具體的IP地址
scheme爲digest時,該值爲 userName:base64(sha1(userName:password))
zookeeper的javaAPI提供了一個工具類org.apache.zookeeper.server.auth.DigestAuthenticationProvider 可以快速生成加密的密文
permission:權限,指的就是上面所說的五種權限
最終的組合爲: schema + ID + permission

-getAcl path //獲取指定節點的ACL信息
在這裏插入圖片描述
-setAcl //設置節點的Acl

setAcl /node_3 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad

在這裏插入圖片描述

-addauth scheme auth
    schema:可取ip或digest
    auth
        schema==digest時爲 userName:password
        schema==ip時爲

註冊會話授權信息

addauth digest hylexus:123456

-history // 歷史執行的命令
在這裏插入圖片描述
-redo //重新執行指定命令編號的歷史命令,命令編號可以通過history查看
在這裏插入圖片描述
歡迎掃碼進羣,期待更優秀的你!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章