Namenode名字節(jié)點(diǎn)

對于Namenode的分析,分以下幾個(gè)部分:

  • 文件系統(tǒng)目錄樹管理

  • 數(shù)據(jù)塊和數(shù)據(jù)節(jié)點(diǎn)管理

  • 租約管理
    租約是Namenode給與租約持有者(客戶端)在規(guī)定時(shí)間內(nèi)擁有文件權(quán)限(寫文件)的合同轩缤,Namenode會執(zhí)行租約的發(fā)放命迈、回收贩绕、檢查以及恢復(fù)等操作。

  • 緩存管理
    2.3新增了集中式緩存管理功能壶愤,允許用戶將文件和目錄保存到HDFS緩存中淑倾。HDFS的集中式緩存是由分布在Datanode上的堆外內(nèi)存組成的,并且由Namenode統(tǒng)一管理征椒。

  • FSNamesystem
    Namenode的FSNamesystem類是用于處理HDFS操作邏輯的(讀 寫 追加等)

  • Namenode的啟動和停止
    在啟動時(shí)會進(jìn)入安全模式娇哆,在安全模式下Namenode不會接受客戶端對空間的修改

Namenode的啟動

這些操作都是在安全模式中進(jìn)行的:

  • 首先加載命名空間鏡像(fsimage)并且合并編輯日志(editslog),建立Namenode的第一關(guān)系:文件系統(tǒng)目錄樹勃救。
  • 接受Datanode的塊匯報(bào)(blockReport)碍讨,獲的數(shù)據(jù)塊的存儲信息,建立第二關(guān)系:數(shù)據(jù)塊與副本和數(shù)據(jù)節(jié)點(diǎn)之間的對應(yīng)關(guān)系

當(dāng)Namenode收集到的閾值比例滿足最低副本系數(shù)的數(shù)據(jù)塊時(shí)才可以離開安全模式蒙秒。

HA高可用

HDFS的高可用(High Availability, HA)方案就是為了解決Namenode的單點(diǎn)故障而產(chǎn)生的勃黍。
在HA HDFS集群中會同時(shí)運(yùn)行兩個(gè)Namenode

  • 一個(gè)作為活動的(Active) Namenode,
  • 一個(gè)作為備份的(Standby) Namenode.

備份Namenode的命名空間與活動Namenode是實(shí)時(shí)同步的,所以當(dāng)活動Namenode發(fā)生故障而停止服務(wù)時(shí),備份Namenode可以立即功換為活動狀態(tài),而不影響HDFS集群的服務(wù)。

1. HA架構(gòu)

在一個(gè)HA集群中,會配置兩個(gè)獨(dú)立的Namenode晕讲。在任意時(shí)刻,只有一個(gè)節(jié)點(diǎn)會作為活動的節(jié)點(diǎn),另一個(gè)節(jié)點(diǎn)則處于備份狀態(tài)覆获。活動的Namenode負(fù)責(zé)執(zhí)行所有修改命名空間以及刪除備份數(shù)據(jù)塊的操作,而備份的Namenode則執(zhí)行同步操作以保持與活動節(jié)點(diǎn)命名空間的一致性瓢省。

如圖3-64所示弄息,為了使備份節(jié)點(diǎn)與活動節(jié)點(diǎn)的狀態(tài)能夠同步一致,兩個(gè)節(jié)點(diǎn)都需要與一組獨(dú)立運(yùn)行節(jié)點(diǎn)(JournalNodes, JNS)通信勤婚。當(dāng)Active Namenode執(zhí)行了修改命名空間的操作時(shí)摹量,它會定期將執(zhí)行的操作記錄在editlog中,并寫入JNS的多數(shù)節(jié)點(diǎn)中蛔六,而Standby Namenode會一直監(jiān)聽JNS上editlog的變化荆永,如果發(fā)現(xiàn)editlog有改動, Standby Namenode就會讀取editlog并與當(dāng)前的命名空間合并国章。

當(dāng)發(fā)生了錯(cuò)誤切換時(shí)具钥, Standby節(jié)點(diǎn)會先保證已經(jīng)從JNS上讀取了所有的editlog并與命名空間合并,然后才會從Standby狀態(tài)切換為Active狀態(tài)液兽。通過這種機(jī)制骂删,保證了Active Namenode與Standby Namenode之間命名空間狀態(tài)的一致性,也就是第一關(guān)系鏈的一致性四啰。

