1. 程式人生 > >Hadoop完全分散式安裝zookeeper

Hadoop完全分散式安裝zookeeper

D.1安裝 ZooKeeper

D.1.1 下載 ZooKeeper

ZooKeeper 是 Apache 基金會的一個開源、分散式應用程式協調服務,是 Google 的 Chubby一個開源的實現。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括配置維護、域名服務、分散式同步、組服務等。它的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。
ZooKeeper 安裝包可以在其官網的下載頁面下載,下載地址為 http://zookeeper.apache.org/releases.html#download 。 為 加 快 下 載 速 度 可 以 選 擇 中 國 境 內 的 鏡 像 , 選 擇 穩 定 版 本zookeeper.tar.gz 安裝包。

D.1.2 解壓並配置環境變數

下載後把安裝包方放在目錄/root 目錄下,用下面的命令解壓縮 ZooKeeper 安裝包,並把解壓後的目錄移動到/usr/local目錄下:

$cd 
$tar -zxvf zookeeper-3.4.8.tar.gz
$mv zookeeper-3.4.8 zookeeper    //修改名字
$ll /app/soft

為了方便執行 zkServer.sh 指令碼,在叢集中的節點中,需要將 ZooKeeper 的 bin 路徑加入到
/etc/profile 中,設定如下內容(分發到各節點後,在各節點上做同樣設定):

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin //在$Path:後追加$ZOOKEEPER_HOME/bin:即可

設定完畢後使用如下命令使配置生效:

$source /etc/profile

D.1.3 修改 ZooKeeper 的配置檔案

在 ZooKeeper 的根目錄下建立 data 和 log 目錄用於存放工作資料和日誌檔案:

$mkdir /usr/local/zookeeper/data/
$mkdir /usr/local/zookeeper/log/

在 ZooKeeper 配置目錄下預設情況下,不存在 zoo.cfg 檔案,需要複製一份,然後進行修改,
命令如下:

$cd /usr/local/zookeeper/conf/
$cp zoo_sample.cfg zoo.cfg
$sudo vi zoo.cfg

修改 zoo.cfg 配置檔案內容(僅列出重要配置):

#用於存放 ZooKeeper 的資料和日誌

dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/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 含義如下:

  • A 為數字,表示這個是第幾號伺服器。
  • B 表示該伺服器的 IP 地址。
  • C 表示該伺服器與叢集中的 Leader 伺服器交換資訊的埠。
  • D 表示的是萬一叢集中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出
  • 一個新的 Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。

注意:如果是偽叢集的配置方式,由於 B 都是一樣,所以不同的 ZooKeeper 例項通訊埠號不
能一樣,所以要給它們分配不同的埠號。

D.1.4 分發 ZooKeeper 到各節點

使用 scp 命令到 ZooKeeper 分發到 slave1 和 slave2 節點上:

$cd /usr/local/
$scp -r zookeeper [email protected]:/app/soft
$scp -r zookeeper [email protected]:/app/soft


在 dataDir 目錄下建立一個 myid 檔案,然後分別在 myid 檔案中按照 zoo.cfg 檔案的 server.A
中 A 的數值,在不同機器上的該檔案中填寫相應的值,如 master 節點該值為 1、 slave1 節點該
值為 2、 slave2 節點該值為 3。

$cd /usr/local/zookeeper/data
$vi myid

D.2 啟動並驗證

執行命令“zkServer.sh start”將會啟動 ZooKeeper。在此大家需要注意的是,不同節點上的
ZooKeeper 需要單獨啟動。而執行命令“zkServer.sh stop”將會停止 ZooKeeper。使用者可以使用
命令“JPS”檢視 ZooKeeper 是否成功啟動,或執行命令“zkServer.sh status”檢視 ZooKeeper
叢集狀態:

$zkServer.sh start
$zkServer.sh status

圖附錄 D-1 為啟動 Zookeeper 並檢視狀態的顯示頁面。


圖 附錄 D-1 啟動 Zookeeper 並檢視狀態


當第一個節點啟動 ZooKeeper 時由於叢集的其他節點未啟動 ZooKeeper,使用 zkServer.sh
status 命令檢視當前狀態時會提示錯誤。但是隨著後續節點的 ZooKeeper 的陸續啟動,使用 status
檢視狀態時會顯示當前節點的狀態,本次 master 作為了 follower。