首頁技術文章正文

HDFS存儲架構【大數(shù)據(jù)技術文章】

更新時間:2020-12-30 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif

  HDFS是一個分布式的文件系統(tǒng),相比普通的文件系統(tǒng)來說更加復雜,因此在學習HDFS的操作之前有必要先來學習一下HDFS的存儲架構。如圖1所示。

圖1 HDFS存儲架構圖

  從圖1可以看出,HDFS采用主從架構(Master/Slave架構)。HDFS集群分別是由一個NameNode和多個的 DataNode組成。其中,NameNode是HDFS集群的主節(jié)點,負責管理文件系統(tǒng)的命名空間以及客戶端對文件的訪問;DataNode是集群的從節(jié)點,負責管理它所在節(jié)點上的數(shù)據(jù)存儲。HDFS分布式文件系統(tǒng)中的NameNode和DataNode兩種角色各司其職,共同協(xié)調完成分布式的文件存儲服務。

  那么,NameNode是如何管理分布式文件系統(tǒng)的命名空間呢?其實,在NameNode內部是以元數(shù)據(jù)的形式,維護著兩個文件,分別是FsImage鏡像文件和EditLog日志文件。其中,F(xiàn)sImage鏡像文件用于存儲整個文件系統(tǒng)命名空間的信息,EditLog日志文件用于持久化記錄文件系統(tǒng)元數(shù)據(jù)發(fā)生的變化。當NameNode啟動的時候,F(xiàn)sImage鏡像文件就會被加載到內存中,然后對內存里的數(shù)據(jù)執(zhí)行記錄的操作,以確保內存所保留的數(shù)據(jù)處于最新的狀態(tài),這樣就加快了元數(shù)據(jù)的讀取和更新操作。

  隨著集群運行時間長,NameNode中存儲的元數(shù)據(jù)信息越來越多,這樣就會導致EditLog日志文件越來越大。當集群重啟時,NameNode需要恢復元數(shù)據(jù)信息,首先加載上一次的FsImage鏡像文件,然后在重復EditLog日志文件的操作記錄,一旦EditLog日志文件很大,在合并的過程中就會花費很長時間,而且如果NameNode宕機就會丟失數(shù)據(jù)。為了解決這個問題,HDFS中提供了Secondary NameNode(輔助名稱節(jié)點),它并不是要取代掉NameNode也不是NameNode的備份, 它的職責主要是是周期性的把NameNode中的EditLog日志文件合并到FsImage鏡像文件中,從而減小EditLog日志文件的大小,縮短集群重啟時間,并且也保證了HDFS系統(tǒng)的完整性。

  Namenode存儲的是元數(shù)據(jù)信息,元數(shù)據(jù)信息并不是真正的數(shù)據(jù),真正的數(shù)據(jù)是存儲在DataNode中。DataNode是負責管理它所在節(jié)點上的數(shù)據(jù)存儲。DataNode中的數(shù)據(jù)塊是以文件的類型存儲在磁盤中,其中包含兩個文件,一是數(shù)據(jù)本身(僅數(shù)據(jù)),二是每個數(shù)據(jù)塊對應的一個元數(shù)據(jù)文件(包括數(shù)據(jù)長度,塊數(shù)據(jù)校驗和,以及時間戳)。



猜你喜歡:

Spark Shell讀取HDFS文件的步驟有哪些?

什么是DAG?有向無環(huán)圖的幾種連貫關系講解

Scala下載和環(huán)境變量配置教程

黑馬程序員大數(shù)據(jù)培訓課程 

分享到:
在線咨詢 我要報名
和我們在線交談!