Hadoop HDFS

2023-03-24 09:49 更新

簡(jiǎn)介

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

架構(gòu)

hdfs-architecture

  • Block數(shù)據(jù)塊;

    1. 基本存儲(chǔ)單位,一般大小為64M(配置大的塊主要是因?yàn)椋?br>1)減少搜尋時(shí)間,一般硬盤傳輸速率比尋道時(shí)間要快,大的塊可以減少尋道時(shí)間;
      2)減少管理塊的數(shù)據(jù)開銷,每個(gè)塊都需要在NameNode上有對(duì)應(yīng)的記錄;
      3)對(duì)數(shù)據(jù)塊進(jìn)行讀寫,減少建立網(wǎng)絡(luò)的連接成本)

    2. 一個(gè)大文件會(huì)被拆分成一個(gè)個(gè)的塊,然后存儲(chǔ)于不同的機(jī)器。如果一個(gè)文件少于Block大小,那么實(shí)際占用的空間為其文件的大小

    3. 基本的讀寫單位,類似于磁盤的頁,每次都是讀寫一個(gè)塊

    4. 每個(gè)塊都會(huì)被復(fù)制到多臺(tái)機(jī)器,默認(rèn)復(fù)制3份

 HDFS2.x以后的block默認(rèn)128M(截止至hadoop3.3.5版本仍是128M)

  • NameNode

    1. 存儲(chǔ)文件的metadata,運(yùn)行時(shí)所有數(shù)據(jù)都保存到內(nèi)存,整個(gè)HDFS可存儲(chǔ)的文件數(shù)受限于NameNode的內(nèi)存大小

    2. 一個(gè)Block在NameNode中對(duì)應(yīng)一條記錄(一般一個(gè)block占用150字節(jié)),如果是大量的小文件,會(huì)消耗大量?jī)?nèi)存。同時(shí)map task的數(shù)量是由splits來決定的,所以用MapReduce處理大量的小文件時(shí),就會(huì)產(chǎn)生過多的map task,線程管理開銷將會(huì)增加作業(yè)時(shí)間。處理大量小文件的速度遠(yuǎn)遠(yuǎn)小于處理同等大小的大文件的速度。因此Hadoop建議存儲(chǔ)大文件

    3. 數(shù)據(jù)會(huì)定時(shí)保存到本地磁盤,但不保存block的位置信息,而是由DataNode注冊(cè)時(shí)上報(bào)和運(yùn)行時(shí)維護(hù)(NameNode中與DataNode相關(guān)的信息并不保存到NameNode的文件系統(tǒng)中,而是NameNode每次重啟后,動(dòng)態(tài)重建)

    4. NameNode失效則整個(gè)HDFS都失效了,所以要保證NameNode的可用性
  • Secondary NameNode

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

    1. 保存具體的block數(shù)據(jù)

    2. 負(fù)責(zé)數(shù)據(jù)的讀寫操作和復(fù)制操作

    3. DataNode啟動(dòng)時(shí)會(huì)向NameNode報(bào)告當(dāng)前存儲(chǔ)的數(shù)據(jù)塊信息,后續(xù)也會(huì)定時(shí)報(bào)告修改信息

    4. DataNode之間會(huì)進(jìn)行通信,復(fù)制數(shù)據(jù)塊,保證數(shù)據(jù)的冗余性


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)