大數(shù)據(jù)hadoop生態(tài)體系之文件處理HDFS(7)

HDFS:(Hadoop Distributed File System )分布式文件處理系統(tǒng)躯嫉,Hadoop生態(tài)體系的核心功能之一颈娜,主要用于數(shù)據(jù)文件的分割處理及存儲等季春。

HDFS的特點:

1潮改、高容錯性

? ? ?數(shù)據(jù)自動保存多個副本。它通過增加副本的形式亚茬,提高容錯性。

? ? ?某一個副本丟失以后浓恳,它可以自動恢復(fù)刹缝,這是由 HDFS 內(nèi)部機制實現(xiàn)的碗暗,我們不必關(guān)心。

2梢夯、適合批處理

? ? ?它是通過移動計算而不是移動數(shù)據(jù)言疗,移動計算比移動數(shù)據(jù)更劃算:核心思路是,大數(shù)據(jù)文件的移動考慮到颂砸,網(wǎng)絡(luò)帶寬噪奄,,傳輸速度人乓,存儲設(shè)備等因素成本非常高勤篮,既然數(shù)據(jù)是龐大的,而程序要比數(shù)據(jù)小得多色罚,將數(shù)據(jù)輸入給程序是不劃算的碰缔,那么就反其道而行之,將程序分發(fā)到數(shù)據(jù)所在的地方進行計算戳护,也就是所謂的移動計算比移動數(shù)據(jù)更劃算金抡。

? ? ?它會把數(shù)據(jù)位置暴露給計算框架。

3姑尺、適合大數(shù)據(jù)處理

? ? ?處理數(shù)據(jù)達到 GB竟终、TB、甚至PB級別的數(shù)據(jù)切蟋。

? ? ?能夠處理百萬規(guī)模以上的文件數(shù)量统捶,數(shù)量相當(dāng)之大。

? ? ?能夠處理10K節(jié)點的規(guī)模柄粹。

4喘鸟、流式文件訪問

? ? ?一次寫入,多次讀取驻右。文件一旦寫入不能修改什黑,只能追加。

? ? ?它能保證數(shù)據(jù)的一致性堪夭。

5愕把、可構(gòu)建在廉價機器上

? ? ?它通過多副本機制,提高可靠性森爽。

? ? ?它提供了容錯和恢復(fù)機制恨豁。比如某一個副本丟失,可以通過其它副本來恢復(fù)爬迟。

當(dāng)然 HDFS 也有它的劣勢橘蜜,并不適合所有的場合:

1、低延時數(shù)據(jù)訪問

? ? ?比如毫秒級的來存儲數(shù)據(jù)付呕,這是不行的计福,它做不到跌捆。

? ? ?它適合高吞吐率的場景,就是在某一時間內(nèi)寫入大量的數(shù)據(jù)象颖。但是它在低延時的情況下是不行的佩厚,比如毫秒級以內(nèi)讀取數(shù)據(jù),這樣它是很難做到的力麸。

2可款、小文件存儲

? ? ?存儲大量小文件(這里的小文件是指小于HDFS系統(tǒng)的Block大小的文件(默認64M))的話,它會占用 NameNode大量的內(nèi)存來存儲文件克蚂、目錄和塊信息闺鲸。這樣是不可取的,因為NameNode的內(nèi)存總是有限的埃叭。

? ? ?小文件存儲的尋道時間會超過讀取時間摸恍,它違反了HDFS的設(shè)計目標(biāo)。

3赤屋、并發(fā)寫入立镶、文件隨機修改

? ? ?一個文件只能有一個寫,不允許多個線程同時寫类早。

? ? ?僅支持?jǐn)?shù)據(jù) append(追加)媚媒,不支持文件的隨機修改。

HDFS的架構(gòu)模式:

HDFS采用主從架構(gòu)方式(master/slave)進行文件的存儲處理操作涩僻,通過Namenode作為主節(jié)點進行數(shù)據(jù)文件命名空間的管理缭召,Datanode數(shù)據(jù)節(jié)點進行數(shù)據(jù)塊的存儲。

? hdsf架構(gòu)圖

