HDFS是如何設(shè)計(jì)架構(gòu)的?

前言

???????? Hadoop到目前為止發(fā)展已經(jīng)有10余年韧涨,版本經(jīng)過無數(shù)次的更新迭代牍戚,目前業(yè)內(nèi)大家把Hadoop大的版本分為Hadoop1.0、Hadoop2.0虑粥、Hadoop3.0 三個版本如孝。

一、Hadoop 簡介

???????? Hadoop版本剛出來的時(shí)候是為了解決兩個問題:一是海量數(shù)據(jù)如何存儲的問題娩贷,一個是海量數(shù)據(jù)如何計(jì)算的問題第晰。Hadoop的核心設(shè)計(jì)就是HDFS和 Mapreduce.HDFS解決了海量數(shù)據(jù)如何存儲的問題, Mapreduce解決了海量數(shù)據(jù)如何計(jì)算的問題彬祖。HDFS的全稱:Hadoop Distributed File System茁瘦。

二、分布式文件系統(tǒng)

? ? ? ? ?HDFS是一個主從的架構(gòu)储笑、主節(jié)點(diǎn)只有一個NemeNode甜熔。從節(jié)點(diǎn)有多個DataNode。

三突倍、HDFS 架構(gòu)

? ? ? ? 客戶端上傳文件時(shí)假設(shè)文件大小為129MHDFS默認(rèn)切分的大小為128M這時(shí)就會產(chǎn)生出2個blkNameNode去通知DataNode上傳文件(這里有一定的策略)腔稀,我們就假設(shè)就將這幾個文件分別存儲在4個服務(wù)器上。為什們要進(jìn)行分別存儲在赘方,假設(shè)DataNode服務(wù)器有一天突然掛掉了我們是不是還可通過DataNode4或2和3進(jìn)行讀取數(shù)據(jù)烧颖,這樣是不是就防止數(shù)據(jù)丟失。

NameNode

  1. 管理元數(shù)據(jù)信息(文件目錄樹):文件與Block塊窄陡,Block塊與DataNode主機(jī)關(guān)系
  2. NameNode為快速響應(yīng)用戶操作炕淮,所以把元數(shù)據(jù)信息加載到內(nèi)存里

DataNode

  1. 存儲數(shù)據(jù),把上傳的數(shù)據(jù)劃分固定大小文件塊(Block)在Hadoop2.73之前是64M之后改為了128M
  2. 為了保證數(shù)據(jù)安全跳夭,每個文件默認(rèn)都是三個副本

SecondaryNamenode???????? 周期性的到NameNode節(jié)點(diǎn)拉取Edtis和fsimage文件涂圆,將這兩個文件加入到內(nèi)存進(jìn)行 然后將這兩個文件加入到內(nèi)存中進(jìn)行合并產(chǎn)生新的fsimage發(fā)送給NameNode们镜。

四、HDFS寫入數(shù)據(jù)流程

  1. 客戶端會帶著文件路徑向NameNode發(fā)送寫入請求通過 RPC 與 NameNode 建立通訊润歉, NameNode 檢查目標(biāo)文件模狭,返回是否可以上傳;
  2. Client 請求第一個 block 該傳輸?shù)侥男?DataNode 服務(wù)器上踩衩;
  3. NameNode 根據(jù)副本數(shù)量和副本放置策略進(jìn)行節(jié)點(diǎn)分配嚼鹉,返回DataNode節(jié)點(diǎn),如:A驱富,B锚赤,C
  4. Client 請求A節(jié)點(diǎn)建立pipeline管道,A收到請求會繼續(xù)調(diào)用B褐鸥,然后B調(diào)用C线脚,將整個pipeline管道建立完成后,逐級返回消息到Client;
  5. Client收到A返回的消息之后開始往A上傳第一個block塊叫榕,block塊被切分成64K的packet包不斷的在pepiline管道里傳遞浑侥,從A到B,B到C進(jìn)行復(fù)制存儲
  6. 當(dāng)一個 block塊 傳輸完成之后晰绎,Client 再次請求 NameNode 上傳第二個block塊的存儲節(jié)點(diǎn)寓落,不斷往復(fù)存儲
  7. 當(dāng)所有block塊傳輸完成之后,Client調(diào)用FSDataOutputSteam的close方法關(guān)閉輸出流荞下,最后調(diào)用FileSystem的complete方法告知NameNode數(shù)據(jù)寫入成功

