ZooKeeper安裝部署

?ZooKeeper是一個(gè)分布式的卿堂,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù)连躏,是Google的Chubby一個(gè)開源的實(shí)現(xiàn)洪灯,是Hadoop和Hbase的重要組件毅访。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件掠剑,提供的功能包括:配置維護(hù)蓬推、名字服務(wù)、分布式同步澡腾、組服務(wù)等沸伏。ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯(cuò)的關(guān)鍵服務(wù)糕珊,將簡(jiǎn)單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶毅糟。


1 概述

? ? ? ZooKeeper(動(dòng)物園管理員)红选,顧名思義,是用來(lái)管理Hadoop(大象)姆另、Hive(蜜蜂)喇肋、Pig(小豬)的管理員,同時(shí)Apache HBase迹辐、Apache Solr蝶防、LinkedIn Sensei等眾多項(xiàng)目中都采用了ZooKeeper。

??ZooKeeper是Hadoop的正式子項(xiàng)目明吩,與Hadoop密切相關(guān)但卻沒(méi)有任何依賴间学。它是一個(gè)針對(duì)大型應(yīng)用提供高可用的數(shù)據(jù)管理、應(yīng)用程序協(xié)調(diào)服務(wù)的分布式服務(wù)框架印荔,基于對(duì)Paxos算法的實(shí)現(xiàn)低葫,使該框架保證了分布式環(huán)境中數(shù)據(jù)的強(qiáng)一致性,提供的功能包括:配置維護(hù)仍律、統(tǒng)一命名服務(wù)嘿悬、狀態(tài)同步服務(wù)、集群管理等水泉。

??在分布式應(yīng)用中善涨,由于工程師不能很好地使用鎖機(jī)制,以及基于消息的協(xié)調(diào)機(jī)制不適合在某些應(yīng)用中使用草则,因此需要有一種可靠的躯概、可擴(kuò)展的、分布式的畔师、可配置的協(xié)調(diào)機(jī)制來(lái)統(tǒng)一系統(tǒng)的狀態(tài)娶靡。Zookeeper的目的就在于此。

??根據(jù)ZooKeeper官方文檔和ZooKeeper的作用看锉,ZooKeeper一般有兩種部署方式:

單機(jī)模式:運(yùn)行一個(gè)Zookeeper實(shí)例

分布式模式:在多臺(tái)機(jī)器上分別運(yùn)行Zookeeper實(shí)例用于組成ZooKeeper集群提供服務(wù)

偽分布式模式:在一臺(tái)物理機(jī)上運(yùn)行多個(gè)Zookeeper實(shí)例


2 準(zhǔn)備工作

JDK姿锭,版本大于1.6;

從官網(wǎng)下載最新的穩(wěn)定版伯铣;

ZooKeeper支持在Windows平臺(tái)上運(yùn)行呻此,但是只支持使用Windows作為開發(fā)平臺(tái),不能作為生產(chǎn)平臺(tái)腔寡;

在生產(chǎn)環(huán)境焚鲜,推薦ZooKeeper服務(wù)是最少為3個(gè)的集群,且最好運(yùn)行在獨(dú)立的物理機(jī)上。

??另外忿磅,需要注意的是糯彬,ZooKeeper集群是以宕機(jī)個(gè)數(shù)過(guò)半才會(huì)讓整個(gè)集群宕機(jī)的,所以最好部署奇數(shù)個(gè)節(jié)點(diǎn)葱她。ZooKeeper的單機(jī)模式是沒(méi)有備份的撩扒,如果ZooKeeper宕了,服務(wù)也就停了吨些,所以搓谆,在開發(fā)模式中可以使用單機(jī)模式,但是生成環(huán)境最好使用ZooKeeper集群的分布式模式豪墅。


3 單機(jī)模式

??以單機(jī)模式運(yùn)行ZooKeeper服務(wù)是最簡(jiǎn)單的泉手。因?yàn)閆ooKeeper服務(wù)包含在一個(gè)JAR文件中,所以安裝過(guò)程只要修改一個(gè)配置文件就行了偶器。