HDFS 架構(gòu)主要由四個部分組成逆日,分別為HDFS Client嵌巷、NameNode、DataNode和Secondary NameNode室抽。

1搪哪、Client:就是客戶端。??

? ? ?文件切分坪圾。文件上傳 HDFS 的時候晓折,Client 將文件切分成 一個一個的Block,然后進行存儲兽泄。

? ? ?與 NameNode 交互已维,獲取文件的位置信息。

? ? ?與 DataNode 交互已日,讀取或者寫入數(shù)據(jù)。

? ? ?Client 提供一些命令來管理 HDFS栅屏,比如啟動或者關(guān)閉HDFS飘千。

? ? ?Client 可以通過一些命令來訪問 HDFS堂鲜。

2、NameNode:就是 master护奈,它是一個主管缔莲、管理者。

? ? ?管理 HDFS 的名稱空間

? ? ?管理數(shù)據(jù)塊(Block)映射信息

? ? ?配置副本策略

? ? ?處理客戶端讀寫請求霉旗。

3痴奏、DataNode:就是Slave。NameNode 下達命令厌秒,DataNode 執(zhí)行實際的操作读拆。

? ? ?存儲實際的數(shù)據(jù)塊。

? ? ?執(zhí)行數(shù)據(jù)塊的讀/寫操作鸵闪。

4檐晕、Secondary NameNode:并非 NameNode 的熱備。當(dāng)NameNode 掛掉的時候蚌讼,它并不能馬上替換 NameNode 并提供服務(wù)辟灰。

? ? ?輔助 NameNode,分擔(dān)其工作量篡石。

? ? ?定期合并 fsimage和fsedits芥喇,并推送給NameNode。

? ? ?在緊急情況下凰萨,可輔助恢復(fù) NameNode继控。

HDFS 如何讀取文件:

HDFS的文件讀取原理,主要包括以下幾個步驟:

首先調(diào)用FileSystem對象的open方法沟蔑,其實獲取的是一個DistributedFileSystem的實例湿诊。

DistributedFileSystem通過RPC(遠程過程調(diào)用)獲得文件的第一批block的locations,同一block按照重復(fù)數(shù)會返回多個locations瘦材,這些locations按照hadoop拓撲結(jié)構(gòu)排序厅须,距離客戶端近的排在前面。

前兩步會返回一個FSDataInputStream對象食棕,該對象會被封裝成 DFSInputStream對象朗和,DFSInputStream可以方便的管理datanode和namenode數(shù)據(jù)流〔鞠客戶端調(diào)用read方法眶拉,DFSInputStream就會找出離客戶端最近的datanode并連接datanode。

數(shù)據(jù)從datanode源源不斷的流向客戶端憔儿。

如果第一個block塊的數(shù)據(jù)讀完了忆植,就會關(guān)閉指向第一個block塊的datanode連接,接著讀取下一個block塊。這些操作對客戶端來說是透明的朝刊,從客戶端的角度來看只是讀一個持續(xù)不斷的流耀里。

如果第一批block都讀完了,DFSInputStream就會去namenode拿下一批blocks的location拾氓,然后繼續(xù)讀冯挎,如果所有的block塊都讀完,這時就會關(guān)閉掉所有的流咙鞍。

HDFS 如何寫入文件:

HDFS的文件寫入原理房官,主要包括以下幾個步驟:

客戶端通過調(diào)用 DistributedFileSystem 的create方法,創(chuàng)建一個新的文件续滋。

DistributedFileSystem 通過 RPC(遠程過程調(diào)用)調(diào)用 NameNode翰守,去創(chuàng)建一個沒有blocks關(guān)聯(lián)的新文件。創(chuàng)建前吃粒,NameNode 會做各種校驗潦俺,比如文件是否存在,客戶端有無權(quán)限去創(chuàng)建等徐勃。如果校驗通過事示,NameNode 就會記錄下新文件,否則就會拋出IO異常僻肖。

