1. 程式人生 > >ZooKeeper完全分散式安裝與配置

ZooKeeper完全分散式安裝與配置

Apache ZooKeeper是一個為分散式應用所設計開源協調服務,其設計目是為了減輕分散式應用程式所承擔的協調任務。可以為使用者提供同步、配置管理、分組和命名服務。

 

1.環境說明

在三臺裝有centos6.5(64位)伺服器上安裝ZooKeeper,官網建議至少3個節點,本次實驗3臺

(主機數:3(要求3+,且必須是奇數,因為ZooKeeper選舉演算法))。

需要提前安裝jdk,選擇版本是jdk-8u91-linux-x64。

  2.配置主機名和ip對映關係  

ZooKeeper叢集所有結點作為一個整體對分散式應用提供服務,因此需要各個節點實現互連,就要知道其它節點主機和ip的對映關係。在每個節點上配置/etc/hosts檔案,新增如下:

主機名 IP地址 JDK ZooKeeper myid
    1.8.0_11 server.1  1
    1.8.0_11 server.2  2
    1.8.0_11 server.3  3
 
 
 

 

1)下載ZooKeeper,選擇穩定版,即stable

下載地址:
http://apache.fayea.com/zookeeper/
2)解壓 
tar -zxvf zookeeper-3.4.8.tar.gz
這裡路徑為 /home/hadoop/zookeeper-3.4.6 3)修改/etc/profile,新增ZooKeeper環境變數 
/home/hadoop/zookeeper-3.4.8
 
 4)新建zoo.cfg並修改  
 
  cp conf/zoo_sample.cfg conf/zoo.cfg 
  
 
  
# The number of milliseconds of each tick
3. 引數說明:  

①tickTime:心跳時間,毫秒為單位。

②initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裡客戶端不是使用者連線 Zookeeper伺服器的客戶端,而是 Zookeeper 伺服器叢集中連線到 Leader 的 Follower 伺服器)初始化連線時最長能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 伺服器還沒有收到客戶端的返回資訊,那麼表明這個客戶端連線失敗。總的時間長度就是 10*2000=20 秒。

③syncLimit:這個配置項標識 Leader 與 Follower 之間傳送訊息,請求和應答時間長度,最長不能超過多少個 tickTime時間長度,總時間長度就是 5*2000=10 秒。

④dataDir:儲存記憶體中資料庫快照的位置。

⑤clientPort:監聽客戶端連線的埠

⑥server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號伺服器;B 是這個伺服器的 ip 地址;C 表示的是這個伺服器與叢集中的 Leader 伺服器交換資訊的埠;D 表示的是萬一叢集中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出一個新的 Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。如果是偽叢集的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 例項通訊埠號不能一樣,所以要給它們分配不同的埠號。

5)dataDir目錄下建立myid檔案,將內容設定為上⑥中A值,用來標識不同的伺服器。

/home/hadoop/zookeeper-3.4.8/data/myid

在節點配置的dataDir指定的目錄下面,建立一個myid檔案,裡面內容為一個數字,用來標識當前主機,$ZOOKEEPER_HOME/conf/zoo.cfg檔案中配置server.X,則myid檔案中就輸入這個數字X。(即在每個節點上新建並設定檔案myid,其內容與zoo.cfg中

id相對應)這裡hadoop01節點為 1

cd /home/hadoop/zookeeper-3.4.8/datatouch myid
echo"1" > myid

4.從master節點分發檔案到其它

1、在master節點的/home/hadoop/目錄下

scp -r zookeeper-3.4.6 [email protected]:~/
scp -r zookeeper-3.4.6 [email protected]:~/
scp -r data [email protected]:~/zookeeper-3.4.8
scp -r data [email protected]:~/zookeeper-3.4.8

2、在hadoop02節點的/home/hadoop/目錄下

vi ./zookeeper-3.4.8/data/myid

修改為 2

3、在hadoop03節點的/home/hadoop/目錄下

vi ./zookeeper-3.4.8/data/myid

修改為 3

1)各節點上啟動 (這裡啟動順序為 hadoop01 >  hadoop02 >  hadoop03 

2)jps檢視程序  
QuorumPeerMain是zookeeper程序,說明啟動正常。
3)檢視狀態  
4)停止ZooKeeper     注意事項: 如果叢集上同時安裝了Hadoop、HBase、Zookeeper,需要注意三者之間有先後啟動順序: 啟動順序: Hadoop——>Zookeeper——>HBase 停止順序 HBase——>Zookeeper——>Hadoop
 
 

啟動叢集

首先啟動hadoop(在hadoop01上start-all.sh),

然後啟動zookeeper叢集(分別在三臺機器上zkServer.sh  start;可以使用zkServer.sh status檢視zk狀態)。

最後在hadoop01上啟動hbase叢集(start-hbase.sh)。