天天看點

ZooKeeper完全分布式安裝與配置

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

<b>1.環境說明</b>

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

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

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

<b>2.配置主機名和ip映射關系</b>

zookeeper叢集所有結點作為一個整體對分布式應用提供服務,是以需要各個節點實作互連,就要知道其它節點主機和ip的映射關系。在每個節點上配置/etc/hosts檔案,添加如下:

主機名

ip位址

jdk

zookeeper

myid

1.8.0_11

server.1 

1

server.2 

2

server.3 

3

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

這裡路徑為 /home/hadoop/zookeeper-3.4.6

3)修改/etc/profile,添加zookeeper環境變量 

4)建立zoo.cfg并修改 

cp conf/zoo_sample.cfg conf/zoo.cfg

<b></b>

<b>參數說明:  </b>

①ticktime:心跳時間,毫秒為機關。

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

③synclimit:這個配置項辨別 leader 與 follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 ticktime時間長度,總時間長度就是 5*2000=10 秒。

⑤clientport:監聽用戶端連接配接的端口

⑥server.a=b:c:d:其中 a 是一個數字,表示這個是第幾号伺服器;b 是這個伺服器的 ip 位址;c 表示的是這個伺服器與叢集中的 leader 伺服器交換資訊的端口;d 表示的是萬一叢集中的 leader 伺服器挂了,需要一個端口來重新進行選舉,選出一個新的 leader,而這個端口就是用來執行選舉時伺服器互相通信的端口。如果是僞叢集的配置方式,由于 b 都是一樣,是以不同的 zookeeper 執行個體通信端口号不能一樣,是以要給它們配置設定不同的端口号。

5)datadir目錄下建立myid檔案,将内容設定為上⑥中a值,用來辨別不同的伺服器。

<b>/home/hadoop/zookeeper-3.4.8/dat</b><b>a/myid</b>

在節點配置的datadir指定的目錄下面,建立一個myid檔案,裡面内容為一個數字,用來辨別目前主機,$zookeeper_home/conf/zoo.cfg檔案中配置server.x,則myid檔案中就輸入這個數字x。(即在每個節點上建立并設定檔案myid,其内容與zoo.cfg中

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

<b><b>4.</b>從master節點分發檔案到其它節點</b>

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

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

修改為 2

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

修改為 3

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

2)jps檢視程序  

quorumpeermain是zookeeper程序,說明啟動正常。

3)檢視狀态  

4)停止zookeeper  

<b>注意事項:</b>

<b>如果叢集上同時安裝了hadoop、hbase、zookeeper,<b>需要注意三者之間有先後啟動順序:</b></b>

<b>啟動順序:</b>

<b>hadoop——&gt;zookeeper——&gt;hbase</b>

<b>停止順序</b>

<b>hbase——&gt;zookeeper——&gt;hadoop</b>

<b>啟動叢集</b>

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

<b>然後啟動zookeeper叢集(分别在三台機器上zkserver.sh  start;可以使用zkserver.sh status檢視zk狀态)。</b>

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

繼續閱讀