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