前兩步結(jié)束后會返回 FSDataOutputStream 的對象肖爵,和讀文件的時候相似,F(xiàn)SDataOutputStream 被封裝成 DFSOutputStream臀脏,DFSOutputStream 可以協(xié)調(diào) NameNode和 DataNode劝堪。客戶端開始寫數(shù)據(jù)到DFSOutputStream,DFSOutputStream會把數(shù)據(jù)切成一個個小packet揉稚,然后排成隊列 data queue秒啦。

DataStreamer 會去處理接受 data queue,它先問詢 NameNode 這個新的 block 最適合存儲的在哪幾個DataNode里搀玖,比如重復(fù)數(shù)是3余境,那么就找到3個最適合的 DataNode,把它們排成一個 pipeline灌诅。DataStreamer 把 packet 按隊列輸出到管道的第一個 DataNode 中芳来,第一個 DataNode又把 packet 輸出到第二個 DataNode 中,以此類推猜拾。

DFSOutputStream 還有一個隊列叫 ack queue即舌,也是由 packet 組成,等待DataNode的收到響應(yīng)挎袜,當(dāng)pipeline中的所有DataNode都表示已經(jīng)收到的時候顽聂,這時akc queue才會把對應(yīng)的packet包移除掉肥惭。

客戶端完成寫數(shù)據(jù)后,調(diào)用close方法關(guān)閉寫入流芜飘。

DataStreamer 把剩余的包都刷到 pipeline 里务豺,然后等待 ack 信息,收到最后一個 ack 后嗦明,通知 DataNode 把文件標(biāo)示為已完成。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚪燕,一起剝皮案震驚了整個濱河市娶牌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馆纳,老刑警劉巖诗良,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鲁驶,居然都是意外死亡鉴裹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門钥弯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來径荔,“玉大人,你說我怎么就攤上這事脆霎∽艽Γ” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵睛蛛,是天一觀的道長鹦马。 經(jīng)常有香客問我,道長忆肾,這世上最難降的妖魔是什么荸频? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮客冈,結(jié)果婚禮上旭从,老公的妹妹穿的比我還像新娘。我一直安慰自己郊酒,他們只是感情好遇绞,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著燎窘,像睡著了一般摹闽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褐健,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天付鹿,我揣著相機與錄音澜汤,去河邊找鬼。 笑死舵匾,一個胖子當(dāng)著我的面吹牛俊抵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坐梯,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼徽诲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吵血?” 一聲冷哼從身側(cè)響起谎替,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蹋辅,沒想到半個月后钱贯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡侦另,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年秩命,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褒傅。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡弃锐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出樊卓,到底是詐尸還是另有隱情拿愧,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布碌尔,位于F島的核電站浇辜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唾戚。R本人自食惡果不足惜柳洋,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叹坦。 院中可真熱鬧熊镣,春花似錦、人聲如沸募书。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莹捡。三九已至鬼吵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間篮赢,已是汗流浹背齿椅。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工琉挖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涣脚。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓示辈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親遣蚀。 傳聞我的和親對象是個殘疾皇子矾麻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

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

  • 轉(zhuǎn)載自:https://cloud.tencent.com/developer/article/1031641ht...
    code_solve閱讀 1,857評論 0 7
  • Hadoop分布式文件系統(tǒng)(HDFS)是一種分布式文件系統(tǒng)。它與現(xiàn)有的分布式文件系統(tǒng)有許多相似之處妙同。但是射富,與其他分...
    逍遙ii閱讀 1,145評論 3 20
  • 介紹 Hadoop分布式文件系統(tǒng)(HDFS)是一種運行在通用硬件上的分布式文件系統(tǒng)。它與傳統(tǒng)的分布式文件系統(tǒng)有很多...
    sakersun閱讀 995評論 0 1
  • 白天有說有笑粥帚,晚上睡個好覺;明明早已做到限次,何必再尋煩惱芒涡?生活可以簡單,無需得道成仙卖漫;少喝心靈雞湯费尽,吃素身心健康~致...
    武哥設(shè)計顧問閱讀 158評論 0 0
  • 一生中會有很多有特殊意義的日子,難過的羊始、開心的旱幼、痛苦的、驚喜的……但是隨著時間的飛逝突委,它們總會被我們淡忘乃至遺忘柏卤,...
    亞研閱讀 101評論 0 0