Linux環境ZooKeeper安裝配置及使用
- “動物管理員”
- 官網: zookeeper.apache.org/
- 介紹:Apache ZooKeeper致力於開發和維護開源伺服器,實現高度可靠的分散式協 調。
- ZooKeeper是一種集中式服務,用於維護配置資訊,命名,提供分散式同步和提供組服務。所有這些型別的服務都以分散式應用程式的某種形式使用。每次實施它們都需要做很多工作來修復不可避免的錯誤和競爭條件。由於難以實現這些型別的服務,應用程式最初通常會吝嗇它們,這使得它們在變化的情況下變得脆弱並且難以管理。即使正確完成,這些服務的不同實現也會在部署應用程式時導致管理複雜性。
(2)zookeeper作用
- 儲存+監聽
(3)Zookeeper角色
- 主從結構
- 1)Leader領導者->主
- 2)Follower追隨者->從
- 3)zookeeper由一個領導者多個追隨者組成
- **zookeeper叢集中只要有半數以上的節點存活,zookeeper叢集就能正常工作。(高可用)**所以搭建zk叢集最好搭建奇數臺(3,5,11)。
4)zookeeper功能
- 大資料中使用zookeeper業務:
- 1)做統一的配置管理
- 2)做統一的命名服務
- 3)做統一的叢集管理
- 4)做伺服器的動態上下線感知(程式碼)
2. 準備工作
(1)叢集規劃
- hadoop01、hadoop02和hadoop03三個節點上部署ZooKeeper。
- 上傳安裝包zookeeper-3.4.10.tar.gz
- 具備java環境
3. 安裝流程
(1)單節點安裝——hadoop01
- 解壓zookeeper安裝包到目標目錄下: $ tar -zxvf zookeeper-3.4.10.tar.gz -C 目標目錄
- 在zookeeper的根目錄zookeeper-3.4.10/下建立zkData: $ mkdir -p zkData
- 重新命名zookeeper-3.4.10/conf目錄下的zoo_sample.cfg為zoo.cfg作為配置檔案: $ mv zoo_sample.cfg zoo.cfg
(2)配置zoo.cfg檔案
-
修改dataDir路徑為建立的zkData路徑: dataDir=/XXXXXX/zookeeper-3.4.10/zkData
-
增加叢集資訊:
#######################cluster########################## server.1=hadoop01:2888:3888 server.2=hadoop02:2888:3888 server.3=hadoop03:2888:3888 複製程式碼
- 2888:zookeeper服務之間通訊埠
- 3888:zookeeper選舉機制埠
- 2181:zookeeper客戶端用於連線zookeeper伺服器
(3)配置引數解讀
- Server.A=B:C:D。
- A是一個數字,表示這個是第幾號伺服器;
- B是這個伺服器的ip地址;
- C是這個伺服器與叢集中的Leader伺服器交換資訊的埠;
- D是萬一叢集中的Leader伺服器掛了,需要一個埠來重新進行選舉,選出一個新的Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。
- 叢集模式下配置一個檔案myid,這個檔案在dataDir目錄下,這個檔案裡面有一個數據就是A的值,Zookeeper啟動時讀取此檔案,拿到裡面的資料與zoo.cfg裡面的配置資訊比較從而判斷到底是哪個server。
(4)叢集操作
- 在zookeeper-3.4.10/zkData目錄下建立一個myid的檔案: touch myid
- 編輯myid檔案: (注意myid除編號外不能有任何多餘內容,包括空格和空行) vi myid 在檔案中新增與server對應的編號:如1
- 拷貝配置好的zookeeper到其他機器上 scp -r zookeeper-3.4.10/ hadoop02:PWD
- 分別修改myid檔案中內容為2、3
4. 命令列操作
(1)配置環境變數:
- 修改配置檔案: vi /etc/profile
- 增加以下內容: export ZOOKEEPER_HOME=zookeeper安裝路徑 export PATH=ZOOKEEPER_HOME/bin
- 宣告環境變數:source /etc/profile