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
下載地址:2)解壓
tar -zxvf zookeeper-3.4.8.tar.gz這裡路徑為 /home/hadoop/zookeeper-3.4.6 3)修改/etc/profile,新增ZooKeeper環境變數
/home/hadoop/zookeeper-3.4.84)新建zoo.cfg並修改 cp conf/zoo_sample.cfg conf/zoo.cfg
# The number of milliseconds of each tick
①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)。