六、zookeeper安裝

Zookeeper 概述

ZooKeeper是一種分佈式協調服務,用於管理大型主機。在分佈式環境中協調和管理服務是一個複雜的過程。ZooKeeper通過其簡單的架構和API解決了這個問題。ZooKeeper允許開發人員專注於核心應用程序邏輯,而不必擔心應用程序的分佈式特性。

ZooKeeper框架最初是在“Yahoo!"上構建的,用於以簡單而穩健的方式訪問他們的應用程序。 後來,Apache ZooKeeper成爲Hadoop,HBase和其他分佈式框架使用的有組織服務的標準。 例如,Apache HBase使用ZooKeeper跟蹤分佈式數據的狀態。

在進一步深入之前,我們瞭解關於分佈式應用的一兩件事情是很重要的。因此,讓我們開始分佈式應用的概述的快速討論。

分佈式應用

分佈式應用可以在給定時間(同時)在網絡中的多個系統上運行,通過協調它們以快速有效的方式完成特定任務。通常來說,對於複雜而耗時的任務,非分佈式應用(運行在單個系統中)需要幾個小時才能完成,而分佈式應用通過使用所有系統涉及的計算能力可以在幾分鐘內完成。

通過將分佈式應用配置爲在更多系統上運行,可以進一步減少完成任務的時間。分佈式應用正在運行的一組系統稱爲集羣,而在集羣中運行的每臺機器被稱爲節點

分佈式應用有兩部分, Server(服務器)  Client(客戶端) 應用程序。服務器應用程序實際上是分佈式的,並具有通用接口,以便客戶端可以連接到集羣中的任何服務器並獲得相同的結果。 客戶端應用程序是與分佈式應用進行交互的工具。

Zookeeper 概述

分佈式應用的優點

  • 可靠性 - 單個或幾個系統的故障不會使整個系統出現故障。

  • 可擴展性 - 可以在需要時增加性能,通過添加更多機器,在應用程序配置中進行微小的更改,而不會有停機時間。

  • 透明性 - 隱藏系統的複雜性,並將其顯示爲單個實體/應用程序。

分佈式應用的挑戰

  • 競爭條件 - 兩個或多個機器嘗試執行特定任務,實際上只需在任意給定時間由單個機器完成。例如,共享資源只能在任意給定時間由單個機器修改。

  • 死鎖 - 兩個或多個操作等待彼此無限期完成。

  • 不一致 - 數據的部分失敗。

什麼是Apache ZooKeeper?

Apache ZooKeeper是由集羣(節點組)使用的一種服務,用於在自身之間協調,並通過穩健的同步技術維護共享數據。ZooKeeper本身是一個分佈式應用程序,爲寫入分佈式應用程序提供服務。

ZooKeeper提供的常見服務如下 :

  • 命名服務 - 按名稱標識集羣中的節點。它類似於DNS,但僅對於節點。

  • 配置管理 - 加入節點的最近的和最新的系統配置信息。

  • 集羣管理 - 實時地在集羣和節點狀態中加入/離開節點。

  • 選舉算法 - 選舉一個節點作爲協調目的的leader

  • 鎖定和同步服務 - 在修改數據的同時鎖定數據。此機制可幫助你在連接其他分佈式應用程序(如Apache HBase)時進行自動故障恢復。

  • 高度可靠的數據註冊表 - 即使在一個或幾個節點關閉時也可以獲得數據。

分佈式應用程序提供了很多好處,但它們也拋出了一些複雜和難以解決的挑戰。ZooKeeper框架提供了一個完整的機制來克服所有的挑戰。競爭條件和死鎖使用故障安全同步方法進行處理。另一個主要缺點是數據的不一致性,ZooKeeper使用原子性解析。

ZooKeeper的好處

以下是使用ZooKeeper的好處:

  • 簡單的分佈式協調過程

  • 同步 - 服務器進程之間的相互排斥和協作。此過程有助於Apache HBase進行配置管理。

  • 有序的消息

  • 序列化 - 根據特定規則對數據進行編碼。確保應用程序運行一致。這種方法可以在MapReduce中用來協調隊列以執行運行的線程。

  • 可靠性

  • 原子性 - 數據轉移完全成功或完全失敗,但沒有事務是部分的。


1.獲取安裝包 安裝jdk

https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
cd /application/tools/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
cd /application/tools/
tar xf jdk-8u171-linux-x64.tar.gz
ln -s /application/tools/jdk1.8.0_171/ /application/jdk
chown -R root:root /application/tools/jdk1.8.0_171
cat << EOF >>/etc/profile
export JAVA_HOME=/application/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EOF
source /etc/profile


2.解壓並配置

cd /application/tools/
tar xf zookeeper-3.4.10.tar.gz 
ln -s /application/tools/zookeeper-3.4.10 /application/zookeeper
cd /application/zookeeper
mkdir data
mv conf/zoo_sample.cfg conf/zoo.cfg
vim conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/application/zookeeper/data/
clientPort=2181


3.啓動

[root@zookeeper01 zookeeper]# bin/./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

/application/zookeeper/bin/./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /application/zoo
Mode: standalone



4.集羣部署

zookeeper01
cat /apache/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
dataDir=/application/zookeeper/data/
clientPort=2181
server.1=172.16.1.110:2888:3888
server.2=172.16.1.111:2888:3888
server.3=172.16.1.112:2888:3888
echo "1" >/application/zookeeper/data/myid

zookeeper02
同上安裝jdk zookeeper
echo "2" >/application/zookeeper/data/myid
zookeeper03

同上安裝jdk zookeeper
echo "3" >/application/zookeeper/data/myid


5.啓動3臺機器

/application/zookeeper/bin/./zkServer.sh start



6.查看狀態 會選舉出一個leader

zookeeper01
[root@zookeeper01 ~]# /application/zookeeper/bin/./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Mode: follower
zookeeper02
[root@zookeeper02 zookeeper]# /application/zookeeper/bin/./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Mode: leader
zookeeper03
[root@zookeeper03 ~]# /application/zookeeper/bin/./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Mode: follower


7.開機自啓


cat  /server/scripts/start_zk.sh 
export JAVA_HOME=/application/jdk
cd /application/zookeeper/bin/
./zkServer.sh start

cat /etc/rc.local 
/server/scripts/start_zk.sh



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章