單機模式安裝
準備環境,需要提前安裝好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查看
歡迎掃碼進羣,期待更優秀的你!