Zookeeper完全分布模式——第一章(安裝與配置)

基礎知識:

  • Zookeeper簡介

  1. ZooKeeper 是一個為分散式應用所設計的分布的、開源的協調服務(就如名稱一樣「動物園管理員」)。分散式的應用可以建立在同步、配置管理、分組和命名等服務的更高級別的實現的基礎之上。 ZooKeeper 意欲設計一個易於編程的環境,它的文件系統使用我們所熟悉的目錄樹結構。 ZooKeeper 使用 Java 所編寫,但是支持 Java C 兩種編程語言。

  2. 眾所周知,協調服務非常容易出錯,但是卻很難恢復正常,例如,協調服務很容易處於競態以至於出現死鎖。我們設計 ZooKeeper 的目的是為了減輕分散式應用程序所承擔的協調任務。

相關下載:

zookeeper-3.4.6.tar.gz(下載地址)

Zookeeper安裝與配置

注意:本實驗採用3個節點分別為hadoop中的master、slave1、slave2

1、解壓

相關命令:

  1. sudo tar -xzvf /home/kaede/zookeeper-3.4.6.tar.gz -C .

2、更改文件許可權

相關命令:

  1. sudo chown -R hadoop:hadoop zookeeper-3.4.6/

3、編輯配置文件zoo.cfg

逐個編輯上面每個目錄下conf/zoo.cfg配置文件(注意:配置文件的名稱不要用默認的,因為默認的名稱帶有sample,不會被識別)

相關命令:

  1. cd zookeeper-3.4.6/conf/

  2. cp zoo_sample.cfg zoo.cfg

masterzoo.cfg相關內容:

  1. tickTime=2000initLimit=10 // zookeeper中使用的基本時間單位,毫秒值。

  2. syncLimit=5 //該參數配置leader和follower之間發送消息,請求和應答的最大時間長度。此時該參數設置為2,說明時間限制為2倍tickTime,即4000ms。

  3. dataDir=/home/hadoop/tmp/zk1/data //數據目錄, 可以是任意目錄。

  4. dataLogDir=/home/hadoop/tmp/zk1/log //log目錄,同樣可以是任意目錄。 如果沒有設置該參數,將使用和dataDir相同的設置。

  5. clientPort=2181 //監聽client連接的埠號。

  6. server.1=master:2287:3387 //server.X=A:B:C 其中X是一個數字,表示這是第幾號server。A是該server所在的IP地址或主機號。B配置該server和集群中的leader交換消息所使用的埠。C配置選舉leader時所使用的埠。由於配置的是偽集群模式,所以各個server的B,C參數必須不同。

  7. server.2=slave1:2288:3388

  8. server.3=slave2:2289:3389

slave1zoo.cfg相關內容:

  1. tickTime=2000

  2. initLimit=10

  3. syncLimit=5

  4. dataDir=/home/hadoop/tmp/zk2/data

  5. dataLogDir=/home/hadoop/tmp/zk2/log

  6. clientPort=2182

  7. server.1=master:2287:3387

  8. server.2=slave1:2288:3388

  9. server.3=slave2:2289:3389

slave2zoo.cfg相關內容:

  1. tickTime=2000

  2. initLimit=10

  3. syncLimit=5

  4. dataDir=/home/hadoop/tmp/zk3/data

  5. dataLogDir=/home/hadoop/tmp/zk3/log

  6. clientPort=2183

  7. server.1=master:2287:3387

  8. server.2=slave1:2288:3388

  9. server.3=slave2:2289:3389

注意:因為是在一台機器上模擬集群,所以埠不能重複,這裡用2181~2183,2287~2289,以及3387~3389相互錯開。另外每個zk的instance,都需要設置獨立的數據存儲目錄、日誌存儲目錄,所以dataDirdataLogDir這二個節點對應的目錄,需要手動先創建好。

4、創建dataDir、dataLogDir目錄

相關命令:

  1. mkdir -p /home/hadoop/tmp/zk3/data

  2. mkdir -p /home/hadoop/tmp/zk3/log

5、創建myid文件

相關命令:

  1. echo "1">/home/hadoop/tmp/zk1/data/myid //在master下的命令,對應server.1中的1

  2. echo "2">/home/hadoop/tmp/zk2/data/myid //在slave1下的命令,對應server.2中的2

  3. echo "3">/home/hadoop/tmp/zk3/data/myid //在slave2下的命令,對應server.3中的3

6、配置環境變數(所有節點)

相關命令與內容:

  1. sudo vim ~/.bashrc

  2. ------------------------------內 容------------------------------

  3. export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.6

  4. export PATH=$PATH:HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin

  5. ------------------------------內 容------------------------------

  6. source ~/.bashrc

7、啟動與檢驗

相關命令:

  1. zkServer.sh start

  2. jps //3個節點共有3個QuorumPeerMain進程啟動了,zookeeper啟動成功
  3. echo ruok | nc slave2 2183 //還可以使用zookeeper自帶的四字命令進行啟動成功的測試,輸出imok即zookeeper啟動成功

8、 測試

通過下面的命令來知道各節點的所處於的模式leader或者是follower

相關命令:

  1. zkServer.sh status

推薦閱讀:

阿里巴巴大數據之路-數據挖掘中台
大數據平台與傳統數據倉庫對比分析
知識布局-大數據-基礎組件學習
阿里巴巴大數據之路-數據模型篇
平安產險數據建模大賽,不可不知的N個理由

TAG:大數據 | Hadoop | ZooKeeper |