2015-11-17 35 views

回答

1

看看Apache documentation關於HDFS架構。

數據完整性

可能的是,從數據管理部獲取的數據的一個塊到達損壞。由於存儲設備故障,網絡故障或有問題的軟件,可能會發生此損壞。

它以下面的方式工作。

  1. HDFS客戶端軟件實現校驗和檢查器。當客戶端創建HDFS文件時,它會計算文件每個塊的校驗和,並將這些校驗和存儲在同一個HDFS名稱空間中的單獨隱藏文件中。

  2. 當客戶端檢索文件內容時,它會驗證從每個DataNode收到的數據是否與存儲在相關校驗和文件中的校驗和相匹配。

  3. 如果不是,則客戶端可以選擇從另一個具有該塊副本的DataNode中檢索該塊。

  4. 如果另一個數據節點塊的校驗和與隱藏文件的校驗和匹配,系統將爲這些數據塊提供服務。

看一看健壯性節了。如果沒有查看數據複製機制,解決方案將不完整。

  1. 每個DataNode定期向NameNode發送一個Heartbeat消息。

  2. 網絡分區可能導致DataNode的一個子集失去與NameNode的連接。 NameNode通過缺少Heartbeat消息來檢測這種情況。

  3. NameNode標記沒有最近Heartbeats的DataNode爲死,並且不會向它們轉發任何新的IO請求。任何註冊到死亡DataNode的數據不再可用於HDFS。

  4. DataNode死亡可能導致某些塊的複製因子降到其指定值以下。 NameNode會不斷跟蹤哪些塊需要複製,並在需要時啓動複製。

  5. 重新複製的必要性可能由於多種原因而出現:DataNode可能變得不可用,副本可能會損壞,DataNode上的硬盤可能會失敗,或者文件的複製因子可能會增加。複製方案的

實施例:

這取決於的cluster

dfs.replication 

(Assume that it is 3) 

dfs.namenode.replication.min配置(假設它是1)

在一個數據節點的情況下丟失,名稱節點將識別出塊被低複製。然後名稱節點將複製數據塊直到滿足dfs.replicaiton