Hadoop之HDFS介紹

我們依然是先過(guò)一遍官方文檔:

引言

Hadoop分布式文件系統(tǒng)(HDFS)被設(shè)計(jì)成適合運(yùn)行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)溶其。它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點(diǎn)娩鹉。但同時(shí)贞让,它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng)蝶糯,適合部署在廉價(jià)的機(jī)器上皂吮。HDFS能提供高吞吐量的數(shù)據(jù)訪問(wèn)益缠,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用扑眉。HDFS放寬了一部分POSIX約束纸泄,來(lái)實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。HDFS在最開(kāi)始是作為Apache Nutch搜索引擎項(xiàng)目的基礎(chǔ)架構(gòu)而開(kāi)發(fā)的襟雷。HDFS是Apache Hadoop Core項(xiàng)目的一部分刃滓。

硬件錯(cuò)誤

硬件錯(cuò)誤是常態(tài)而不是異常仁烹。HDFS可能由成百上千的服務(wù)器所構(gòu)成耸弄,每個(gè)服務(wù)器上存儲(chǔ)著文件系統(tǒng)的部分?jǐn)?shù)據(jù)。我們面對(duì)的現(xiàn)實(shí)是構(gòu)成系統(tǒng)的組件數(shù)目是巨大的卓缰,而且任一組件都有可能失效计呈,這意味著總是有一部分HDFS的組件是不工作的。因此錯(cuò)誤檢測(cè)和快速征唬、自動(dòng)的恢復(fù)是HDFS最核心的架構(gòu)目標(biāo)捌显。

流式數(shù)據(jù)訪問(wèn)

運(yùn)行在HDFS上的應(yīng)用和普通的應(yīng)用不同,需要流式訪問(wèn)它們的數(shù)據(jù)集总寒。HDFS的設(shè)計(jì)中更多的考慮到了數(shù)據(jù)批處理扶歪,而不是用戶交互處理。比之?dāng)?shù)據(jù)訪問(wèn)的低延遲問(wèn)題摄闸,更關(guān)鍵的在于數(shù)據(jù)訪問(wèn)的高吞吐量善镰。POSIX標(biāo)準(zhǔn)設(shè)置的很多硬性約束對(duì)HDFS應(yīng)用系統(tǒng)不是必需的。為了提高數(shù)據(jù)的吞吐量年枕,在一些關(guān)鍵方面對(duì)POSIX的語(yǔ)義做了一些修改炫欺。

大規(guī)模數(shù)據(jù)集

運(yùn)行在HDFS上的應(yīng)用具有很大的數(shù)據(jù)集。HDFS上的一個(gè)典型文件大小一般都在G字節(jié)至T字節(jié)熏兄。因此品洛,HDFS被調(diào)節(jié)以支持大文件存儲(chǔ)。它應(yīng)該能提供整體上高的數(shù)據(jù)傳輸帶寬摩桶,能在一個(gè)集群里擴(kuò)展到數(shù)百個(gè)節(jié)點(diǎn)桥状。一個(gè)單一的HDFS實(shí)例應(yīng)該能支撐數(shù)以千萬(wàn)計(jì)的文件。

簡(jiǎn)單的一致性模型

HDFS應(yīng)用需要一個(gè)“一次寫入多次讀取”的文件訪問(wèn)模型硝清。一個(gè)文件經(jīng)過(guò)創(chuàng)建岛宦、寫入和關(guān)閉之后就不需要改變。這一假設(shè)簡(jiǎn)化了數(shù)據(jù)一致性問(wèn)題耍缴,并且使高吞吐量的數(shù)據(jù)訪問(wèn)成為可能砾肺。Map/Reduce應(yīng)用或者網(wǎng)絡(luò)爬蟲應(yīng)用都非常適合這個(gè)模型挽霉。目前還有計(jì)劃在將來(lái)擴(kuò)充這個(gè)模型,使之支持文件的附加寫操作变汪。

“移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)更劃算”

