hdfs 的容災

dfs.name.dir (namenode的路徑) 可以配置多個路徑(也就是說可以多磁盤)但這些目錄中的文件都是一樣的 (可以防止某磁盤掛掉,做備份)

dfs.data.dir (datanode的路徑) 也可配置多個。但數據時不一樣的也就是利用多塊磁盤來存儲數據。至於datanode 的容災措施, hdfs 會默認把datanode數據copy三份  一個放在本地機架的節點,一個放在同一機架的另一節點,另一個放在其他機架上。 當namenode長時間接收不到(默認1h)datanode的心跳 就認爲其掛掉 就會自動從備份數據中取數據塊。

 

(1)在Namenode和Datanode之間維持心跳檢測,當由於網絡故障之類的原因,導致Datanode發出的心跳包沒有被Namenode正常收 到的時候,Namenode就不會將任何新的IO操作派發給那個Datanode,該Datanode上的數據被認爲是無效的,因此Namenode會檢 測是否有文件block的副本數目小於設置值,如果小於就自動開始複製新的副本並分發到其他Datanode節點。
(2)檢測文件block的完整性,HDFS會記錄每個新創建的文件的所有block的校驗和。當以後檢索這些文件的時候,從某個節點獲取block,會首先確認校驗和是否一致,如果不一致,會從其他Datanode節點上獲取該block的副本。
(3)集羣的負載均衡,由於節點的失效或者增加,可能導致數據分佈的不均勻,當某個Datanode節點的空閒空間大於一個臨界值的時候,HDFS會自動從其他Datanode遷移數據過來。
(4)Namenode上的fsimage和edits日誌文件是HDFS的核心數據結構,如果這些文件損壞了,HDFS將失效。因而, Namenode可以配置成支持維護多 個 FsImage和 Editlog的拷貝。任何對 FsImage或者 Editlog的修改,都將同步到它們的副本上。 它總是選取最近的一致的 FsImage和 Editlog使用。 Namenode在 HDFS是單點存在,如果 Namenode所在的機器錯誤,手工的干預是必須的。
(5)文件的刪除,刪除並不是馬上從Namenode移出namespace,而是放在/ trash目錄隨時可恢復,直到超過設置時間才被正式移除。

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