HDFS基本原理

Hadoop (HDFS)

Hadoop Distributed File System焕济,分布式文件系統(tǒng)

hdfs-architecture.png

架構(gòu)中的基本概念

  • block

    • 基本存儲單位,一般64M盔几,比數(shù)據(jù)庫中的頁要大很多
    • 基本的讀寫單位晴弃,類似于磁盤的頁,每次都是讀寫一個塊
    • 每個塊都會被復(fù)制到多臺機器逊拍,默認(rèn)復(fù)制3份
    • 配置大的block 減少搜尋時間肝匆,一般硬盤傳輸速率比尋道時間要快,大的塊可以減少尋道時間
    • 每個塊都需要在NameNode上有對應(yīng)的記錄
    • 對數(shù)據(jù)塊進行讀寫顺献,減少建立網(wǎng)絡(luò)的連接成本
    • 一個大文件會被拆分成一個個的塊,然后存儲于不同的機器枯怖。如果一個文件少于Block大小注整,那么實際占用的空間為其文件的大小
  • NameNode

    • 存儲文件的metadata,運行時所有數(shù)據(jù)都保存到內(nèi)存度硝,整個HDFS可存儲的文件數(shù)受限于NameNode的內(nèi)存大小
    • 一個Block在NameNode中對應(yīng)一條記錄(一般一個block占用150字節(jié))肿轨,如果是大量的小文件,會消耗大量內(nèi)存蕊程。同時map task的數(shù)量是由splits來決定的椒袍,所以用MapReduce處理大量的小文件時,就會產(chǎn)生過多的map task藻茂,線程管理開銷將會增加作業(yè)時間驹暑。處理大量小文件的速度遠遠小于處理同等大小的大文件的速度玫恳。因此Hadoop建議存儲大文件
    • 數(shù)據(jù)會定時保存到本地磁盤,但不保存block的位置信息优俘,而是由DataNode注冊時上報和運行時維護
    • NameNode中與DataNode相關(guān)的信息并不保存到NameNode的文件系統(tǒng)中京办,而是NameNode每次重啟后,動態(tài)重建
    • NameNode失效則整個HDFS都失效了帆焕,所以要保證NameNode的可用性
  • Secondary NameNode

    • 定時與NameNode進行同步,定期合并文件系統(tǒng)鏡像和編輯日志惭婿,然后把合并后的傳給NameNode,替換其鏡像叶雹,并清空編輯日志财饥,類似于CheckPoint機制
    • NameNode失效后仍需要手工將其設(shè)置成主機
  • DataNode

    • 保存具體的block數(shù)據(jù)
    • 負(fù)責(zé)數(shù)據(jù)的讀寫操作和復(fù)制操作
    • DataNode啟動時會向NameNode報告當(dāng)前存儲的數(shù)據(jù)塊信息,后續(xù)也會定時報告修改信息
    • DataNode之間會進行通信折晦,復(fù)制數(shù)據(jù)塊钥星,保證數(shù)據(jù)的冗余性
      HDFS 可靠性
  • datanode不可靠,datanode定時發(fā)送心跳到Namenode筋遭,如果一段時間namenode沒有datanode的心跳姻氨,則認(rèn)為其失效执俩,這時Namenode就會將該節(jié)點的數(shù)據(jù)從該節(jié)點的復(fù)制節(jié)點中copy到另外的datanode中,來保證datanode的復(fù)制數(shù)[圖片上傳中...(hdfs-read.png-b7387-1550415506760-0)]

  • 數(shù)據(jù)可以毀壞,和datanode失效一樣涯塔,如果通過檢驗碼檢測到數(shù)據(jù)有問題,同樣會復(fù)制一份正確的數(shù)據(jù)到健康的節(jié)點

  • Namenode也是有可能損壞的琼梆,要注意捶码,namenode損壞后整個HDFS就毀了了,所以要做好Namenode備份工作豁鲤,比如建立HA秽誊,或者把namenode數(shù)據(jù)寫入外部庫

HDFS - 寫文件