一個(gè)應(yīng)用請(qǐng)求的計(jì)算侠坎,離它操作的數(shù)據(jù)越近就越高效,在數(shù)據(jù)達(dá)到海量級(jí)別的時(shí)候更是如此裙盾。因?yàn)檫@樣就能降低網(wǎng)絡(luò)阻塞的影響实胸,提高系統(tǒng)數(shù)據(jù)的吞吐量。將計(jì)算移動(dòng)到數(shù)據(jù)附近番官,比之將數(shù)據(jù)移動(dòng)到應(yīng)用所在顯然更好庐完。HDFS為應(yīng)用提供了將它們自己移動(dòng)到數(shù)據(jù)附近的接口。

異構(gòu)軟硬件平臺(tái)間的可移植性

HDFS在設(shè)計(jì)的時(shí)候就考慮到平臺(tái)的可移植性徘熔。這種特性方便了HDFS作為大規(guī)模數(shù)據(jù)應(yīng)用平臺(tái)的推廣门躯。

Namenode 和 Datanode

HDFS采用master/slave架構(gòu)。一個(gè)HDFS集群是由一個(gè)Namenode和一定數(shù)目的Datanodes組成酷师。Namenode是一個(gè)中心服務(wù)器讶凉,負(fù)責(zé)管理文件系統(tǒng)的名字空間(namespace)以及客戶端對(duì)文件的訪問(wèn)。集群中的Datanode一般是一個(gè)節(jié)點(diǎn)一個(gè)山孔,負(fù)責(zé)管理它所在節(jié)點(diǎn)上的存儲(chǔ)懂讯。HDFS暴露了文件系統(tǒng)的名字空間,用戶能夠以文件的形式在上面存儲(chǔ)數(shù)據(jù)台颠。從內(nèi)部看褐望,一個(gè)文件其實(shí)被分成一個(gè)或多個(gè)數(shù)據(jù)塊,這些塊存儲(chǔ)在一組Datanode上串前。Namenode執(zhí)行文件系統(tǒng)的名字空間操作瘫里,比如打開(kāi)、關(guān)閉酪呻、重命名文件或目錄减宣。它也負(fù)責(zé)確定數(shù)據(jù)塊到具體Datanode節(jié)點(diǎn)的映射。Datanode負(fù)責(zé)處理文件系統(tǒng)客戶端的讀寫請(qǐng)求玩荠。在Namenode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建漆腌、刪除和復(fù)制。

官方文檔還給出了圖片:

HDFS 架構(gòu)圖

? 我在嘗試使用HDFS上傳文件的時(shí)候阶冈,估計(jì)跟大家的感覺(jué)一樣闷尿,像是在本地上傳到本地的感覺(jué)。

? 而實(shí)際上HDFS是將文件分成若干塊保存在不同的服務(wù)器的節(jié)點(diǎn)中女坑,為了降低文件丟失造成的錯(cuò)誤填具,它會(huì)為每個(gè)小文件復(fù)制多個(gè)副本(默認(rèn)為三個(gè)),以此來(lái)實(shí)現(xiàn)多機(jī)器上的多用戶分享文件和存儲(chǔ)空間。

? 再來(lái)解釋一下上圖劳景,詳細(xì)講解一下Namenode與Datanode誉简。

Namenode


? 是有點(diǎn)類似于Linux的根目錄,管理數(shù)據(jù)塊映射盟广、處理客戶端的讀寫請(qǐng)求闷串、配置副本策略、管理HDFS的名稱空間筋量。

作用:

  • Namenode起一個(gè)統(tǒng)領(lǐng)的作用烹吵,用戶通過(guò)namenode來(lái)實(shí)現(xiàn)對(duì)其他數(shù)據(jù)的訪問(wèn)和操作,類似于root根目錄的感覺(jué)桨武。
  • Namenode內(nèi)存中儲(chǔ)存的是:fsimage(元數(shù)據(jù)[1]鏡像文件) + edits(元數(shù)據(jù)[1]的操作日志) 【此兩個(gè)文件也是核心文件】
  • Namenode中僅僅存儲(chǔ)目錄樹信息肋拔,而關(guān)于BLOCK的位置信息則是從各個(gè)Datanode上傳到Namenode上的。
  • Namenode的目錄樹信息就是物理的存儲(chǔ)在fsimage這個(gè)文件中的呀酸,當(dāng)Namenode啟動(dòng)的時(shí)候會(huì)首先讀取fsimage這個(gè)文件凉蜂,將目錄樹信息裝載到內(nèi)存中。

