首頁(yè)技術(shù)文章正文

HDFS究竟是什么?HDFS是怎樣儲(chǔ)存數(shù)據(jù)的?

更新時(shí)間:2020-10-15 來(lái)源:黑馬程序員 瀏覽量:

  HDFS,全稱Hadoop Distributed File System,意思是分布式文件系統(tǒng)。Hadoop分布式文件系統(tǒng)是指被設(shè)計(jì)成適合du運(yùn)行在通用硬件(commodity hardware)上的分zhi布式文件系統(tǒng)。

  HDFS 源于 Google 在2003年10月份發(fā)表的GFS(Google File System)論文,接下來(lái),我們從傳統(tǒng)的文件系統(tǒng)入手,開始學(xué)習(xí)分布式文件系統(tǒng),以及分布式文件系統(tǒng)是如何演變而來(lái)。

  傳統(tǒng)的文件系統(tǒng)對(duì)海量數(shù)據(jù)的處理方式是將數(shù)據(jù)文件直接存儲(chǔ)在一臺(tái)服務(wù)器上,如圖1所示。

1602746648082_1.jpg

  圖1 傳統(tǒng)文件系統(tǒng)

  從圖1可以看出,傳統(tǒng)的文件系統(tǒng)在存儲(chǔ)數(shù)據(jù)時(shí),會(huì)遇到兩個(gè)問(wèn)題,具體如下:

  l 當(dāng)數(shù)據(jù)量越來(lái)越大時(shí),會(huì)遇到存儲(chǔ)瓶頸,就需要擴(kuò)容;

  l 由于文件過(guò)大,上傳和下載都非常耗時(shí);

  為了解決傳統(tǒng)文件系統(tǒng)遇到的存儲(chǔ)瓶頸問(wèn)題,那么首先考慮的就是擴(kuò)容,擴(kuò)容有兩種形式,一種是縱向擴(kuò)容,即增加磁盤和內(nèi)存;另一種是橫向擴(kuò)容,即增加服務(wù)器數(shù)量。通過(guò)擴(kuò)大規(guī)模從而達(dá)到分布式存儲(chǔ),這種存儲(chǔ)形式就是分布式文件存儲(chǔ)的雛形,如圖2所示。

1602746666694_2.jpg

  圖2 分布式文件系統(tǒng)雛形

  解決了分布式文件系統(tǒng)的存儲(chǔ)瓶頸問(wèn)題之后,那么還需要解決文件上傳與下載的效率問(wèn)題,常規(guī)的解決辦法是將一個(gè)大的文件切分成多個(gè)數(shù)據(jù)塊,將數(shù)據(jù)塊以并行的方式進(jìn)行存儲(chǔ)。這里以30G的文本文件為例,將其切分成3塊,每塊大小10G(實(shí)際上每個(gè)數(shù)據(jù)塊都很小只有100M左右),將其存儲(chǔ)在文件系統(tǒng)中,如圖3所示。

1602746683824_3.jpg

  圖3 分布式文件系統(tǒng)雛形

  從圖3可以看出,原先一臺(tái)服務(wù)器要存儲(chǔ)30G的文件,此時(shí)每臺(tái)服務(wù)器只需要存儲(chǔ)10G的數(shù)據(jù)塊就完成了工作,從而解決了上傳下載的效率問(wèn)題。但是文件通過(guò)數(shù)據(jù)塊分別存儲(chǔ)在服務(wù)器集群中,那么如何獲取一個(gè)完整的文件呢?針對(duì)這個(gè)問(wèn)題,就需要再考慮增加一臺(tái)服務(wù)器,專門用來(lái)記錄文件被切割后的數(shù)據(jù)塊信息以及數(shù)據(jù)塊的存儲(chǔ)位置信息,如圖4所示。

1602746712790_4.jpg

  圖4 HDFS文件系統(tǒng)雛形

  從圖4可以看出,文件存儲(chǔ)系統(tǒng)中增加了一臺(tái)服務(wù)器A用于管理其他服務(wù)器,服務(wù)器A記錄著文件被切分成多少個(gè)數(shù)據(jù)塊,這些數(shù)據(jù)塊分別存儲(chǔ)在哪臺(tái)服務(wù)器中,這樣當(dāng)客戶端訪問(wèn)服務(wù)器A請(qǐng)求下載數(shù)據(jù)文件時(shí),就能夠通過(guò)類似查找目錄的方式查找數(shù)據(jù)了。

  通過(guò)前面的操作,看似解決了所有問(wèn)題,但其實(shí)還有一個(gè)非常關(guān)鍵的問(wèn)題需要處理,那就是當(dāng)存儲(chǔ)數(shù)據(jù)塊的服務(wù)器中突然有一臺(tái)機(jī)器宕機(jī),我們就無(wú)法正常的獲取文件了,這個(gè)問(wèn)題被稱為單點(diǎn)故障。針對(duì)這個(gè)問(wèn)題,可以采用備份的機(jī)制進(jìn)行解決,如圖5所示。

1602746729179_5.jpg

  圖5 HDFS文件系統(tǒng)

  從圖5可以看出,每個(gè)服務(wù)器中都存儲(chǔ)兩個(gè)數(shù)據(jù)塊,進(jìn)行備份。服務(wù)器B存儲(chǔ)blk-001和blk-002,服務(wù)器C存儲(chǔ)blk-002和blk-003,服務(wù)器D存儲(chǔ)blk-001和blk-003。此時(shí),當(dāng)服務(wù)器C突然宕機(jī),我們也可以通過(guò)服務(wù)器B和服務(wù)器D查詢完整的數(shù)據(jù)塊供客戶端訪問(wèn)下載。此時(shí)就形成了簡(jiǎn)單的HDFS分布式文件系統(tǒng)。

  這里的服務(wù)器A被稱為NameNode,它維護(hù)著文件系統(tǒng)內(nèi)所有文件和目錄的相關(guān)信息,服務(wù)器B、C、D被稱為DataNode,用于存儲(chǔ)數(shù)據(jù)塊。


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!