新聞中心
一、介紹
HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系統(tǒng),具有高容錯(cuò)、高吞吐量等特性,可以部署在低成本的硬件上。
二、HDFS 設(shè)計(jì)原理
2.1 HDFS 架構(gòu)
HDFS 遵循主/從架構(gòu),由單個(gè) NameNode(NN) 和多個(gè) DataNode(DN) 組成:
- NameNode : 負(fù)責(zé)執(zhí)行有關(guān)
文件系統(tǒng)命名空間
的操作,例如打開,關(guān)閉、重命名文件和目錄等。它同時(shí)還負(fù)責(zé)集群元數(shù)據(jù)的存儲(chǔ),記錄著文件中各個(gè)數(shù)據(jù)塊的位置信息。 - DataNode:負(fù)責(zé)提供來自文件系統(tǒng)客戶端的讀寫請求,執(zhí)行塊的創(chuàng)建,刪除等操作。
2.2 文件系統(tǒng)命名空間
HDFS 的 文件系統(tǒng)命名空間
的層次結(jié)構(gòu)與大多數(shù)文件系統(tǒng)類似 (如 Linux), 支持目錄和文件的創(chuàng)建、移動(dòng)、刪除和重命名等操作,支持配置用戶和訪問權(quán)限,但不支持硬鏈接和軟連接。NameNode
負(fù)責(zé)維護(hù)文件系統(tǒng)名稱空間,記錄對名稱空間或其屬性的任何更改。
2.3 數(shù)據(jù)復(fù)制
由于 Hadoop 被設(shè)計(jì)運(yùn)行在廉價(jià)的機(jī)器上,這意味著硬件是不可靠的,為了保證容錯(cuò)性,HDFS 提供了數(shù)據(jù)復(fù)制機(jī)制。HDFS 將每一個(gè)文件存儲(chǔ)為一系列塊,每個(gè)塊由多個(gè)副本來保證容錯(cuò),塊的大小和復(fù)制因子可以自行配置(默認(rèn)情況下,塊大小是 128M,默認(rèn)復(fù)制因子是 3)。
2.4 數(shù)據(jù)復(fù)制的實(shí)現(xiàn)原理
大型的 HDFS 實(shí)例在通常分布在多個(gè)機(jī)架的多臺(tái)服務(wù)器上,不同機(jī)架上的兩臺(tái)服務(wù)器之間通過交換機(jī)進(jìn)行通訊。在大多數(shù)情況下,同一機(jī)架中的服務(wù)器間的網(wǎng)絡(luò)帶寬大于不同機(jī)架中的服務(wù)器之間的帶寬。因此 HDFS 采用機(jī)架感知副本放置策略,對于常見情況,當(dāng)復(fù)制因子為 3 時(shí),HDFS 的放置策略是:
在寫入程序位于 datanode
上時(shí),就優(yōu)先將寫入文件的一個(gè)副本放置在該 datanode
上,否則放在隨機(jī) datanode
上。之后在另一個(gè)遠(yuǎn)程機(jī)架上的任意一個(gè)節(jié)點(diǎn)上放置另一個(gè)副本,并在該機(jī)架上的另一個(gè)節(jié)點(diǎn)上放置最后一個(gè)副本。此策略可以減少機(jī)架間的寫入流量,從而提高寫入性能。
架.png)
如果復(fù)制因子大于 3,則隨機(jī)確定第 4 個(gè)和之后副本的放置位置,同時(shí)保持每個(gè)機(jī)架的副本數(shù)量低于上限,上限值通常為
(復(fù)制系數(shù) - 1)/機(jī)架數(shù)量 + 2
,需要注意的是不允許同一個(gè) dataNode
上具有同一個(gè)塊的多個(gè)副本。2.5 副本的選擇
為了大限度地減少帶寬消耗和讀取延遲,HDFS 在執(zhí)行讀取請求時(shí),優(yōu)先讀取距離讀取器最近的副本。如果在與讀取器節(jié)點(diǎn)相同的機(jī)架上存在副本,則優(yōu)先選擇該副本。如果 HDFS 群集跨越多個(gè)數(shù)據(jù)中心,則優(yōu)先選擇本地?cái)?shù)據(jù)中心上的副本。
2.6 架構(gòu)的穩(wěn)定性
1. 心跳機(jī)制和重新復(fù)制
每個(gè) DataNode 定期向 NameNode 發(fā)送心跳消息,如果超過指定時(shí)間沒有收到心跳消息,則將 DataNode 標(biāo)記為死亡。NameNode 不會(huì)將任何新的 IO 請求轉(zhuǎn)發(fā)給標(biāo)記為死亡的 DataNode,也不會(huì)再使用這些 DataNode 上的數(shù)據(jù)。 由于數(shù)據(jù)不再可用,可能會(huì)導(dǎo)致某些塊的復(fù)制因子小于其指定值,NameNode 會(huì)跟蹤這些塊,并在必要的時(shí)候進(jìn)行重新復(fù)制。
2. 數(shù)據(jù)的完整性
由于存儲(chǔ)設(shè)備故障等原因,存儲(chǔ)在 DataNode 上的數(shù)據(jù)塊也會(huì)發(fā)生損壞。為了避免讀取到已經(jīng)損壞的數(shù)據(jù)而導(dǎo)致錯(cuò)誤,HDFS 提供了數(shù)據(jù)完整性校驗(yàn)機(jī)制來保證數(shù)據(jù)的完整性,具體操作如下:
當(dāng)客戶端創(chuàng)建 HDFS 文件時(shí),它會(huì)計(jì)算文件的每個(gè)塊的 校驗(yàn)和
,并將 校驗(yàn)和
存儲(chǔ)在同一 HDFS 命名空間下的單獨(dú)的隱藏文件中。當(dāng)客戶端檢索文件內(nèi)容時(shí),它會(huì)驗(yàn)證從每個(gè) DataNode 接收的數(shù)據(jù)是否與存儲(chǔ)在關(guān)聯(lián)校驗(yàn)和文件中的 校驗(yàn)和
匹配。如果匹配失敗,則證明數(shù)據(jù)已經(jīng)損壞,此時(shí)客戶端會(huì)選擇從其他 DataNode 獲取該塊的其他可用副本。
3.元數(shù)據(jù)的磁盤故障
FsImage
和 EditLog
是 HDFS 的核心數(shù)據(jù),這些數(shù)據(jù)的意外丟失可能會(huì)導(dǎo)致整個(gè) HDFS 服務(wù)不可用。為了避免這個(gè)問題,可以配置 NameNode 使其支持 FsImage
和 EditLog
多副本同步,這樣 FsImage
或 EditLog
的任何改變都會(huì)引起每個(gè)副本 FsImage
和 EditLog
的同步更新。
4.支持快照
快照支持在特定時(shí)刻存儲(chǔ)數(shù)據(jù)副本,在數(shù)據(jù)意外損壞時(shí),可以通過回滾操作恢復(fù)到健康的數(shù)據(jù)狀態(tài)。
三、HDFS 的特點(diǎn)
3.1 高容錯(cuò)
由于 HDFS 采用數(shù)據(jù)的多副本方案,所以部分硬件的損壞不會(huì)導(dǎo)致全部數(shù)據(jù)的丟失。
3.2 高吞吐量
HDFS 設(shè)計(jì)的重點(diǎn)是支持高吞吐量的數(shù)據(jù)訪問,而不是低延遲的數(shù)據(jù)訪問。
3.3 大文件支持
HDFS 適合于大文件的存儲(chǔ),文檔的大小應(yīng)該是是 GB 到 TB 級別的。
3.3 簡單一致性模型
HDFS 更適合于一次寫入多次讀取 (write-once-read-many) 的訪問模型。支持將內(nèi)容追加到文件末尾,但不支持?jǐn)?shù)據(jù)的隨機(jī)訪問,不能從文件任意位置新增數(shù)據(jù)。
3.4 跨平臺(tái)移植性
HDFS 具有良好的跨平臺(tái)移植性,這使得其他大數(shù)據(jù)計(jì)算框架都將其作為數(shù)據(jù)持久化存儲(chǔ)的選方案。
附:圖解HDFS存儲(chǔ)原理
說明:以下圖片引用自博客:翻譯經(jīng)典 HDFS 原理講解漫畫
1. HDFS寫數(shù)據(jù)原理
2. HDFS讀數(shù)據(jù)原理
3. HDFS故障類型和其檢測方法
第二部分:讀寫故障的處理
第三部分:DataNode 故障處理
副本布局策略:
參考資料
- Apache Hadoop 2.9.2 > HDFS Architecture
- Tom White . hadoop 權(quán)威指南 [M] . 清華大學(xué)出版社 . 2017.
- 翻譯經(jīng)典 HDFS 原理講解漫畫
更多大數(shù)據(jù)系列文章可以參見 GitHub 開源項(xiàng)目: 大數(shù)據(jù)入門指南
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文名稱:Hadoop系列(一)——分布式文件系統(tǒng)HDFS-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://www.dlmjj.cn/article/doosig.html