為了使錯(cuò)誤切換能夠很快地執(zhí)行完畢宁玫,就需要保證Standby節(jié)點(diǎn)也保存了實(shí)時(shí)的數(shù)據(jù)塊存儲信息,也就是第二關(guān)系鏈柑晒。這樣發(fā)生錯(cuò)誤切換時(shí)欧瘪, Standby節(jié)點(diǎn)就不需要等待所有的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行全量塊匯報(bào),而可以直接切換為Active狀態(tài)匙赞。為了實(shí)現(xiàn)這個(gè)機(jī)制佛掖, Datanode會同時(shí)向這兩個(gè)Namenode發(fā)送心跳以及塊匯報(bào)信息妖碉。這樣Active Nanenode和Standby Namenode的元數(shù)據(jù)就完全同步了,一旦發(fā)生故障芥被,就可以馬上切換欧宜,也就是熱備。這里需要注意的是拴魄,Standby Namenode只會更新數(shù)據(jù)塊的存儲信息冗茸,并不會向Namenode發(fā)送復(fù)制或者刪除數(shù)據(jù)塊的指令,這些指令只能由Active Namenode發(fā)送匹中。

為了防止腦裂的問題夏漱,HDFS提供了三個(gè)級別的隔離機(jī)制(fencing):

  • 共享存儲隔離:同一時(shí)間只允許一個(gè)Namenode向JournalNodes寫入editlog數(shù)據(jù)。
  • 客戶端隔離:一時(shí)間只允許一個(gè)Namenode響應(yīng)客戶端請求职员。
  • Datanode隔離:同一時(shí)間只允許一個(gè)Namenode向Datanode下發(fā)名字節(jié)點(diǎn)指令,例如刪除麻蹋、復(fù)制數(shù)據(jù)塊指令等。

2 HA狀態(tài)切換方式

  • 管理員手動通過命令執(zhí)行狀態(tài)切換
  • 自動狀態(tài)切換機(jī)制觸發(fā)狀態(tài)切換(由ZKFailoverController控制切換流程)

3 Active Namenode和Standby Namenode之間如何共享editlog日志焊切?
Active Namenode會將日志文件寫到共享存儲上扮授,Standby Namenode會實(shí)時(shí)從共享存儲讀取editlog文件,然后合并到命名空間 专肪。

  • Hadoop2.6之前使用的共享存儲時(shí)NAS(網(wǎng)絡(luò)附屬存儲)+NFS(網(wǎng)絡(luò)文件系統(tǒng))刹勃,缺點(diǎn)時(shí)要求有一個(gè)互斥腳本,在Namenode發(fā)生故障切換時(shí)關(guān)閉上一個(gè)活動節(jié)點(diǎn)
  • 2.6提供了QJM(Quorum Journal Manager)方案來實(shí)現(xiàn)HA共享存儲嚎尤,這是一個(gè)基于Paxos算法實(shí)現(xiàn)的HA方案

4 QJM方案中有兩個(gè)組件:

  • JournalNode:獨(dú)立運(yùn)行的服務(wù)器荔仁,保存editlog文件,向外提供讀寫接口芽死;HDFS集群中有2N+1個(gè)JN節(jié)點(diǎn)寫入乏梁,則認(rèn)為寫入成功」毓螅基于Paxos算法

  • QuorumJournalManagerr:運(yùn)行在Namenode上遇骑,QJM通過調(diào)用QJournalProtocol中的方法向JounralNode發(fā)送請求。(并行發(fā)送日志)

5 租約管理
我們知道HDFS文件是write-once-read-many揖曾,并且不支持客戶端的并行寫操作落萎,那么這里就需要一種機(jī)制保證對HDFS文件的互斥操作。HDFS提供了租約(Lease)機(jī)制來實(shí)現(xiàn)文件的互斥操作炭剪。

租約:是Namenode給予租約持有者(LeaseHolder练链,一般是客戶端)在規(guī)定時(shí)間內(nèi)擁有文件權(quán)限(寫文件)的合同。

在HDFS中,客戶端寫文件時(shí)需要先從租約管理器(LeaseManager)申請一個(gè)租約奴拦,成功申請租約之后客戶端就成為了租約持有者媒鼓,也就擁有了對該HDFS文件的獨(dú)占權(quán)限,其他客戶端在該租約有效時(shí)無法打開這個(gè)HDFS文件進(jìn)行操作。

