大數(shù)據(jù)面試 | 01 HDFS面試熱點(diǎn)--HDFS 架構(gòu)及讀寫流程

文章目錄

HDFS 簡(jiǎn)介以及架構(gòu)設(shè)計(jì)

詳解SecondaryNameNode

HDFS小文件危害以及解決方案

HDFS 讀流程

HDFS 寫流程

1. HDFS 架構(gòu)設(shè)計(jì)

HDFS架構(gòu)設(shè)計(jì).png
NameNode(元數(shù)據(jù)節(jié)點(diǎn)):
  1. 管理文件系統(tǒng)的命名空間
  2. 設(shè)置副本策略
  3. 管理數(shù)據(jù)塊的映射信息
  4. 處理客戶端的c讀寫請(qǐng)求***
DataNode(數(shù)據(jù)節(jié)點(diǎn)):DataNode 是真正存儲(chǔ)數(shù)據(jù)的地方。
  1. Client 或者 NameNode 可以向 DataNode 請(qǐng)求寫入或者讀出數(shù)據(jù)塊。
  2. 定時(shí)向 NameNode 匯報(bào)存儲(chǔ)數(shù)據(jù)塊信息贯被。
Secondary NameNode(從元數(shù)據(jù)節(jié)點(diǎn)):它并不是備用的 NameNode 節(jié)點(diǎn)噪窘,它負(fù)責(zé)不同的事。

1.它會(huì)周期性地將 NameNode 的 FSimage 和 Edits 合并泞遗,以防日志文件過大惰许。

  1. 合并之后的 FSimage 會(huì)在 Secondary NameNode 中保存一份,防止 NameNode 節(jié)點(diǎn)失敗時(shí)可以恢復(fù)

詳解SecondaryNameNode

作用

定期合并NN節(jié)點(diǎn)的fsimage(快照)+editlog(操作日志)為新的fsimage,推送給NN史辙。而觸發(fā)這個(gè)操作的稱為檢查點(diǎn)checkpoint汹买。影響checkpoint主要是兩個(gè)參數(shù):

checkpoint之間的時(shí)間間隔 dfs.namenode.checkpoint.period=3600秒=1小時(shí)
操作事務(wù)數(shù) dfs.namenode.checkpoint.txns=1000000
以上兩個(gè)參數(shù)滿足其一就觸發(fā)SNN的合并操作。

合并流程


SNN.png

1.SecondaryNameNode 通過周期性(五分鐘)聊倔,通過 getEditLog 獲取 editlog 大小晦毙,當(dāng)其 達(dá)到合并的大小時(shí)通過 RollEditLog 方法進(jìn)行合并。

  1. NameNode 停止使用 edits 文件耙蔑,并生成一個(gè)新的臨時(shí)的 Edits.new 文件见妒。
  2. SecondaryNameNode 通過 NameNode 內(nèi)建的 Http 服務(wù)器,以 get 的方式獲取 edits 與fsimage 文件甸陌。Get 方法中攜帶著 Fsimage 與 Edits 的路徑须揣。
  3. SecondaryNameNode 將 Fsimage 載入內(nèi)存并逐一執(zhí)行 Edits 中的操作,生成新的 Fsimage 文件邀层。
  4. 執(zhí)行結(jié)束后返敬,會(huì)向NameNode發(fā)送 http 請(qǐng)求,告知 NameNode 合并結(jié)束寥院,NameNode 通過 http post 的方式獲取新 fsimage 文件
  5. Namenode 更新 fsimage 文件中記錄檢查點(diǎn)執(zhí)行的時(shí)間劲赠,并改名為 fsimage 文件。
  6. Edit.new 文件更名為 edit 文件

2 . HDFS小文件危害以及解決方案

小文件危害

先說對(duì)小文件的定義,一般來說小于等于30M的文件凛澎,都叫小文件霹肝。在HDFS中,通常NN維護(hù)一個(gè)文件的名稱塑煎,目錄結(jié)構(gòu)等大約是250字節(jié)∧唬現(xiàn)實(shí)中,HDFS的小文件如果不做任何操作增長(zhǎng)會(huì)很快最铁,現(xiàn)在假設(shè)NN節(jié)點(diǎn)的內(nèi)存為4G讯赏,差不多42億字節(jié),現(xiàn)在在HDFS上有一億個(gè)小文件冷尉,那么需要250乘一億大約是250億字節(jié)漱挎,這樣會(huì)將NN撐爆。小文件到達(dá)一定數(shù)目雀哨,就會(huì)將NN節(jié)點(diǎn)撐爆磕谅。就算NN能夠存儲(chǔ),對(duì)于hive雾棺,spark計(jì)算時(shí)膊夹,小文件意味著需要更多的task和資源,同樣也會(huì)將節(jié)點(diǎn)弄掛掉捌浩。

