hadoop-ha高可用

一、完全分布式存在的問題

NameNode單點(diǎn)故障,難以應(yīng)用于在線場景

NameNode壓力過大,且內(nèi)存受限,影響系統(tǒng)擴(kuò)展性

二、高可用結(jié)構(gòu)圖




三、圖例詳解

1、JN實(shí)現(xiàn)主備NN 間的數(shù)據(jù)共享(解決單點(diǎn)故障)

主NameNode對外提供服務(wù),備NameNode同步主NameNode元數(shù)據(jù),以待切換,所有DataNode同時(shí)向兩個(gè)NameNode匯報(bào)數(shù)據(jù)塊信息(位置)

standby:備用namenode,完成了edits.log文件的合并產(chǎn)生新的fsimage,推送回ActiveNN

2、基于Zookeeper自動切換方案

ZooKeeper Failover Controller(zkfc):監(jiān)控NameNode健康狀態(tài),并向Zookeeper注冊NameNode,當(dāng)主NameNode掛掉后,ZKFC(備)為NameNode競爭鎖,獲得ZKFC(備)鎖的NameNode(備)變?yōu)閍ctive。

3、ZKFC的作用

健康檢測:zkfc會周期性的向它監(jiān)控的namenode(只有namenode才有zkfc進(jìn)程,并且每個(gè)namenode各一個(gè))發(fā)生健康探測命令,從而鑒定某個(gè)namenode是否處于正常工作狀態(tài),如果機(jī)器宕機(jī),心跳失敗,那么zkfc就會標(biāo)記它處于不健康的狀態(tài);

會話管理:如果namenode是健康的,zkfc機(jī)會保持在zookeeper中保持一個(gè)打開的會話,如果namenode是active狀態(tài)的,那么zkfc還會在zookeeper中占有一個(gè)類型為短暫類型的znode,當(dāng)這個(gè)namenode掛掉時(shí),這個(gè)znode將會被刪除,然后備用的namenode得到這把鎖,升級為主的namenode,同時(shí)標(biāo)記狀態(tài)為active,當(dāng)宕機(jī)的namenode,重新啟動,他會再次注冊zookeeper,發(fā)現(xiàn)已經(jīng)有znode了,就自動變?yōu)閟tandby狀態(tài),如此往復(fù)循環(huán),保證高可靠性,但是目前僅支持最多配置兩個(gè)namenode.

master選舉:如上所述,通過在zookeeper中維持一個(gè)短暫類型的znode,來實(shí)現(xiàn)搶占式的鎖機(jī)制,從而判斷哪個(gè)namenode為active狀態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容