一、HDFS 的設計思路
1)思路
- 切分數據,並進行多副本存儲;
2)如果文件只以多副本進行存儲,而不進行切分,會有什么問題

-
缺點
- 不管文件多大,都存儲在一個節點上,在進行數據處理的時候很難進行並行處理,節點可能成為網絡瓶頸,很難進行大數據的處理;
- 存儲負載很難均衡,每個節點的利用率很低;
二、HDFS 的設計目標
- Hadoop Distributed File System(HDFS):源於Google 的 GFS 論文;
-
設計目標
- 分布式存儲:根據需要,水平橫向增加節點;
- 運行在普通廉價的硬件上
- 易擴展、為用戶提供性能不錯的(如果廉價的硬件損壞,不會給用戶帶來嚴重損失)文件存儲服務;
三、HDFS架構
- 一般一個 HDFS 的集群,由一個 NameNode(NN) 和 多個 DataNodes(DN) 組成;一般 NameNode 和 DataNodes 部署在不同的節點上;
-
NameNode:
- 管理文件系統的 namespace,以及客戶端對文件的訪問;
-
功能:
- 負責客戶端請求的響應;
- 負責元數據(文件的名稱、副本系數、Block存放的DataNode)的管理;
-
DataNodes
- 操作bolck的;一般每個節點有一個 DataNodes(集群上有幾個節點,就對應有幾個DataNodes,也一個節點也可以運行多DataNodes,不過一般不采用,使用一對一),管理文件應該存儲到哪個節點上;
-
功能:
- 存儲用戶的文件對應的數據塊(Block);
- 定期向NameNode發送本身及其所有的block信息,健康狀況;
- Blocks 是根據blocksize進行切分的;(blocksize=128M,130M==>128M + 2M)
- namespaces:操作文件的;打開、關閉、重命名文件,或者重命名目錄;

-
四、HDFS 的副本機制
- HDFS 支持多層級文件存儲(文件夾里有其它文件夾),
- 對文件系統命名空間做的任何操作,都會被記錄到 NameNode 中;
- 一個文件的所有 Block,除了最后一個Bolck,其它所有Block的大小都是一樣的(與 Blocksize 相同);

-
五、HDFS 的副本存放策略
- 一般默認存放 3 份副本:也是容錯安全考慮
- 第一個副本默認存放在當前操作的節點上;
- 第二個副本存放在不同與當前節點所在機架的某一個節點上;
- 第三個副本存放在與第二個副本相同機架的不同節點上;

