zookeeper 是什么
zookeeper 是 hadoop 下的一個(gè)子項(xiàng)目,是一個(gè)針對(duì)大型分布式系統(tǒng)的可靠的協(xié)調(diào)系統(tǒng) 。
zookeeper 提供了 配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù) 等功能。
zookeeper 運(yùn)作原理
zookeeper 通過(guò) Zab(Zookeeper Atomic Broadcast) 協(xié)議保持集群間的數(shù)據(jù)一致性。
Zab 協(xié)議包括兩個(gè)階段:Leader Election 和 Atomic Broadcast 。
- Leader Election
此階段集群內(nèi)會(huì)選舉出一個(gè) leader,余下機(jī)器則會(huì)成為 follower。leader 會(huì)通過(guò) broadcast 通知所有 follower ,當(dāng)大部分機(jī)(> 1/2)器完成了與 leader 的狀態(tài)同步后,Leader Election 階段結(jié)束。
當(dāng) leader 失去大多數(shù) follower 時(shí),集群會(huì)再次進(jìn)入 Leader Election 階段并選舉出新的 leader ,使集群回到正確的狀態(tài)。
- Atomic Broadcast
- 此階段 leader 會(huì)通過(guò) broadcast 與 follower 通訊,保證 leader 與 follower 具有相同的系統(tǒng)狀態(tài)。
zookeeper 搭建
搭建java運(yùn)行環(huán)境
可參考我的另一篇筆記 java運(yùn)行環(huán)境配置下載 zookeeper
下載地址 : http://mirror.bjtu.edu.cn/apache/zookeeper/stable
這是國(guó)內(nèi)的鏡像源 , 也可以到官網(wǎng)下載 , 此筆記編寫(xiě)時(shí) , zookeeper 穩(wěn)定版本為 3.4.6
參考命令 :
wget http://mirror.bjtu.edu.cn/apache/zookeeper/stable/zookeeper-3.4.6.tar.gz
- 解壓 zookeeper:
參考命令:
tar -xf zookeeper-3.4.6.tar.gz
cp zookeeper-3.4.6 /usr/local/zookeeper
rm -f zookeeper-3.4.6.tar.gz
- 配置 zookeeper:
參考命令
#創(chuàng)建相應(yīng)目錄,注意目錄的權(quán)限
mkdir /tmp/zookeeper
mkdir /tmp/zookeeper/data
mkdir /tmp/zookeeper/log
cp /usr/local/zookeeper/conf/zoo_sample.cfg zoo.cfg
vim /usr/local/zookeeper/conf/zoo.cfg
參考配置
tickTime=2000 #zookeeper 服務(wù)器心跳時(shí)間,單位為ms
initLimit=10 #投票選舉新 leader 的初始化時(shí)間
syncLimit=5 #leader 與 follower 心跳檢測(cè)最大容忍時(shí)間,響應(yīng)超過(guò) tickTime * syncLimit,認(rèn)為 leader 丟失該 follower
clientPort=2181 #端口
dataDir=/tmp/zookeeper/data #數(shù)據(jù)目錄
dataLogDir=/tmp/zookeeper/log #日志目錄
- 配置zookeeper日志
參考命令:
vim /usr/local/zookeeper/bin/zkEnv.sh
參考配置:
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/tmp/zookeeper/log"
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi
- 配置環(huán)境變量 :
參考命令:
vim /etc/profile
新增如下配置:
export ZOOKEEPER_INSTALL=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
- 運(yùn)行zookeeper
至此,zookeeper搭建完畢,可以嘗試運(yùn)行zookeeper
參考命令:
cd /usr/local/zookeeper
bin/zkServer.sh start conf/zoo.cfg #啟動(dòng)zookeeper服務(wù),讀取配置文件為conf/zoo.cfg
bin/zkServer.sh status conf/zoo.cfg #查看指定配置的zookeeper的運(yùn)行狀態(tài)
可以看到當(dāng)前 zookeeper 運(yùn)行狀態(tài)為 Mode:standalone , 至此,zookeeper單機(jī)運(yùn)行配置完成。