而edits存儲(chǔ)的是日志信息七咧,在Namenode啟動(dòng)后所有對(duì)目錄結(jié)構(gòu)的增加跃惫,刪除叮叹,修改等操作都會(huì)記錄到edits文件中艾栋,并不會(huì)同步的記錄在fsimage中。

而當(dāng)Namenode結(jié)點(diǎn)關(guān)閉的時(shí)候蛉顽,也不會(huì)將fsimage與edits文件進(jìn)行合并蝗砾,這個(gè)合并的過(guò)程實(shí)際上是發(fā)生在Namenode啟動(dòng)的過(guò)程中。

也就是說(shuō)携冤,當(dāng)Namenode啟動(dòng)的時(shí)候悼粮,首先裝載fsimage文件,然后在應(yīng)用edits文件曾棕,最后還會(huì)將最新的目錄樹信息更新到新的fsimage文件中扣猫,然后啟用新的edits文件∏痰兀【這個(gè)會(huì)在后面實(shí)踐的時(shí)候展示給大家看

整個(gè)流程是沒(méi)有問(wèn)題的申尤,但是有個(gè)小瑕疵,就是如果Namenode在啟動(dòng)后發(fā)生的改變過(guò)多衙耕,會(huì)導(dǎo)致edits文件變得非常大昧穿,大得程度與Namenode的更新頻率有關(guān)系。

那么在下一次Namenode啟動(dòng)的過(guò)程中橙喘,讀取了fsimage文件后时鸵,會(huì)應(yīng)用這個(gè)無(wú)比大的edits文件,導(dǎo)致啟動(dòng)時(shí)間變長(zhǎng)厅瞎,并且不可控饰潜,可能需要啟動(dòng)幾個(gè)小時(shí)也說(shuō)不定初坠。

Namenode的edits文件過(guò)大的問(wèn)題,也就是SecondeNamenode要解決的主要問(wèn)題彭雾。

SecondNamenode(副本Namenode)保存著NameNode的部分信息(不是全部信息NameNode宕掉之后恢復(fù)數(shù)據(jù)用)某筐,是NameNode的冷備份[2]【在這里順便科普熱備份[3]】,合并fsimage和edits然后再發(fā)給namenode冠跷,防止edits文件過(guò)大南誊,導(dǎo)致Namenode啟動(dòng)時(shí)間過(guò)長(zhǎng)。——》【執(zhí)行過(guò)程:從NameNode上 下載元數(shù)據(jù)信息(fsimage,edits)蜜托,然后把二者合并抄囚,生成新的fsimage,在本地保存橄务,并將其推送到NameNode幔托,同時(shí)重置NameNode的edits. 】

Datanode


? 是負(fù)責(zé)存儲(chǔ)client發(fā)來(lái)的數(shù)據(jù)塊block;執(zhí)行數(shù)據(jù)塊的讀寫操作蜂挪。是Namenode的小弟重挑。 DataNode在HDFS中真正存儲(chǔ)數(shù)據(jù)。

首先解釋塊(block)的概念:

  1. DataNode在存儲(chǔ)數(shù)據(jù)的時(shí)候是按照block為單位讀寫數(shù)據(jù)的棠涮。block是hdfs讀寫數(shù)據(jù)的基本單位谬哀。
  2. 假設(shè)文件大小是100GB,從字節(jié)位置0開(kāi)始严肪,每128MB字節(jié)劃分為一個(gè)block史煎,依此類推,可以劃分出很多的block驳糯。每個(gè)block就是128MB大小篇梭。
  3. block本質(zhì)上是一個(gè) 邏輯概念,意味著block里面不會(huì)真正的存儲(chǔ)數(shù)據(jù)酝枢,只是劃分文件的恬偷。
  4. block里也會(huì)存副本,副本優(yōu)點(diǎn)是安全帘睦,缺點(diǎn)是占空間

