zookeeper的工作機(jī)制宏邮、應(yīng)用場景泽示,及實(shí)際部署使用

1、zookeeper是什么蜜氨?

zookeeper是一個(gè)分布式服務(wù)框架械筛,基于文件系統(tǒng)+通知機(jī)制,解決分布式應(yīng)用的數(shù)據(jù)管理和協(xié)調(diào)問題飒炎,如:統(tǒng)一命名埋哟、狀態(tài)同步、集群管理厌丑、應(yīng)用配置項(xiàng)管理等定欧。

2、zookeeper工作機(jī)制

Zookeeper是基于觀察者模式設(shè)計(jì)的管理框架怒竿,它負(fù)責(zé)存儲(chǔ)和管理大家都關(guān)心的數(shù)據(jù)砍鸠,然后接受被觀察者的注冊,一旦這些數(shù)據(jù)的狀態(tài)發(fā)生變化耕驰,Zookeeper負(fù)責(zé)通知已注冊的被觀察者做出反應(yīng)爷辱。

雖然Zookeeper集群在配置時(shí),并不指定Master和Slave朦肘,但是在集群工作時(shí)饭弓,通過內(nèi)部選舉機(jī)制產(chǎn)生一個(gè)Leader,其他節(jié)點(diǎn)作為Follower媒抠。集群需要半數(shù)以上節(jié)點(diǎn)存活才可用弟断,所以適合安裝奇數(shù)臺(tái)server。

每個(gè)server保存一份相同的數(shù)據(jù)副本趴生,client無論連接到哪個(gè)server阀趴,數(shù)據(jù)都是一致的,同一個(gè)client的更新請求苍匆,按其發(fā)送順序依次執(zhí)行刘急,一次數(shù)據(jù)更新要么成功,要么失敗浸踩,在一定時(shí)間范圍內(nèi)叔汁,client能讀到最新數(shù)據(jù),保證數(shù)據(jù)一定的實(shí)時(shí)性。

3据块、應(yīng)用場景

1码邻、Hadoop的應(yīng)用
Hadoop采用排他鎖,來完成master的選舉瑰钮,控制同時(shí)只有一個(gè)active狀態(tài)的namenode和resourcemanager在工作冒滩。在yarn上跑任務(wù)時(shí),所有任務(wù)啟動(dòng)過程中都會(huì)把任務(wù)信息寫入zookeeper里面浪谴,假如執(zhí)行中active狀態(tài)的resourcemanager突然宕機(jī)了,standby狀態(tài)的節(jié)點(diǎn)轉(zhuǎn)換成active后因苹,會(huì)接管掛之前的任務(wù)苟耻,這樣resourcemanager主從的切換不會(huì)影響正在yarn運(yùn)行的任務(wù)。

2扶檐、hbase的應(yīng)用
zookeeper是hbase集群的"協(xié)調(diào)器"凶杖,hbase regionserver啟動(dòng)時(shí)會(huì)向zookeeper注冊,提供hbase regionserver的狀態(tài)信息(是否在線)款筑,HMaster通過watcher監(jiān)聽regionserver的存活情況智蝠。在HMaster啟動(dòng)時(shí),會(huì)將hbase系統(tǒng)表-ROOT- 加載到zookeeper cluster奈梳,通過zookeeper cluster可以獲取杈湾,當(dāng)前系統(tǒng)表.META.存儲(chǔ)的對應(yīng)的regionserver信息。

3攘须、kafka的應(yīng)用
kafka通過zookeeper做集群的管理漆撞,所有的broker在啟動(dòng)時(shí),會(huì)在zookeeper里面創(chuàng)建Znode于宙,通過事件監(jiān)聽的機(jī)制浮驳,在各個(gè)broker之間同步其他broker的存活狀態(tài)。在新topic創(chuàng)建時(shí)捞魁,kafka會(huì)把topic的name至会、partition、leader谱俭、topic分布信息等寫入zookeeper奉件,當(dāng)broker退出時(shí),會(huì)觸發(fā)zookeeper更新其對應(yīng)topic分區(qū)的isr列表旺上,并決定是否需要做消費(fèi)者的負(fù)載均衡瓶蚂。在新消費(fèi)者注冊時(shí),會(huì)在zookeeper中創(chuàng)建Znode保存信息宣吱,設(shè)置消費(fèi)者參數(shù)enable.auto.commit為true窃这,應(yīng)用消費(fèi)kafka數(shù)據(jù)時(shí)會(huì)自動(dòng)更新offset信息。

