大數據集羣環境搭建——ZooKeeper篇

duang,duang,duang~,本期咱們迎來了《大數據集羣環境搭建》的第二篇,ZooKeeper篇。以前一直加班,終於有空騰出時間寫點東西了,呼呼~。看到這裏,不少初學者朋友們可能會有疑問,大數據的學習不是要最開始都要搭建Hadoop環境麼。確實是的,雖然如今Spark風頭正勁,並行計算的性能號稱已經超過了Hadoop MapReduce幾十倍,但Hadoop做爲大數據存儲和計算的「鼻祖」,仍是值得咱們學習的。MapReduce雖然被Spark虐的夠嗆,可是Hadoop還有咱們的HDFS嘛,更別提還有YARN,不少公司的大數據環境中,Spark就是運行在YARN上的。科科,說了這麼多,仍是沒說爲何要先搭建ZooKeeper。其實很簡單,HDFS的HA模式須要用到ZooKeeper的協同。因此,要配置HDFS的HA,就要先配置ZooKeeper啦。
因爲目前沒打算開發ZooKeeper的客戶端程序,ZooKeeper只是爲其餘組件的運行提供協同功能,因此咱們的ZooKeeper的配置並不算複雜。固然,無論配置什麼,得先有服務器不是,因此,若是您尚未配置服務器,那麼請參考我以前的文章大數據集羣環境搭建——服務器篇來配置咱們大數據環境的服務器。另外,JDK顯然也是必不可少的,可是JDK的配置網上的資料臺豐富了,我在這裏就不贅述了。下面就讓咱們正式來搭建ZooKeeper。segmentfault

一、解壓軟件包

我這裏用的是從官網上下載的tar包,版本是3.4.8,你們能夠自行去官網下載。解壓的命令服務器

tar -xzvf /root/packages/zookeeper-3.4.8.tar.gz -C /home/hadoop/deploy/

這樣就會被解壓到 /home/hadoop/deploy目錄下了,固然了,前提是服務器上要有這個目錄。ide

二、配置zoo.cfg

進入ZooKeeper的conf目錄下,通常會自帶一個叫作zoo_sample.cfg的文件,請複製這份文件並更名爲zoo.cfgoop

mv zoo_sample.cfg zoo.cfg

接下來咱們要修改的就是這份zoo.cfg文件。性能

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/hadoop/bigdata/zookeeper
dataLogDir=/home/hadoop/bigdata/zookeeper/zookeeper_log
clientPort=2181

server.1=master1:2888:3888
server.2=master2:2888:3888
server.3=slave1:2888:3888
server.4=slave2:2888:3888
server.5=slave3:2888:3888

接下來咱們來說講這些配置項究竟都是幹什麼的。學習

tickTime

這是ZooKeeper基本的時間單元,後面跟超時等相關的設置會跟這個設置有關。單位是毫秒。大數據

initLimit

follower和leader之間同步數據的用時,這裏的單位是數量,實際時間是 initLimit×tickTime,按照我這裏的配置就是 5*2000=10000 毫秒,也就是10秒。若是你在ZooKeeper中存儲的數據量比較大的話,能夠適當的增大這個值。ui

syncLimit

這個是follower與leader進行對時用的,若是follower和leader時鐘相差太多,就會被集羣拋棄掉。日誌

dataDir

這個目錄用來存儲ZooKeeper在內存中的數據的本地數據快照。由於ZooKeeper被訪問的數據都會在內存中,而這個目錄下存儲的就是那些在內存中存儲的數據的本地快照。code

dataLogDir

這個目錄用來存儲事務日誌。由於ZooKeeper的機制是每次對內存數據進行操做之前都會進行事務日誌的寫入,因此這個目錄存儲的就是這些事務的日誌啦。若是不設定這個參數,默認狀況下事務日誌會存儲在上面設置的dataDir中。ZooKeeper官方是強烈推薦把兩個目錄分開的,最好是放在不一樣的硬盤上,由於這樣能夠避免因爲磁盤IO的爭用而致使ZooKeeper的性能的下降。另外,這個目錄和上面的dataDir目錄都須要手動建立,若是目錄不存在可能致使ZooKeeper啓動出現問題。

clientPort

這個就是ZooKeeper服務開放的監聽客戶端鏈接的端口啦,若是要開發ZooKeeper的客戶端程序的話,鏈接server就要用這個端口。一些會用到ZooKeeper的其餘的大數據的組件,也會在配置文檔中配置要鏈接的ZooKeeper服務的服務器IP地址和端口號,這些咱們在後面其餘組件的篇中會看到。這個端口號通常都會配置爲2181。

server.X

這個配置是讓整個集羣能發現全部的服務器的。X通常都從1開始,有幾臺服務器就是配置到幾。後面要跟着的爲 host:2888:3888,這個host就是你的服務器名。後面跟着兩個端口號,2888是follower鏈接leader用的,而3888則爲leader選舉時用到(當leader掛掉的時候...)。
PS:這個地方有個小問題,這麼配置在有些服務器上啓動時可能會出現不能識別主機,致使鏈接失敗的狀況。因此若是出現了這種狀況,請把當前服務器的host的改爲0.0.0.0。好比在master1服務器中爲:

server.1=0.0.0.0:2888:3888
server.2=master2:2888:3888
server.3=slave1:2888:3888
server.4=slave2:2888:3888
server.5=slave3:2888:3888

在master2服務器中爲:

server.1=master1:2888:3888
server.2=0.0.0.0:2888:3888
server.3=slave1:2888:3888
server.4=slave2:2888:3888
server.5=slave3:2888:3888

其餘服務器請自行配置。

三、設置myid

配置完了上面的zoo.cfg文件,還有一件事要作,就是設置myid。這個文件中只有一個數字,這個數字即爲當前服務器的惟一標識。按照上面的server.X配置,這個myid文件中的數字要和X保持一直,好比在master1中這個數字就是1,在master2中這個數字就是2,slave1中就是3,以此類推。文件的位置,就在咱們上面配置的dataDir目錄中,能夠用如下命令建立:

echo "1" > dataDir/myid

注意這裏千萬不要配錯了,否則服務沒法正常啓動。

四、啓動ZooKeeper

至此,全部基本的配置都完成了。若是你們想看更詳細的配置,請去官網上瀏覽 Administrator's Guide
那咱們來驗證一下咱們的ZooKeeper是否部署成功。
首先把咱們的整個ZooKeeper目錄複製到其餘服務器上,可使用 scp 命令來完成這個操做。
而後在每臺服務器的ZooKeeper目錄下分別執行:

bin/zkServer.sh start

這樣就能啓動全部的ZooKeeper節點,注意必定要每一個節點分別啓動。這個過程也能夠寫Shell腳原本簡化操做。
查看ZooKeeper狀態:

bin/zdServer.sh status

能看到,全部節點中有一個是leader,其餘爲follower。說明啓動成功。

相關文章
相關標籤/搜索