HDFS 的可靠性主要有以下幾點:
可以在 hdfs-site.xml 中設(shè)置復(fù)制因子指定副本數(shù)量
所有數(shù)據(jù)塊都可副本
DataNode 啟動時,遍歷本地文件系統(tǒng),產(chǎn)生一份 HDFS 數(shù)據(jù)塊和本地文件的對應(yīng)關(guān)系列表 (blockreport) 匯報給 Namenode
HDFS 的"機架感知",通過節(jié)點之間發(fā)送一個數(shù)據(jù)包,來感應(yīng)它們是否在同一個機架
一般在本機架放一個副本,在其他機架再存放一個副本,這樣可以防止機架失效時丟失數(shù)據(jù),也可以提高帶寬利用率
NameNode 周期性從 DataNode 接受心跳信息和塊報告
NameNode 根據(jù)塊報告驗證元數(shù)據(jù)
沒有按時發(fā)送心跳的 DataNode 會被標記為宕機,不會再給他任何 I/O 請求
如果 DataNode 失效造成副本數(shù)量下降,并且低于預(yù)先設(shè)定的值,NameNode 會檢測出這些數(shù)據(jù)庫,并在合適的時機重新復(fù)制
引發(fā)重新復(fù)制的原因還包括數(shù)據(jù)副本本身損壞,磁盤錯誤,復(fù)制因子被增大等
NameNode 啟動時會先經(jīng)過一個 "安全模式" 階段
安全模式階段不會產(chǎn)生數(shù)據(jù)寫
在此階段 NameNode 收集各個 DataNode 的報告, 當數(shù)據(jù)塊達到最小副本數(shù)以上時,會被認為是"安全"的
在一定比例(可設(shè)置) 的數(shù)據(jù)塊被確定為"安全" 后 ,在過若干時間,安全模式結(jié)束
當檢測到副本數(shù)不足的數(shù)據(jù)塊時,該塊會被復(fù)制,直到達到最小副本數(shù)
在文件創(chuàng)立時,每個數(shù)據(jù)塊都產(chǎn)生效驗和
效驗和會作為單獨一個隱藏文件保存在命名空間下
客戶端獲取數(shù)據(jù)時可以檢查效驗和是否相同,從而發(fā)現(xiàn)數(shù)據(jù)塊是否損壞
如果正在讀取的數(shù)據(jù)塊損壞,則可以繼續(xù)讀取其他副本
刪除文件時,其實是放入回收站 /trash
回收站里的文件是可以快速恢復(fù)的
可以設(shè)置一個時間值,當回收站里文件的存放時間超過了這個值,就被徹底刪除,并且釋放占用的數(shù)據(jù)塊
映像文件和事物日志是 NameNode 的核心數(shù)據(jù).可以配置為擁有多個副本
副本會降低 NameNode 的處理速度,但增加安全性
NameNode 依然是單點,如果發(fā)生故障要手工切換
更多建議: