附錄D 安裝ZooKeeper
ZooKeeper是Apache基金會的一個開源、分布式應用程序協調服務,是Google的Chubby一個開源的實現。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。它的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。
ZooKeeper安裝包可以在其官網下載頁面下載,下載地址如下,為加快下載速度可以選擇中國境內的鏡像,選擇穩定版本zookeeper-3.4.8.tar.gz安裝包。
http://zookeeper.apache.org/releases.html#download
下載后把安裝包方放在目錄/home/spark/work目錄下,用下面命令解壓縮ZooKeeper安裝包,并把解壓后的目錄移動到/app/soft目錄下:
$cd /home/spark/work/
$tar -zxf zookeeper-3.4.8.tar.gz
$mv zookeeper-3.4.8 /app/soft
$ll /app/soft
為了方便運行zkServer.sh腳本,在集群中的節點中,需要將ZooKeeper的bin路徑加入到/etc/profile中,設置如下內容(分發到各節點后,在各節點上做同樣設置):
export ZOOKEEPER_HOME=/app/soft/zookeeper-3.4.8
export PATH=$PATH:$ZOOKEEPER_HOME/bin
設置完畢后使用如下命令使配置生效:
$source /etc/profile
在ZooKeeper的根目錄下建立data和log目錄用于存放工作數據和日志文件:
$mkdir /app/soft/zookeeper-3.4.8/data/
$mkdir /app/soft/zookeeper-3.4.8/log/
在ZooKeeper配置目錄下默認情況下,不存在在zoo.cfg文件,需要復制一份,然后進行修改,命令如下:
$cd /app/soft/zookeeper-3.4.8/conf/
$cp zoo_sample.cfg zoo.cfg
$sudo vi zoo.cfg
修改zoo.cfg配置文件內容(僅列出重要配置):
#用于存放ZooKeeper的數據和日志
dataDir=/app/soft/zookeeper-3.4.8/data
dataLogDir=/app/soft/zookeeper-3.4.8/log
//外部客戶端連接端口號,在Kafka中將使用該端口號
clientPort=2181
//ZooKeeper集群相關配置信息
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
配置中server.A=B:C:D含義如下
lA為數字,表示這個是第幾號服務器;
lB 表示該服務器的 ip 地址;
lC 表示該服務器與集群中的 Leader 服務器交換信息的端口;
lD 表示的是萬一集群中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。
如果是偽集群的配置方式,由于 B 都是一樣,所以不同的 ZooKeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。
使用scp命令到ZooKeeper分發到slave1和slave2節點上:
$cd /app/soft/
$scp -r zookeeper-3.4.8 spark@slave1:/app/soft
$scp -r zookeeper-3.4.8 spark@slave2:/app/soft
在dataDir目錄下創建一個myid文件,然后分別在myid文件中按照zoo.cfg文件的server.A中A的數值,在不同機器上的該文件中填寫相應的值,如master節點該值為1、slave1節點該值為2、slave2節點該值為3。
$cd /app/soft/zookeeper-3.4.8/data
$vi myid
執行命令“zkServer.sh start”將會啟動ZooKeeper。在此大家需要注意的是,不同節點上的ZooKeeper需要單獨啟動。而執行命令“zkServer.sh stop”將會停止ZooKeeper。可以使用命令“JPS”查看ZooKeeper是否成功啟動,或執行命令“zkServer.sh status”查看ZooKeeper集群狀態:
$zkServer.sh start
$zkServer.sh status
圖 附錄D?1 啟動Zookeeper并查看狀態
當第一個節點啟動ZooKeeper時由于集群的其他節點未啟動ZooKeeper,使用zkServer.sh status命令查看當前狀態時會提示錯誤。但是隨著后續節點的ZooKeeper的陸續啟動,使用status查看狀態時會顯示當前節點的狀態,本次master作為了follower。


浙公網安備 33010602011771號