HDFS重要特性

首先,它是一個文件系統,用於存儲文件,通過統一的命名空間目錄樹來定位文件;

其次,它是分佈式的,由很多服務器聯合起來實現其功能,集羣中的服務器有各自的角色。

1. master/slave 架構

  HDFS 採用 master/slave 架構。一般一個 HDFS 集羣是有一個 Namenode 和一定數目的 Datanode 組成。Namenode 是 HDFS 集羣主節點,Datanode 是 HDFS 集羣從節點,兩種角色各司其職,共同協調完成分佈式的文件存儲服務。

2. 分塊存儲

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

3. 名字空間(NameSpace )

  HDFS 支持傳統的層次型文件組織結構。用戶或者應用程序可以創建目錄,然後將文件保存在這些目錄裏。文件系統名字空間的層次結構和大多數現有的文件系統類似:用戶可以創建、刪除、移動或重命名文件。

  Namenode 負責維護文件系統的名字空間,任何對文件系統名字空間或屬性的修改都將被 Namenode 記錄下來。

  HDFS 會給客戶端提供一個統一的抽象目錄樹,客戶端通過路徑來訪問文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。

4. Namenode 元數據管理

  我們把目錄結構及文件分塊位置信息叫做元數據。Namenode 負責維護整個hdfs 文件系統的目錄樹結構,以及每一個文件所對應的 block 塊信息(block 的id,及所在的 datanode 服務器)。

5. Datanode 數據存儲

  文件的各個 block 的具體存儲管理由 datanode 節點承擔。每一個 block 都可以在多個 datanode 上。Datanode 需要定時向 Namenode 彙報自己持有的 block信息。

  存儲多個副本(副本數量也可以通過參數設置 dfs.replication,默認是 3)。

6. 副本機制

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

7. 一次寫入,多次讀出

  HDFS 是設計成適應一次寫入,多次讀出的場景,且不支持文件的修改。

  正因爲如此,HDFS 適合用來做大數據分析的底層存儲服務,並不適合用來做網盤等應用,因爲,修改不方便,延遲大,網絡開銷大,成本太高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章