將下載好的穩(wěn)定版解壓到某個(gè)目錄斩萌,設(shè)置環(huán)境變量ZOOKEEPER_HOME指向該目錄。然后需要修改基本配置状囱,ZooKeeper的配置文件在conf目錄下术裸,這個(gè)目錄下有zoo_sample.cfglog4j.properties倘是,先將zoo_sample.cfg改名為zoo.cfg(ZooKeeper在啟動(dòng)時(shí)會(huì)找這個(gè)文件作為默認(rèn)配置文件)亭枷,在單機(jī)模式中,可以修改為下面的內(nèi)容:

tickTime=2000

dataDir=/home/lxh/hadoop/data/zookeeper

clientPort=2181

tickTime:這個(gè)時(shí)間是作為 Zookeeper 服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時(shí)間間隔搀崭,也就是每個(gè) tickTime 時(shí)間就會(huì)發(fā)送一個(gè)心跳叨粘。

dataDir:顧名思義就是 Zookeeper 保存數(shù)據(jù)的目錄,默認(rèn)情況下瘤睹,Zookeeper 將寫數(shù)據(jù)的日志文件也保存在這個(gè)目錄里升敲。

clientPort:這個(gè)端口就是客戶端連接 Zookeeper 服務(wù)器的端口,Zookeeper 會(huì)監(jiān)聽這個(gè)端口轰传,接受客戶端的訪問(wèn)請(qǐng)求驴党,通常為2181。

現(xiàn)在使用bin/zkServer.sh腳本啟動(dòng)ZooKeeper:

$ $ZOOKEEPER_HOME/bin/zkServer.sh start

如果顯示下面內(nèi)容获茬,說(shuō)明啟動(dòng)成功:

JMX enabled by default

Using config: /home/lxh/hadoop/zookeeper-3.4.6/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

也可以通過(guò)jps命令查看:

6056 Jps

6009 QuorumPeerMain

QuorumPeerMain就是ZooKeeper的進(jìn)程名港庄。

ZooKeeper的日志信息輸出使用了log4j,默認(rèn)是控制臺(tái)打印恕曲,可以修改$ZOOKEEPER_HOME/conf/log4j.properties來(lái)控制輸出內(nèi)容和位置鹏氧。


4 分布式模式

??Zookeeper不僅可以單機(jī)提供服務(wù),同時(shí)也支持多機(jī)組成集群來(lái)提供服務(wù)佩谣。

??在單機(jī)模式中運(yùn)行ZooKeeper把还,對(duì)于測(cè)試、開發(fā)比較方便。但是在生產(chǎn)環(huán)境中吊履,為了獲得可靠的ZooKeeper服務(wù)安皱,應(yīng)該在一個(gè)集群上部署 ZooKeeper。因?yàn)閆ooKeeper集群宕機(jī)個(gè)數(shù)過(guò)半才會(huì)讓整個(gè)集群宕機(jī)率翅,所以练俐,只要集群中半數(shù)以上的ZooKeeper服務(wù)啟動(dòng)了,那么總的 ZooKeeper服務(wù)將是可用的冕臭。從而也推斷出腺晾,如果有5臺(tái)機(jī)器,可以保證2臺(tái)機(jī)器故障而不影響整個(gè)集群辜贵,ZooKeeper能繼續(xù)正常運(yùn)行悯蝉。(這里又提到關(guān)于集群中機(jī)器的數(shù)量,是因?yàn)槲乙话阆矚g雙數(shù)托慨,在做架構(gòu)設(shè)計(jì)時(shí)鼻由,極易選擇雙數(shù)作為機(jī)器數(shù)。)

??ZooKeeper的分布式模式的安裝配置幾乎跟單機(jī)模式一樣厚棵,只是需要增加幾個(gè)配置蕉世,下面是例子:

tickTime=2000

dataDir=/home/lxh/hadoop/data/zookeeper

clientPort=2181

initLimit=5

