搭建hadoop2 HA介紹

一、NameNode高可用整體架構(gòu)

架構(gòu):

NameNode組建包括:

(1)Active NameNode——主NameNode掖看,可以對(duì)外提供讀寫(xiě)服務(wù)

(2)standby NameNode——備NameNode

(3)ZKFailoverController——主備切換控制器丈氓,獨(dú)立進(jìn)程運(yùn)行,可及時(shí)檢測(cè)到NameNode的健康狀況熊尉,不依賴與手動(dòng)切換

(4)Zookeeper集群——為主備切換控制器提供主備選舉支持

(5)共享存儲(chǔ)系統(tǒng)——是實(shí)現(xiàn)NameNode高可用性的關(guān)鍵裸弦,對(duì)元數(shù)據(jù)(并不是所有)進(jìn)行共享和存儲(chǔ),而主NameNode和備NameNode通過(guò)其實(shí)現(xiàn)數(shù)據(jù)的同步楷掉。

(6)DataNode——同時(shí)向主NameNode和備NameNode 上報(bào)數(shù)據(jù)塊的位置信息

二厢蒜、NameNode的主備切換

流程圖:


NameNode主備切換主要是由zkfc完成,主要由HealthMonitor烹植、ZKFailoverController和ActiveStandbyElector三個(gè)組件協(xié)同完成斑鸦。

zkfc作為獨(dú)立進(jìn)程啟動(dòng),啟動(dòng)時(shí)創(chuàng)建HealthMonitor和ActiveStandbyElector兩個(gè)主要內(nèi)部組件刊橘。

HealthMonitor主要負(fù)責(zé)檢測(cè)NameNode 的健康狀態(tài)鄙才,如果檢查到NameNode的健康狀態(tài)發(fā)生改變,它會(huì)回調(diào)ZKFailoverController的相應(yīng)方法進(jìn)行自動(dòng)的主備選舉促绵。

ActiveStandbyElector主要負(fù)責(zé)完成自動(dòng)的主備選舉攒庵,它內(nèi)部封裝了Zookeeper的處理邏輯,一旦主備選舉完成败晴,就會(huì)回調(diào)ZKFailoverController的相應(yīng)方法進(jìn)行主備切換浓冒。

ZKFC監(jiān)控Active NameNode健康狀況,一旦發(fā)生問(wèn)題尖坤,利用Zookeeper 集群進(jìn)行選舉稳懒。再?zèng)Q定NameNode到底是Active NameNode還是standby NameNode。

三慢味、NameNode的共享存儲(chǔ)

NameNode 在執(zhí)行 HDFS 客戶端提交的創(chuàng)建文件或者移動(dòng)文件這樣的寫(xiě)操作的時(shí)候场梆,會(huì)首先把這些操作記錄在 EditLog 文件之中墅冷,然后再更新內(nèi)存中的文件系統(tǒng)鏡像。內(nèi)存中的文件系統(tǒng)鏡像用于 NameNode 向客戶端提供讀服務(wù)或油,而 EditLog 僅僅只是在數(shù)據(jù)恢復(fù)的時(shí)候起作用寞忿。

NameNode 會(huì)定期對(duì)內(nèi)存中的文件系統(tǒng)鏡像進(jìn)行 checkpoint 操作,在磁盤上生成 FSImage 文件顶岸。在 NameNode 啟動(dòng)的時(shí)候會(huì)進(jìn)行數(shù)據(jù)恢復(fù)腔彰,首先把 FSImage 文件加載到內(nèi)存中形成文件系統(tǒng)鏡像,然后再把 EditLog 之中 FsImage 的結(jié)束事務(wù) id 之后的 EditLog 回放到這個(gè)文件系統(tǒng)鏡像上辖佣。

基于 QJM 的共享存儲(chǔ)系統(tǒng)主要用于保存 EditLog霹抛,并不保存 FSImage 文件。FSImage 文件還是在 NameNode 的本地磁盤上卷谈。每次 NameNode 寫(xiě) EditLog 的時(shí)候杯拐,除了向本地磁盤寫(xiě)入 EditLog 之外,也會(huì)并行地向 JournalNode 集群之中的每一個(gè) JournalNode 發(fā)送寫(xiě)請(qǐng)求世蔗,只要大多數(shù) (majority) 的 JournalNode 節(jié)點(diǎn)返回成功就認(rèn)為向 JournalNode 集群寫(xiě)入 EditLog 成功藕施。如果有 2N+1 臺(tái) JournalNode,那么根據(jù)大多數(shù)的原則凸郑,最多可以容忍有 N 臺(tái) JournalNode 節(jié)點(diǎn)掛掉。

當(dāng)處于 Active 狀態(tài)的 NameNode 調(diào)用 FSEditLog 類的 logSync 方法來(lái)提交 EditLog 的時(shí)候矛市,會(huì)通過(guò) JouranlSet 同時(shí)向本地磁盤目錄和 JournalNode 集群上的共享存儲(chǔ)目錄寫(xiě)入 EditLog芙沥。寫(xiě)入 JournalNode 集群是通過(guò)并行調(diào)用每一個(gè) JournalNode 的 QJournalProtocol RPC 接口的 journal 方法實(shí)現(xiàn)的,如果對(duì)大多數(shù) JournalNode 的 journal 方法調(diào)用成功浊吏,那么就認(rèn)為提交 EditLog 成功而昨,否則 NameNode 就會(huì)認(rèn)為這次提交 EditLog 失敗。