五零如、HDFS讀取數(shù)據(jù)流程

  1. 客戶端會先帶著讀取路徑向NameNode發(fā)送讀取請求,通過 RPC 與 NameNode 建立通訊,NameNode檢查目標(biāo)文件锄弱,來確定請求文件 block塊的位置信息
  2. NameNode會視情況返回文件的部分或者全部block塊列表,對于每個block塊祸憋,NameNode 都會返回含有該 block副本的 DataNode 地址
  3. 這些返回的 DataNode 地址会宪,會按照集群拓?fù)浣Y(jié)構(gòu)得出 DataNode 與客戶端的距離,然后進(jìn)行排序蚯窥,排序兩個規(guī)則:網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中距離 Client 近的排靠前掸鹅;心跳機(jī)制中超時(shí)匯報(bào)的 DN 狀態(tài)為 STALE,這樣的排靠后拦赠;
  4. Client 選取排序靠前的 DataNode 調(diào)用FSDataInputSteam的read方法來讀取 block塊數(shù)據(jù)巍沙,如果客戶端本身就是DataNode,那么將從本地直接獲取block塊數(shù)據(jù)
  5. 當(dāng)讀完一批的 block塊后,若文件讀取還沒有結(jié)束荷鼠,客戶端會繼續(xù)向NameNode 獲取下一批的 block 列表句携,繼續(xù)讀取
  6. 所有block塊讀取完成后,Client調(diào)用FSDataInputStream.close()方法允乐,關(guān)閉輸入流矮嫉,并將讀取來所有的 block塊合并成一個完整的最終文件

六削咆、HDFS缺陷

  1. 單點(diǎn)問題
  2. 內(nèi)存受限

總結(jié)

???????? 上述給大家講解了簡單的HDFS架構(gòu),我在最后面留了一個小問題蠢笋,我會在下期通過畫圖的方式給大家講解拨齐,我在這里為大家提供大數(shù)據(jù)的資料需要的朋友可以去下面GitHub去下載,信自己昨寞,努力和汗水總會能得到回報(bào)的瞻惋。我是大數(shù)據(jù)老哥,我們下期見~~~

資源獲取 獲取Flink面試題援岩,Spark面試題歼狼,程序員必備軟件,hive面試題窄俏,Hadoop面試題蹂匹,Docker面試題,簡歷模板等資源請去GitHub自行下載 https://github.com/lhh2002/Framework-Of-BigDataGitee 自行下載 ?https://gitee.com/li_hey_hey/dashboard/projects

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凹蜈,一起剝皮案震驚了整個濱河市限寞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仰坦,老刑警劉巖履植,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悄晃,居然都是意外死亡玫霎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門妈橄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庶近,“玉大人,你說我怎么就攤上這事眷蚓”侵郑” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵沙热,是天一觀的道長叉钥。 經(jīng)常有香客問我,道長篙贸,這世上最難降的妖魔是什么投队? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮爵川,結(jié)果婚禮上敷鸦,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好轧膘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布钞螟。 她就那樣靜靜地躺著,像睡著了一般谎碍。 火紅的嫁衣襯著肌膚如雪鳞滨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天蟆淀,我揣著相機(jī)與錄音拯啦,去河邊找鬼。 笑死熔任,一個胖子當(dāng)著我的面吹牛褒链,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疑苔,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼甫匹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惦费?” 一聲冷哼從身側(cè)響起兵迅,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎薪贫,沒想到半個月后恍箭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瞧省,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年扯夭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞍匾。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡交洗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出橡淑,到底是詐尸還是另有隱情藕筋,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布梳码,位于F島的核電站,受9級特大地震影響伍掀,放射性物質(zhì)發(fā)生泄漏掰茶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一蜜笤、第九天 我趴在偏房一處隱蔽的房頂上張望濒蒋。 院中可真熱鬧,春花似錦、人聲如沸沪伙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽围橡。三九已至暖混,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翁授,已是汗流浹背拣播。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留收擦,地道東北人贮配。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像塞赂,于是被迫代替她去往敵國和親泪勒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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

  • 1.背景 HDFS最初是參考谷歌GFS論文原理開發(fā)的一個開源產(chǎn)品宴猾,由Lucene開源項(xiàng)目的創(chuàng)始人Doug Cutt...
    架構(gòu)禪話閱讀 1,371評論 0 2
  • Hadoop特點(diǎn) 擴(kuò)容能力: 能可靠地存儲和處理PB級的數(shù)據(jù) 成本低: 可以通過普通機(jī)器組成的服務(wù)器集群來分發(fā)以及...
    ArthurIsUsed閱讀 530評論 0 0
  • HDFS 是做什么的 HDFS(Hadoop Distributed File System)是Hadoop項(xiàng)目的...
    timothyue1閱讀 600評論 0 1
  • 參考:初步掌握HDFS的架構(gòu)及原理 1 HDFS 是做什么的 HDFS(Hadoop Distributed Fi...
    小小少年Boy閱讀 401評論 0 2
  • 1. 設(shè)計(jì)初衷 分而治之:將大文件圆存、大批量文件,分布式存放在大量服務(wù)器上鳍置,以便于采取分而治之的方式對海量數(shù)據(jù)進(jìn)行運(yùn)...
    46a1a20b39a7閱讀 286評論 0 0