前言
HDFS(Hadoop Distributed File System)是一個分布式文件系統。它具有高容錯性並提供了高吞吐量的數據訪問,非常適合大規模數據集上的應用,它提供了一個高度容錯性和高吞吐量的海量數據存儲解決方案。
優點是:
高吞吐量訪問:HDFS的每個Block分布在不同的Rack上,在用戶訪問時,HDFS會計算使用最近和訪問量最小的服務器給用戶提供。
由於Block在不同的Rack上都有備份,所以不再是單數據訪問,所以速度和效率是非常快的。另外HDFS可以並行從服務器集群中讀寫,增加了文件讀寫的訪問帶寬。
高容錯性:系統故障是不可避免的,如何做到故障之后的數據恢復和容錯處理是至關重要的。
HDFS通過多方面保證數據的可靠性,多份復制並且分布到物理位置的不同服務器上,數據校驗功能、后台的連續自檢數據一致性功能都為高容錯提供了可能。
線性擴展:因為HDFS的Block信息存放到NameNode上,文件的Block分布到DataNode上,當擴充的時候僅僅添加DataNode數量,系統可以在不停止服務的情況下做擴充,不需要人工干預。
一、HDFS容錯機制

1.1、故障類型(三類故障)
1)節點失敗

2)網絡故障

3)數據損壞(臟數據)

1.2、故障檢測機制
1)節點失敗檢測機制



2)通信故障檢測機制

3)數據錯誤檢測機制



1.3、回復:心跳信息和數據塊報告

HDFS存儲理念是以最少的錢買最爛的機器並實現最安全、難度高的分布式文件系統(高容錯性低成本)。
從上可以看出,HDFS認為機器故障是種常態,所以在設計時充分考慮到單個機器故障,單個磁盤故障,單個文件丟失等情況。
1.4、讀寫容錯
1)寫容錯




2)讀容錯


1.5、數據節點(DN)失效






二、HDFS備份規則

1)機架與數據節點

2)副本放置策略
數據塊的第一個副本優先放在寫入數據塊的客戶端所在的節點上,但是如果這個客戶端上的數據節點空間不足或者是當前負載過重,則應該從該數據節點所在的機架中選擇一個合適的數據節點作為本地節點。
如果客戶端上沒有一個數據節點的話,則從整個集群中隨機選擇一個合適的數據節點作為此時這個數據塊的本地節點。

HDFS的存放策略是將一個副本存放在本地機架節點上,另外兩個副本放在不同機架的不同節點上。
這樣集群可在完全失去某一機架的情況下還能存活。同時,這種策略減少了機架間的數據傳輸,提高了寫操作的效率,因為數據塊只存放在兩個不同的機架上,
減少了讀取數據時需要的網絡傳輸總帶寬。這樣在一定程度上兼顧了數據安全和網絡傳輸的開銷。


