大數(shù)據(jù)學(xué)習(xí)路線分享Hadoop階段的高可用配置,什么是Hadoop的HA機(jī)制
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比中牟網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式中牟網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋中牟地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
Ha機(jī)制即Hadoop的高可用(7*24小時(shí)不中斷服務(wù))
正式引入HA機(jī)制是從hadoop2.0開始,之前的版本中沒有HA機(jī)制
hadoop-ha嚴(yán)格來說應(yīng)該分成各個(gè)組件的HA機(jī)制——HDFS的HA、YARN的HA
HDFS的HA機(jī)制詳解
HDFS 的HA主要是通過雙namenode協(xié)調(diào)工作實(shí)現(xiàn)
雙namenode協(xié)調(diào)工作的要點(diǎn):
A、元數(shù)據(jù)管理方式需要改變:
內(nèi)存中各自保存一份元數(shù)據(jù)
Edits日志只能有一份,只有Active狀態(tài)的namenode節(jié)點(diǎn)可以做寫操作
兩個(gè)namenode都可以讀取edits
共享的edits放在一個(gè)共享存儲中管理(qjournal和NFS兩個(gè)主流實(shí)現(xiàn))
B、需要一個(gè)狀態(tài)管理功能模塊
實(shí)現(xiàn)了一個(gè)zkfailover,常駐在每一個(gè)namenode所在的節(jié)點(diǎn)
每一個(gè)zkfailover負(fù)責(zé)監(jiān)控自己所在namenode節(jié)點(diǎn),利用zk進(jìn)行狀態(tài)標(biāo)識
當(dāng)需要進(jìn)行狀態(tài)切換時(shí),由zkfailover來負(fù)責(zé)切換
切換時(shí)需要防止brain split腦裂現(xiàn)象的發(fā)生
Namenode的運(yùn)行原理
兩臺服務(wù)器上都存在一個(gè)namenode ,其中一臺Namenode 處于active狀態(tài),一臺處于standby狀態(tài),兩臺服務(wù)器數(shù)據(jù)共享,兩臺服務(wù)器各自存有一份元數(shù)據(jù),但是edit數(shù)據(jù)只有一份,兩臺服務(wù)器只有處于active狀態(tài)的namenode服務(wù)器可以對edit進(jìn)行寫操作,另一臺服務(wù)器只能對edit進(jìn)行讀操作,而共享的edit放到一個(gè)共享存儲中進(jìn)行管理。共享存儲由文件管理系統(tǒng)qjournal和NFS來實(shí)現(xiàn)。
而兩臺服務(wù)器的active standby狀態(tài)如何管理,則需要一個(gè)管理模塊:ZKFC (zookeeper failover controller) 來管理。每一個(gè)zkfc負(fù)責(zé)監(jiān)控自己所在namenode節(jié)點(diǎn),利用zk進(jìn)行狀態(tài)標(biāo)識。當(dāng)需要進(jìn)行狀態(tài)切換時(shí),由zkfailover來負(fù)責(zé)切換
切換時(shí)需要防止brain split腦裂現(xiàn)象的發(fā)生。
什么是腦裂現(xiàn)象
腦裂現(xiàn)象就是兩臺namenode都處于active狀態(tài),產(chǎn)生沖突,這就是腦裂。Hadoop的高可用配置要注意解決腦裂狀態(tài)。
腦裂狀態(tài)如何產(chǎn)生
當(dāng)一臺active狀態(tài)的namenode服務(wù)器處于假死狀態(tài),那么另一臺namenode服務(wù)器的zkfc收到信息,把屬于他的namenode狀態(tài)改變?yōu)閍ctive狀態(tài),第一臺處于假死狀態(tài)的namdenode又醒過來,就會產(chǎn)生腦裂。
腦裂如何解決
第二臺namenode的zkfc此時(shí)就會一不做二不休,把第一臺處于假死狀態(tài)的namenode殺掉 運(yùn)用ssh kill -9 namenode ,直接殺掉第一臺服務(wù)器的namenode進(jìn)行補(bǔ)刀,如果補(bǔ)刀不成功的話,zkfc進(jìn)入第一臺服務(wù)器,直接調(diào)用用戶的自定義腳本程序 /home/Hadoop/kill/poweroff.sh 殺-掉假-死的namenode。