更新時間:2020-10-15 來源:黑馬程序員 瀏覽量:
HDFS,全稱Hadoop Distributed File System,意思是分布式文件系統(tǒng)。Hadoop分布式文件系統(tǒng)是指被設(shè)計成適合du運行在通用硬件(commodity hardware)上的分zhi布式文件系統(tǒng)。
HDFS 源于 Google 在2003年10月份發(fā)表的GFS(Google File System)論文,接下來,我們從傳統(tǒng)的文件系統(tǒng)入手,開始學(xué)習(xí)分布式文件系統(tǒng),以及分布式文件系統(tǒng)是如何演變而來。
傳統(tǒng)的文件系統(tǒng)對海量數(shù)據(jù)的處理方式是將數(shù)據(jù)文件直接存儲在一臺服務(wù)器上,如圖1所示。
圖1 傳統(tǒng)文件系統(tǒng)
從圖1可以看出,傳統(tǒng)的文件系統(tǒng)在存儲數(shù)據(jù)時,會遇到兩個問題,具體如下:
l 當(dāng)數(shù)據(jù)量越來越大時,會遇到存儲瓶頸,就需要擴容;
l 由于文件過大,上傳和下載都非常耗時;
為了解決傳統(tǒng)文件系統(tǒng)遇到的存儲瓶頸問題,那么首先考慮的就是擴容,擴容有兩種形式,一種是縱向擴容,即增加磁盤和內(nèi)存;另一種是橫向擴容,即增加服務(wù)器數(shù)量。通過擴大規(guī)模從而達到分布式存儲,這種存儲形式就是分布式文件存儲的雛形,如圖2所示。
圖2 分布式文件系統(tǒng)雛形
解決了分布式文件系統(tǒng)的存儲瓶頸問題之后,那么還需要解決文件上傳與下載的效率問題,常規(guī)的解決辦法是將一個大的文件切分成多個數(shù)據(jù)塊,將數(shù)據(jù)塊以并行的方式進行存儲。這里以30G的文本文件為例,將其切分成3塊,每塊大小10G(實際上每個數(shù)據(jù)塊都很小只有100M左右),將其存儲在文件系統(tǒng)中,如圖3所示。
圖3 分布式文件系統(tǒng)雛形
從圖3可以看出,原先一臺服務(wù)器要存儲30G的文件,此時每臺服務(wù)器只需要存儲10G的數(shù)據(jù)塊就完成了工作,從而解決了上傳下載的效率問題。但是文件通過數(shù)據(jù)塊分別存儲在服務(wù)器集群中,那么如何獲取一個完整的文件呢?針對這個問題,就需要再考慮增加一臺服務(wù)器,專門用來記錄文件被切割后的數(shù)據(jù)塊信息以及數(shù)據(jù)塊的存儲位置信息,如圖4所示。
圖4 HDFS文件系統(tǒng)雛形
從圖4可以看出,文件存儲系統(tǒng)中增加了一臺服務(wù)器A用于管理其他服務(wù)器,服務(wù)器A記錄著文件被切分成多少個數(shù)據(jù)塊,這些數(shù)據(jù)塊分別存儲在哪臺服務(wù)器中,這樣當(dāng)客戶端訪問服務(wù)器A請求下載數(shù)據(jù)文件時,就能夠通過類似查找目錄的方式查找數(shù)據(jù)了。
通過前面的操作,看似解決了所有問題,但其實還有一個非常關(guān)鍵的問題需要處理,那就是當(dāng)存儲數(shù)據(jù)塊的服務(wù)器中突然有一臺機器宕機,我們就無法正常的獲取文件了,這個問題被稱為單點故障。針對這個問題,可以采用備份的機制進行解決,如圖5所示。
圖5 HDFS文件系統(tǒng)
從圖5可以看出,每個服務(wù)器中都存儲兩個數(shù)據(jù)塊,進行備份。服務(wù)器B存儲blk-001和blk-002,服務(wù)器C存儲blk-002和blk-003,服務(wù)器D存儲blk-001和blk-003。此時,當(dāng)服務(wù)器C突然宕機,我們也可以通過服務(wù)器B和服務(wù)器D查詢完整的數(shù)據(jù)塊供客戶端訪問下載。此時就形成了簡單的HDFS分布式文件系統(tǒng)。
這里的服務(wù)器A被稱為NameNode,它維護著文件系統(tǒng)內(nèi)所有文件和目錄的相關(guān)信息,服務(wù)器B、C、D被稱為DataNode,用于存儲數(shù)據(jù)塊。
大數(shù)據(jù)能干什么?淺談大數(shù)據(jù)的應(yīng)用場景
2020-10-13Oozie從入門到精通視頻教程下載|黑馬程序員【最新】
2020-09-11大數(shù)據(jù)平臺數(shù)據(jù)遷移實戰(zhàn)方案|視頻教程【黑馬程序員】
2020-09-11數(shù)據(jù)湖架構(gòu)開發(fā)視頻教程【黑馬程序員】
2020-09-11大數(shù)據(jù)教程:從零搭建新冠疫情防控指揮作戰(zhàn)平臺
2020-09-11虛擬機安裝教程:同一臺電腦上構(gòu)建多個Linux虛擬機環(huán)境
2020-07-17