此處上一張大神的圖片:

一個(gè)100M的文件寫入到HDFS

總結(jié)特點(diǎn)

特點(diǎn):

  • 存儲(chǔ)最高TB級(jí)別大的文件
  • 采用流式的數(shù)據(jù)訪問(wèn)方式
  • 運(yùn)行的時(shí)候不吃硬件

不適用的場(chǎng)景:

  • 低延時(shí)的數(shù)據(jù)訪問(wèn)
  • 大量小文件
  • 多方讀寫袍患,需要任意的文件修改

具體的讀寫過(guò)程可以參考:【詳細(xì),值得參考官脓,幫助理解】

參考地址:https://www.cnblogs.com/wxplmm/p/7239342.html

要是大家還有對(duì)HDFS的讀寫有疑問(wèn)协怒,還可以參考一下鏈接:

地址:https://blog.csdn.net/wang_da_king/article/details/81258652

下一期,我們將下載hadoop卑笨,來(lái)簡(jiǎn)單體驗(yàn)一下HDFS孕暇。


  1. 描述數(shù)據(jù)的數(shù)據(jù),對(duì)數(shù)據(jù)及信息資源的描述性信息。(類似于Linux中的i節(jié)點(diǎn)) 妖滔。以 “blk_”開(kāi)頭的文件就是 存儲(chǔ)數(shù)據(jù)的block隧哮。這里的命名是有規(guī)律的,除了block文件外座舍,還有后 綴是“meta”的文件 沮翔,這是block的源數(shù)據(jù)文件,存放一些元數(shù)據(jù)信息曲秉。 ? ?

  2. b是a的冷備份采蚀,如果a壞掉。那么b不能馬上代替a工作承二。但是b上存儲(chǔ)a的一些信息榆鼠,減少a壞掉之后的損失。 ?

  3. b是a的熱備份亥鸠,如果a壞掉妆够。那么b馬上運(yùn)行代替a的工作。 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末负蚊,一起剝皮案震驚了整個(gè)濱河市神妹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌家妆,老刑警劉巖鸵荠,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異揩徊,居然都是意外死亡腰鬼,警方通過(guò)查閱死者的電腦和手機(jī)嵌赠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門塑荒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人姜挺,你說(shuō)我怎么就攤上這事齿税。” “怎么了炊豪?”我有些...
    開(kāi)封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵凌箕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我词渤,道長(zhǎng)牵舱,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任缺虐,我火速辦了婚禮芜壁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己慧妄,他們只是感情好顷牌,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著塞淹,像睡著了一般窟蓝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饱普,一...
    開(kāi)封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天运挫,我揣著相機(jī)與錄音,去河邊找鬼套耕。 笑死滑臊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的箍铲。 我是一名探鬼主播雇卷,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼颠猴!你這毒婦竟也來(lái)了关划?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤翘瓮,失蹤者是張志新(化名)和其女友劉穎贮折,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體资盅,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡调榄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呵扛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片每庆。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖今穿,靈堂內(nèi)的尸體忽然破棺而出缤灵,到底是詐尸還是另有隱情,我是刑警寧澤蓝晒,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布腮出,位于F島的核電站,受9級(jí)特大地震影響芝薇,放射性物質(zhì)發(fā)生泄漏胚嘲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一洛二、第九天 我趴在偏房一處隱蔽的房頂上張望馋劈。 院中可真熱鬧立倍,春花似錦、人聲如沸侣滩。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)君珠。三九已至寝志,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間策添,已是汗流浹背材部。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唯竹,地道東北人乐导。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像浸颓,于是被迫代替她去往敵國(guó)和親物臂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359