解決方案
生產(chǎn)上首先需要設(shè)置小文件的閾值放刨,到達(dá)這個(gè)值對(duì)小文件進(jìn)行合并。對(duì)于這個(gè)合并嘉栓,一種是在HDFS存儲(chǔ)之前就進(jìn)行合并宏榕,還有一種就是計(jì)算完之后根據(jù)業(yè)務(wù)周期來進(jìn)行合并。后一種需要在計(jì)算時(shí)格外對(duì)小文件進(jìn)行調(diào)整侵佃,具體的會(huì)額外出文章講麻昼。

3. HDFS 讀流程

HDFS讀流程-.png
  1. client使用FileSystem.open(filepath)來rpc調(diào)用NN,NN接受到請(qǐng)求會(huì)進(jìn)行權(quán)限等一系列check
  2. 如果都o(jì)k馋辈,就會(huì)返回該文件全部或部分block列表(也就是FSInputStream)抚芦,如果過不了check直接拋出異常。
  3. client調(diào)用FSInputStreamread()去找到離最近的DN讀取block數(shù)據(jù)迈螟,在讀取之后會(huì)check叉抡。如果失敗會(huì)記錄該DN和這個(gè)副本信息,下次不會(huì)在這個(gè)DN讀取答毫,如果沒問題就繼續(xù)讀取下一個(gè)最近的block褥民。當(dāng)全部block列表讀取完之后該文件還沒結(jié)束跳纳,那么filesystem會(huì)繼續(xù)向NN獲取下一批block列表北专。
  4. 當(dāng)客戶端讀取完畢數(shù)據(jù)的時(shí)候笛匙,調(diào)用FSDataInputStream的close函數(shù)。

4. HDFS 寫流程

HDFS寫流程.png
  1. client調(diào)用FileSysytem.create(filepath)來rpc調(diào)用NN于置。
  2. NN會(huì)對(duì)這個(gè)filepath進(jìn)行check煮嫌,例如是不是已經(jīng)存在該文件等器净,如果沒通過check就會(huì)返回異常信息尖淘,否則返回FSOutputStream并創(chuàng)建一個(gè)未與block聯(lián)系的路徑。
  3. client使用FSOutputStream來進(jìn)行block的寫入倡勇,將第一個(gè)塊的第一個(gè)副本寫入DN1,第一個(gè)副本寫完傳輸給第二個(gè)DN2,第二個(gè)副本寫完就傳輸給第三個(gè)DN3逞刷,當(dāng)?shù)贒N3寫完,就返回一個(gè)ack packet給DN2妻熊,DN2就返回ack packet給DN1夸浅,DN1就返回ack packet的FSDataOutputStream對(duì)象,標(biāo)識(shí)第一個(gè)塊的三個(gè)副本都寫完了扔役,余下的塊都是這樣寫入题篷。如果其中有一個(gè)DN出現(xiàn)故障那么數(shù)據(jù)流會(huì)重新調(diào)整,繞過故障DN厅目。
  4. client寫完數(shù)據(jù)關(guān)閉FSOutputStream。
  5. 同時(shí)client調(diào)用filesystem的complete通知NN寫入操作已經(jīng)完成法严。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末损敷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子深啤,更是在濱河造成了極大的恐慌拗馒,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溯街,死亡現(xiàn)場(chǎng)離奇詭異诱桂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)呈昔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門挥等,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人堤尾,你說我怎么就攤上這事肝劲。” “怎么了郭宝?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵辞槐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我粘室,道長(zhǎng)榄檬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任衔统,我火速辦了婚禮鹿榜,結(jié)果婚禮上海雪,老公的妹妹穿的比我還像新娘。我一直安慰自己犬缨,他們只是感情好喳魏,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著怀薛,像睡著了一般刺彩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枝恋,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天创倔,我揣著相機(jī)與錄音,去河邊找鬼焚碌。 笑死畦攘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的十电。 我是一名探鬼主播知押,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鹃骂!你這毒婦竟也來了台盯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤畏线,失蹤者是張志新(化名)和其女友劉穎静盅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寝殴,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒿叠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚣常。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片市咽。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖史隆,靈堂內(nèi)的尸體忽然破棺而出魂务,到底是詐尸還是另有隱情,我是刑警寧澤泌射,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布粘姜,位于F島的核電站,受9級(jí)特大地震影響熔酷,放射性物質(zhì)發(fā)生泄漏孤紧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一拒秘、第九天 我趴在偏房一處隱蔽的房頂上張望号显。 院中可真熱鬧臭猜,春花似錦、人聲如沸押蚤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揽碘。三九已至次屠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雳刺,已是汗流浹背劫灶。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掖桦,地道東北人本昏。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像枪汪,于是被迫代替她去往敵國(guó)和親涌穆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

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