介紹
ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。
ZooKeeper的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。
ZooKeeper包含一個簡單的原語集, 提供Java和C的接口。
ZooKeeper代碼版本中,提供了分布式獨享鎖、選舉、隊列的接口,代碼在zookeeper-3.4.3\src\recipes。其中分布鎖和隊列有Java和C兩個版本,選舉只有Java版本。
- 外文名
- ZooKeeper
- 類 別
- 分布式系統的可靠協調系統
- 所 屬
- Hadoop的正式子項目
- 特 點
- 高效,可靠
原理
ZooKeeper是以Fast Paxos算法為基礎的,Paxos 算法存在活鎖的問題,即當有多個proposer交錯提交時,有可能互相排斥導致沒有一個proposer能提交成功,而Fast Paxos作了一些優化,通過選舉產生一個leader (領導者),只有leader才能提交proposer,具體算法可見Fast Paxos。因此,要想弄懂ZooKeeper首先得對Fast Paxos有所了解。
ZooKeeper的基本運轉流程:
1、選舉Leader。
2、同步數據。
3、選舉Leader過程中算法有很多,但要達到的選舉標準是一致的。
4、Leader要具有最高的執行ID,類似root權限。
5、集群中大多數的機器得到響應并follow選出的Leader。
從圖中看zookeeper,就是一個協調者
Linux-centos上的安裝與部署
官網下載:
http://zookeeper.apache.org/
- Learn about ZooKeeper by reading the documentation.
- Download ZooKeeper from the release page.
解壓:
tar -xzvf zookeeper-3.5.2-alpha.tar.gz
安裝JDK:
yum install java-1.7.0-openjdk-src.x86_64
配置目錄JAVA_HOME:
vi /etc/profile,打開文件后,追加下面內容
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
運行zookeeper服務:
bin/zkServer.sh start conf/zoo.cfg
結果如圖:
感謝各位對大叔的支持,技術,我們將繼續!
文章列表