syncLimit=2

server.1=zoo1:2888:3888

server.2=zoo2:2888:3888

server.3=zoo3:2888:3888

initLimit:用來(lái)配置Zookeeper接受客戶端(此處指是Zookeeper服務(wù)器集群中連接到Leader的Follower服務(wù)器)初始化連接時(shí)最長(zhǎng)能忍受多少個(gè)心跳時(shí)間間隔數(shù)。超過(guò)這個(gè)時(shí)間婆硬,將被認(rèn)為是連接失敗狠轻。上面設(shè)置的總的時(shí)間長(zhǎng)度是5*2000毫秒。

syncLimit:限定leader與follower之間發(fā)送消息彬犯,請(qǐng)求和應(yīng)答時(shí)間長(zhǎng)度向楼,最長(zhǎng)不能超過(guò)多少個(gè)tickTime的時(shí)間長(zhǎng)度,上面設(shè)置的總時(shí)間長(zhǎng)度是2*2000毫秒谐区。

server.A=B:C:D:其中 A 是一個(gè)數(shù)字湖蜕,表示這個(gè)是第幾號(hào)服務(wù)器;B 是這個(gè)服務(wù)器的 ip 地址宋列;C 表示的是這個(gè)服務(wù)器與集群中的 Leader 服務(wù)器交換信息的端口昭抒;D 表示的是萬(wàn)一集群中的 Leader 服務(wù)器掛了,需要一個(gè)端口來(lái)重新進(jìn)行選舉炼杖,選出一個(gè)新的 Leader灭返,而這個(gè)端口就是用來(lái)執(zhí)行選舉時(shí)服務(wù)器相互通信的端口。如果是偽集群的配置方式嘹叫,由于 B 都是一樣婆殿,所以不同的 Zookeeper 實(shí)例通信端口號(hào)不能一樣,所以要給它們分配不同的端口號(hào)罩扇。

另外婆芦,在集群模式下怕磨,除了修改zoo.cfg配置文件,還要配置一個(gè)文件myid消约,這個(gè)文件在dataDir目錄下肠鲫,這個(gè)文件里面就有一個(gè)數(shù)據(jù)就是A的值,Zookeeper啟動(dòng)時(shí)會(huì)讀取這個(gè)文件或粮,拿到里面的數(shù)據(jù)與zoo.cfg里面的配置信息比較從而判斷到底是哪個(gè)server导饲。

轉(zhuǎn)載自:http://www.howardliu.cn/zookeeper-environment/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市氯材,隨后出現(xiàn)的幾起案子渣锦,更是在濱河造成了極大的恐慌,老刑警劉巖氢哮,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袋毙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡冗尤,警方通過(guò)查閱死者的電腦和手機(jī)听盖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)裂七,“玉大人皆看,你說(shuō)我怎么就攤上這事”沉悖” “怎么了腰吟?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)捉兴。 經(jīng)常有香客問(wèn)我蝎困,道長(zhǎng)录语,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮乱陡,結(jié)果婚禮上溶弟,老公的妹妹穿的比我還像新娘。我一直安慰自己蒲稳,他們只是感情好氮趋,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著江耀,像睡著了一般剩胁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祥国,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天昵观,我揣著相機(jī)與錄音晾腔,去河邊找鬼。 笑死啊犬,一個(gè)胖子當(dāng)著我的面吹牛灼擂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播觉至,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼剔应,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了语御?” 一聲冷哼從身側(cè)響起峻贮,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎应闯,沒(méi)想到半個(gè)月后月洛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孽锥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年嚼黔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惜辑。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唬涧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盛撑,到底是詐尸還是另有隱情碎节,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布抵卫,位于F島的核電站狮荔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏介粘。R本人自食惡果不足惜殖氏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姻采。 院中可真熱鬧雅采,春花似錦、人聲如沸慨亲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刑棵。三九已至巴刻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛉签,已是汗流浹背胡陪。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工茂附, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人督弓。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓营曼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親愚隧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒂阱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容