4、hive的應(yīng)用
hiveserver2使用zookeeper共享鎖進(jìn)行選舉杭攻,當(dāng)多個(gè)節(jié)點(diǎn)在zookeeper中注冊時(shí)祟敛,會(huì)創(chuàng)建有序的Znode臨時(shí)節(jié)點(diǎn),每個(gè)Znode都有一串?dāng)?shù)字后綴兆解,zookeeper默認(rèn)是從同一個(gè)鎖路徑下id最小的那個(gè)znode獲取鎖馆铁,設(shè)定對應(yīng)hiveserver2節(jié)點(diǎn)是主的狀態(tài)。假如這個(gè)節(jié)點(diǎn)掛了锅睛,這個(gè)znode會(huì)自動(dòng)刪除埠巨,watcher機(jī)制會(huì)通知另一個(gè)hiveserver2上位。同時(shí)现拒,為了支持并發(fā)讀寫的原子性辣垒,Hive使用表數(shù)據(jù)鎖機(jī)制,當(dāng)一個(gè)sql在insert數(shù)據(jù)時(shí)鎖住表印蔬,不讓其它sql去讀取表數(shù)據(jù)勋桶,等到釋放鎖之后,其它客戶端才能讀取這個(gè)表侥猬,hive表的鎖機(jī)制可通過hive.support.concurrency=true配置來開啟例驹。

4、Zookeeper分布式安裝

在三節(jié)點(diǎn)集群hadoop1退唠、hadoop2鹃锈、hadoop3上,進(jìn)行Zookeeper分布式部署铜邮,開始前確保jdk1.8已安裝仪召。
1、訪問zookeeper官網(wǎng)https://zookeeper.apache.org/releases.html松蒜,下載最新版二進(jìn)制安裝包扔茅,如apache-zookeeper-3.8.0-bin.tar.gz

2秸苗、上傳安裝包到三個(gè)節(jié)點(diǎn)上召娜,分別進(jìn)行解壓安裝。

tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /usr
mv  /usr/apache-zookeeper-3.8.0-bin  /usr/zookeeper-3.8.0
cd /usr/zookeeper-3.8.0/conf
cp zoo_sample.cfg zoo.cfg

3惊楼、三個(gè)節(jié)點(diǎn)上玖瘸,修改vim zoo.cfg文件,配置以下內(nèi)容:

server1=hadoop1:2888:3888
server2=hadoop2:2888:3888
server3=hadoop3:2888:3888

4檀咙、三個(gè)節(jié)點(diǎn)雅倒,執(zhí)行啟動(dòng)zookeeper命令,查看狀態(tài)弧可。

bin/zkServer.sh start  #啟動(dòng)服務(wù)
bin/zkServer.sh status   #查看狀態(tài)

5蔑匣、zookeeper客戶端操作

新打開一個(gè)終端,執(zhí)行以下命令:

bin/zkCli.sh  #啟動(dòng)客戶端
ls /  #查看znode包含的內(nèi)容
ls2 /  #查看znode節(jié)點(diǎn)詳細(xì)數(shù)據(jù)
create /test "mynode"  #創(chuàng)建znode節(jié)點(diǎn)test
set /test "testnode"   #修改節(jié)點(diǎn)值
get /test  watch  #監(jiān)聽節(jié)點(diǎn)的值的變化
delete /test  #刪除節(jié)點(diǎn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市裁良,隨后出現(xiàn)的幾起案子凿将,更是在濱河造成了極大的恐慌,老刑警劉巖价脾,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牧抵,死亡現(xiàn)場離奇詭異,居然都是意外死亡侨把,警方通過查閱死者的電腦和手機(jī)犀变,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來座硕,“玉大人弛作,你說我怎么就攤上這事』遥” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵机隙,是天一觀的道長蜘拉。 經(jīng)常有香客問我,道長有鹿,這世上最難降的妖魔是什么旭旭? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮葱跋,結(jié)果婚禮上持寄,老公的妹妹穿的比我還像新娘。我一直安慰自己娱俺,他們只是感情好稍味,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荠卷,像睡著了一般模庐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上油宜,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天掂碱,我揣著相機(jī)與錄音,去河邊找鬼慎冤。 笑死疼燥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚁堤。 我是一名探鬼主播醉者,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了湃交?” 一聲冷哼從身側(cè)響起熟空,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搞莺,沒想到半個(gè)月后息罗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡才沧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年迈喉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片温圆。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挨摸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岁歉,到底是詐尸還是另有隱情得运,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布锅移,位于F島的核電站熔掺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏非剃。R本人自食惡果不足惜置逻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望备绽。 院中可真熱鬧券坞,春花似錦、人聲如沸肺素。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽压怠。三九已至眠冈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菌瘫,已是汗流浹背蜗顽。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雨让,地道東北人雇盖。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像栖忠,于是被迫代替她去往敵國和親崔挖。 傳聞我的和親對象是個(gè)殘疾皇子贸街,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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