Namenode的租約管理器保存了 HDFS文件與租約绿鸣、租約與租約持有者的對應(yīng)關(guān)系瓷产,租約管理器還會定期檢查它維護(hù)的所有租約是否過期。租約管理器會強(qiáng)制收回過期的租約枚驻,所以租約持有者需要定期更新租約(renew),維護(hù)對該文件的獨(dú)占鎖定株旷。當(dāng)客戶端完成了對文件的寫操作再登,關(guān)閉文件時(shí),必須在租約管理器中釋放租約晾剖。

  • LeaseManager.Lease
    我們知道一個(gè)HDFS客戶端是可以同時(shí)打開多個(gè)HDFS文件進(jìn)行讀寫操作的,為了便于管理,在租約管理器中將一個(gè)客戶端打開的所有文件組織在一起構(gòu)成一條記錄,也就是 LeaseManager.Lease類锉矢。

  • LeaseManager類
    是Namenode中維護(hù)所有租約操作的類,它不僅僅保存了HDFS中所有租約的信息齿尽,提供租約的增沽损、刪、改循头、查方法绵估,同時(shí)還維護(hù)了一個(gè)Monitor線程定期檢查租約是否超時(shí),對于長時(shí)間沒有更新租約的文件(超過硬限制時(shí)間)卡骂,LeaseManager會觸發(fā)租約恢復(fù)機(jī)制国裳,然后關(guān)閉文件。

添加租約---addLease()
檢查租約---FsNamesystem.checkLease()
租約更新---renewLease()
刪除租約---removeLease()
租約檢查---Monitor線程
租約恢復(fù)---Monitor線程發(fā)起


Boy-20180726

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末全跨,一起剝皮案震驚了整個(gè)濱河市缝左,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浓若,老刑警劉巖渺杉,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挪钓,居然都是意外死亡是越,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門诵原,熙熙樓的掌柜王于貴愁眉苦臉地迎上來英妓,“玉大人,你說我怎么就攤上這事绍赛÷溃” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵吗蚌,是天一觀的道長腿倚。 經(jīng)常有香客問我,道長蚯妇,這世上最難降的妖魔是什么敷燎? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任暂筝,我火速辦了婚禮,結(jié)果婚禮上硬贯,老公的妹妹穿的比我還像新娘焕襟。我一直安慰自己,他們只是感情好饭豹,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布鸵赖。 她就那樣靜靜地躺著,像睡著了一般拄衰。 火紅的嫁衣襯著肌膚如雪它褪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天翘悉,我揣著相機(jī)與錄音茫打,去河邊找鬼。 笑死妖混,一個(gè)胖子當(dāng)著我的面吹牛老赤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播源葫,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼诗越,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了息堂?” 一聲冷哼從身側(cè)響起嚷狞,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荣堰,沒想到半個(gè)月后床未,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡振坚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年薇搁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渡八。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啃洋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屎鳍,到底是詐尸還是另有隱情宏娄,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布逮壁,位于F島的核電站孵坚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卖宠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一巍杈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扛伍,春花似錦筷畦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至作媚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帅刊,已是汗流浹背纸泡。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赖瞒,地道東北人女揭。 一個(gè)月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像栏饮,于是被迫代替她去往敵國和親吧兔。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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

  • HDFS是Hadoop Distribute File System 的簡稱袍嬉,也就是Hadoop的一個(gè)分布式文件系...
    大佛愛讀書閱讀 857評論 0 0
  • 終極算法 關(guān)注微信號每天收聽我們的消息終極算法為您推送精品閱讀 前言 Hadoop 在大數(shù)據(jù)技術(shù)體系中的地位至關(guān)...
    Yespon閱讀 129,660評論 12 168
  • HDFS HA 原理 標(biāo)簽:HDFS HA 概述 在 Hadoop 2.x 版本中境蔼,Hadoop 實(shí)現(xiàn)了 HDFS...
    神仙CGod閱讀 2,079評論 1 4
  • 看尼克·胡哲寫的人生不設(shè)限 他分享了海倫·凱勒的一句話: 真正的快樂來自“忠于一個(gè)有價(jià)值的目標(biāo)”。 看到這句話時(shí)伺通,...
    大荷08閱讀 347評論 0 0
  • 在很長的一段時(shí)間罐监,我都在尋找一本書吴藻,避免掉入片面思維的誤區(qū),掌握整體性思維弓柱,讓自己看待問題更加全面沟堡,不再是那個(gè)做事...