模塊一:Hadoop核心框架(五)----HDFS之重要概念

HDFS簡介

HDFS (全稱:Hadoop Distribute File System,Hadoop 分佈式文件系統)是 Hadoop 核心組成,是分佈式存儲服務。
分佈式文件系統橫跨多臺計算機,在大數據時代有着廣泛的應用前景,它們爲存儲和處理超大規模數據提供所需的擴展能力。
HDFS是分佈式文件系統中的一種

HDFS的重要概念

  • 典型的Master/Slave架構:
    HDFS 的架構是典型的 Master/Slave 結構。
    HDFS集羣往往是一個NameNode(HA架構會有兩個NameNode,聯邦機 制)+多個DataNode組成;
    NameNode是集羣的主節點,DataNode是集羣的從節點。

  • 分塊存儲(block機制)
    HDFS 中的文件在物理上是分塊存儲(block)的,塊的大小可以通過配置參數來規定;
    Hadoop2.x版本中默認的block大小是128M;

  • 命名空間(NameSpace)
    HDFS 支持傳統的層次型文件組織結構。用戶或者應用程序可以創建目錄,然後將文件保存在這些目錄裏。文件系統名字空間的層次結構和大多數現有的文件系統類似:用戶可以創建、刪除、移動或重命名文件。
    Namenode 負責維護文件系統的名字空間,任何對文件系統名字空間或屬性的修改都將被Namenode 記錄下來。
    HDFS提供給客戶單一個抽象目錄樹,訪問形式:hdfs://namenode的hostname:port/test/input;例如:hdfs://linux121:9000/test/input

  • NameNode元數據管理
    我們把目錄結構及文件分塊位置信息叫做元數據。
    NameNode的元數據記錄每一個文件所對應的block信息(block的id,以及所在的DataNode節點的信息)

  • DataNode數據存儲
    文件的各個 block 的具體存儲管理由 DataNode 節點承擔。一個block會有多個DataNode來存儲,DataNode會定時向NameNode來彙報自己持有的block信息。

  • 副本機制
    爲了容錯,文件的所有 block 都會有副本。每個文件的 block 大小和副本系數都是可配置的。應用程序可以指定某個文件的副本數目。副本系數可以在文件創建的時候指定,也可以在之後改變。副本數量默認是3個。

  • 一次寫入,多次讀出
    HDFS 是設計成適應一次寫入,多次讀出的場景,且不支持文件的隨機修改。 (支持追加寫入,不只支持隨機更新)
    正因爲如此,HDFS 適合用來做大數據分析的底層存儲服務,並不適合用來做網盤等應用(修改不方便,延遲大,網絡開銷大,成本太高)

HDFS架構

圖片來自它處

  • NameNode(nn):HDFS集羣管理者,Master

    • 維護管理HDFS的名稱空間(NameSpace)
    • 維護副本策略
    • 記錄文件Block的映射信息
    • 負責處理客戶端讀寫請求
  • DataNode:NameNode下達命令,DataNode執行實際操作,Slave節點。

    • 保存實際的數據塊
    • 負責數據塊的讀寫
  • Client:客戶端

    • 上傳文件到HDFS的時候,Client負責將文件切分成Block,然後進行上傳
    • 請求NameNode交互,獲取文件的位置信息
    • 讀取或寫入文件,與DataNode交互
    • Client可以使用一些命令來管理HDFS或者訪問HDFS
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章