hdfs-write.png
  1. 客戶端發(fā)起將數(shù)據(jù)寫入文件
  2. 數(shù)據(jù)會先寫入本地臨時文件,當(dāng)臨時文件達到一個block的大小時琳骡,HDFS client通知NameNode锅论,申請寫入文件
  3. NameNode在HDFS的文件系統(tǒng)中創(chuàng)建文件,并把blockid和datanode的列表返回給客戶端
  4. 客戶端收到信息楣号,將臨時文件寫入DataNodes
    1. 客戶端將文件內(nèi)容寫入第一個DataNode最易,一般以4Kb為單位進行傳輸
    2. 第一個DataNode接收后,將數(shù)據(jù)寫入本地磁盤炫狱,同時也傳輸給第二個DataNode
    3. 依此類推到最后一個DataNode藻懒,數(shù)據(jù)在DataNode之間是通過pipeline的方式進行復(fù)制的
    4. 后面的DataNode接收完數(shù)據(jù)后,都會發(fā)送一個確認(rèn)給前一個DataNode视译,最終第一個DataNode返回確認(rèn)給客戶端
    5. 當(dāng)客戶端接收到整個block的確認(rèn)后嬉荆,會向NameNode發(fā)送一個最終的確認(rèn)信息
    6. 如果寫入某個DataNode失敗,數(shù)據(jù)會繼續(xù)寫入其他的DataNode酷含。然后NameNode會找另外一個好的DataNode繼續(xù)復(fù)制鄙早,以保證冗余性
    7. 每個block都會有一個校驗碼汪茧,并存放到獨立的文件中,以便讀的時候來驗證其完整性
  5. 文件寫完后,客戶端關(guān)閉.NameNode提交文件,這時文件才可見.

HDFS-讀文件

hdfs-read.png
  1. client向Namenode發(fā)送數(shù)據(jù)請求
  2. NameNode返回記錄的文件的block和block所在的所有的datanode蝶锋,包含復(fù)制節(jié)點
  3. client直接從DataNode中讀取數(shù)據(jù)陆爽,如果datanode讀取失敗則從復(fù)制節(jié)點中讀取

HDFS 命令

  • fsck :檢查文件的完整性
  • start-balancer.sh 重新平衡HDFS
  • hdfs dfs -copyFromLocal 從本地磁盤復(fù)制文件到HDFS
  • 未完待續(xù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扳缕,隨后出現(xiàn)的幾起案子慌闭,更是在濱河造成了極大的恐慌,老刑警劉巖躯舔,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驴剔,死亡現(xiàn)場離奇詭異,居然都是意外死亡粥庄,警方通過查閱死者的電腦和手機丧失,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惜互,“玉大人布讹,你說我怎么就攤上這事⊙刀眩” “怎么了描验?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坑鱼。 經(jīng)常有香客問我膘流,道長,這世上最難降的妖魔是什么鲁沥? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任呼股,我火速辦了婚禮,結(jié)果婚禮上画恰,老公的妹妹穿的比我還像新娘彭谁。我一直安慰自己,他們只是感情好允扇,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布缠局。 她就那樣靜靜地躺著,像睡著了一般蔼两。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逞度,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天额划,我揣著相機與錄音,去河邊找鬼档泽。 笑死俊戳,一個胖子當(dāng)著我的面吹牛揖赴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抑胎,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼燥滑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了阿逃?” 一聲冷哼從身側(cè)響起铭拧,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恃锉,沒想到半個月后搀菩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡破托,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年肪跋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片土砂。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡州既,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萝映,到底是詐尸還是另有隱情吴叶,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布锌俱,位于F島的核電站晤郑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贸宏。R本人自食惡果不足惜造寝,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吭练。 院中可真熱鬧诫龙,春花似錦、人聲如沸鲫咽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽分尸。三九已至锦聊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箩绍,已是汗流浹背孔庭。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人圆到。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓怎抛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芽淡。 傳聞我的和親對象是個殘疾皇子马绝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

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

  • 1.背景 HDFS最初是參考谷歌GFS論文原理開發(fā)的一個開源產(chǎn)品,由Lucene開源項目的創(chuàng)始人Doug Cutt...
    架構(gòu)禪話閱讀 1,373評論 0 2
  • Hadoop分布式文件系統(tǒng)(HDFS)是一種分布式文件系統(tǒng)挣菲。它與現(xiàn)有的分布式文件系統(tǒng)有許多相似之處富稻。但是,與其他分...
    逍遙ii閱讀 1,142評論 3 20
  • 畢業(yè)20年之后,我建議你去參加一下同學(xué)聚會纹笼,不是要你去攀比人生成就纹份,也不是要你去利用同學(xué)資源,而是看看人生20年長...
    艾霞0203閱讀 453評論 0 1
  • 廷痘。蔓涧。nothing to say 競標(biāo)中的問答詳情: 已經(jīng)獲取到數(shù)據(jù) 裝填數(shù)據(jù) 頭部:提問者信息 master列表...
    hzzz閱讀 176評論 0 0
  • 看見木村拓哉了嗎? 時隔重年笋额,我工作回來元暴,擦掉唯一涂抹的口紅,仍要感嘆他的美麗兄猩。 有一句話曾說:偉大的美貌從來都是...
    西庚閱讀 170評論 0 0