Zookeeper完全分布模式——第一章(安裝與配置)
05-05
基礎知識:
- Zookeeper簡介
- ZooKeeper 是一個為分散式應用所設計的分布的、開源的協調服務(就如名稱一樣「動物園管理員」)。分散式的應用可以建立在同步、配置管理、分組和命名等服務的更高級別的實現的基礎之上。 ZooKeeper 意欲設計一個易於編程的環境,它的文件系統使用我們所熟悉的目錄樹結構。 ZooKeeper 使用 Java 所編寫,但是支持 Java 和 C 兩種編程語言。
- 眾所周知,協調服務非常容易出錯,但是卻很難恢復正常,例如,協調服務很容易處於競態以至於出現死鎖。我們設計 ZooKeeper 的目的是為了減輕分散式應用程序所承擔的協調任務。
相關下載:
zookeeper-3.4.6.tar.gz(下載地址)
Zookeeper安裝與配置
注意:本實驗採用3個節點分別為hadoop中的master、slave1、slave2
1、解壓
相關命令:
- sudo tar -xzvf /home/kaede/zookeeper-3.4.6.tar.gz -C .
2、更改文件許可權
相關命令:
- sudo chown -R hadoop:hadoop zookeeper-3.4.6/
3、編輯配置文件zoo.cfg
逐個編輯上面每個目錄下conf/zoo.cfg配置文件(注意:配置文件的名稱不要用默認的,因為默認的名稱帶有sample,不會被識別)
相關命令:
- cd zookeeper-3.4.6/conf/
- cp zoo_sample.cfg zoo.cfg
master下zoo.cfg的相關內容:
- tickTime=2000initLimit=10 // zookeeper中使用的基本時間單位,毫秒值。
- syncLimit=5 //該參數配置leader和follower之間發送消息,請求和應答的最大時間長度。此時該參數設置為2,說明時間限制為2倍tickTime,即4000ms。
- dataDir=/home/hadoop/tmp/zk1/data //數據目錄, 可以是任意目錄。
- dataLogDir=/home/hadoop/tmp/zk1/log //log目錄,同樣可以是任意目錄。 如果沒有設置該參數,將使用和dataDir相同的設置。
- clientPort=2181 //監聽client連接的埠號。
- server.1=master:2287:3387 //server.X=A:B:C 其中X是一個數字,表示這是第幾號server。A是該server所在的IP地址或主機號。B配置該server和集群中的leader交換消息所使用的埠。C配置選舉leader時所使用的埠。由於配置的是偽集群模式,所以各個server的B,C參數必須不同。
- server.2=slave1:2288:3388
- server.3=slave2:2289:3389
slave1下zoo.cfg的相關內容:
- tickTime=2000
- initLimit=10
- syncLimit=5
- dataDir=/home/hadoop/tmp/zk2/data
- dataLogDir=/home/hadoop/tmp/zk2/log
- clientPort=2182
- server.1=master:2287:3387
- server.2=slave1:2288:3388
- server.3=slave2:2289:3389
slave2下zoo.cfg的相關內容:
- tickTime=2000
- initLimit=10
- syncLimit=5
- dataDir=/home/hadoop/tmp/zk3/data
- dataLogDir=/home/hadoop/tmp/zk3/log
- clientPort=2183
- server.1=master:2287:3387
- server.2=slave1:2288:3388
- server.3=slave2:2289:3389
注意:因為是在一台機器上模擬集群,所以埠不能重複,這裡用2181~2183,2287~2289,以及3387~3389相互錯開。另外每個zk的instance,都需要設置獨立的數據存儲目錄、日誌存儲目錄,所以dataDir、dataLogDir這二個節點對應的目錄,需要手動先創建好。
4、創建dataDir、dataLogDir目錄
相關命令:
- mkdir -p /home/hadoop/tmp/zk3/data
- mkdir -p /home/hadoop/tmp/zk3/log
5、創建myid文件
相關命令:
- echo "1">/home/hadoop/tmp/zk1/data/myid //在master下的命令,對應server.1中的1
- echo "2">/home/hadoop/tmp/zk2/data/myid //在slave1下的命令,對應server.2中的2
- echo "3">/home/hadoop/tmp/zk3/data/myid //在slave2下的命令,對應server.3中的3
6、配置環境變數(所有節點)
相關命令與內容:
- sudo vim ~/.bashrc
- ------------------------------內 容------------------------------
- export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.6
- export PATH=$PATH:HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin
- ------------------------------內 容------------------------------
- source ~/.bashrc
7、啟動與檢驗
相關命令:
- zkServer.sh start
- jps //3個節點共有3個QuorumPeerMain進程啟動了,zookeeper啟動成功
- echo ruok | nc slave2 2183 //還可以使用zookeeper自帶的四字命令進行啟動成功的測試,輸出imok即zookeeper啟動成功
8、 測試
通過下面的命令來知道各節點的所處於的模式是leader或者是follower
相關命令:
- zkServer.sh status
推薦閱讀:
※阿里巴巴大數據之路-數據挖掘中台
※大數據平台與傳統數據倉庫對比分析
※知識布局-大數據-基礎組件學習
※阿里巴巴大數據之路-數據模型篇
※平安產險數據建模大賽,不可不知的N個理由