Hadoop HDFS

2023-03-24 09:49 更新

簡介

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

架構(gòu)

hdfs-architecture

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

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

    2. 一個大文件會被拆分成一個個的塊,然后存儲于不同的機器。如果一個文件少于Block大小,那么實際占用的空間為其文件的大小

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

    4. 每個塊都會被復(fù)制到多臺機器,默認復(fù)制3份

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

  • NameNode

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

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

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

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

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

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

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

    3. DataNode啟動時會向NameNode報告當前存儲的數(shù)據(jù)塊信息,后續(xù)也會定時報告修改信息

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號