當(dāng) NameNode 進(jìn)入 Standby 狀態(tài)之后找田,會(huì)啟動(dòng)一個(gè) EditLogTailer 線程歌憨。這個(gè)線程會(huì)定期調(diào)用 EditLogTailer 類的 doTailEdits 方法從 JournalNode 集群上同步 EditLog,然后把同步的 EditLog 回放到內(nèi)存之中的文件系雖然 Active NameNode 向 JournalNode 集群提交 EditLog 是同步的墩衙,但 Standby NameNode 采用的是定時(shí)從 JournalNode 集群上同步 EditLog 的方式务嫡,那么 Standby NameNode 內(nèi)存中文件系統(tǒng)鏡像有很大的可能是落后于 Active NameNode 的,所以 Standby NameNode 在轉(zhuǎn)換為 Active NameNode 的時(shí)候需要把落后的 EditLog 補(bǔ)上來(lái)漆改。

處于 Standby 狀態(tài)的 NameNode 轉(zhuǎn)換為 Active 狀態(tài)的時(shí)候心铃,有可能上一個(gè) Active NameNode 發(fā)生了異常退出,那么 JournalNode 集群中各個(gè) JournalNode 上的 EditLog 就可能會(huì)處于不一致的狀態(tài)挫剑,所以首先要做的事情就是讓 JournalNode 集群中各個(gè)節(jié)點(diǎn)上的 EditLog 恢復(fù)為一致去扣。另外,當(dāng)前處于 Standby 狀態(tài)的 NameNode 的內(nèi)存中的文件系統(tǒng)鏡像有很大的可能是落后于舊的 Active NameNode 的樊破,所以在 JournalNode 集群中各個(gè)節(jié)點(diǎn)上的 EditLog 達(dá)成一致之后愉棱,接下來(lái)要做的事情就是從 JournalNode 集群上補(bǔ)齊落后的 EditLog唆铐。只有在這兩步完成之后,當(dāng)前新的 Active NameNode 才能安全地對(duì)外提供服務(wù)奔滑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艾岂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子档押,更是在濱河造成了極大的恐慌澳盐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件令宿,死亡現(xiàn)場(chǎng)離奇詭異叼耙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)粒没,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門筛婉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人癞松,你說(shuō)我怎么就攤上這事爽撒。” “怎么了响蓉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵硕勿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我枫甲,道長(zhǎng)源武,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任想幻,我火速辦了婚禮粱栖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脏毯。我一直安慰自己闹究,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布食店。 她就那樣靜靜地躺著渣淤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叛买。 梳的紋絲不亂的頭發(fā)上砂代,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音率挣,去河邊找鬼刻伊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的捶箱。 我是一名探鬼主播智什,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼丁屎!你這毒婦竟也來(lái)了荠锭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晨川,失蹤者是張志新(化名)和其女友劉穎证九,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體共虑,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愧怜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妈拌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拥坛。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尘分,靈堂內(nèi)的尸體忽然破棺而出猜惋,到底是詐尸還是另有隱情,我是刑警寧澤培愁,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布著摔,位于F島的核電站,受9級(jí)特大地震影響定续,放射性物質(zhì)發(fā)生泄漏梨撞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一香罐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧时肿,春花似錦庇茫、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至寸宏,卻和暖如春宁炫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氮凝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工羔巢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓竿秆,卻偏偏與公主長(zhǎng)得像启摄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子幽钢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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

  • HDFS HA 原理 標(biāo)簽:HDFS HA 概述 在 Hadoop 2.x 版本中歉备,Hadoop 實(shí)現(xiàn)了 HDFS...
    神仙CGod閱讀 2,099評(píng)論 1 4
  • (一)分布式文件系統(tǒng)概述 數(shù)據(jù)量越來(lái)越多,在一個(gè)操作系統(tǒng)管轄的范圍存不下了匪燕,那么就分配到更多的操作系統(tǒng)管理的磁盤中...
    時(shí)待吾閱讀 1,502評(píng)論 0 0
  • (一)分布式文件系統(tǒng)概述 數(shù)據(jù)量越來(lái)越多蕾羊,在一個(gè)操作系統(tǒng)管轄的范圍存不下了,那么就分配到更多的操作系統(tǒng)管理的磁盤中...
    時(shí)待吾閱讀 5,440評(píng)論 0 1
  • 1. Zookeeper介紹: 1.基本介紹: Zookeeper: 為分布式應(yīng)用提供分布式協(xié)作(協(xié)調(diào))服務(wù)帽驯。使用...
    奉先閱讀 4,572評(píng)論 0 10
  • 收聽(tīng)提示: 1.點(diǎn)擊之后若顯示“網(wǎng)頁(yè)無(wú)法打開(kāi)”龟再,可繼續(xù)點(diǎn)右上角,選擇“在瀏覽器中打開(kāi)”界拦,即可吸申。 2.也可下載荔枝F...
    粘粘啊閱讀 110評(píng)論 1 2