架構師入門必看系列,分散式檔案系統HDFS解讀

架構設計頻道發表於2018-10-08

【IT168 技術】在Hadoop生態系統中,Hadoop分散式檔案系統(HDFS)是非常關鍵的一環,它為管理大資料資源池和支撐相關大資料分析應用提供了一個具有高可靠性的工具。在分散式儲存領域,HDFS也扮演著重要角色,是作為系統架構師必須瞭解的分散式檔案系統之一。

HDFS的工作原理

HDFS支援在計算節點之間快速傳輸資料。在開始階段,它與MapReduce緊密耦合——MapReduce是一個用於大規模資料集的並行運算的程式設計框架。

當HDFS接收資料時,會將資訊分解為單獨的塊,並將它們分佈到叢集中的不同節點,從而支援高效的並行處理。

此外,HDFS專門設計有高容錯的特性。HDFS可以多次複製每個資料片段,並將副本分發給各個節點,將至少一個副本放在其他伺服器機架上。因此,在叢集中的其他地方也可以找到崩潰節點上的資料。這確保了在恢復資料時可以繼續進行處理。

HDFS使用主/從架構。在其最初版本中,每個Hadoop叢集由一個NameNode(用於管理檔案系統執行)和支援DataNode(用於管理單個計算節點上的資料儲存)組成。這些HDFS元素結合起來,可支援具有大資料集的應用程式。

這個主節點“資料分塊”架構,從谷歌檔案系統(GFS)以及IBM的通用並行檔案系統(GPFS)中吸取了部分設計指導元素。GFS是一個可擴充套件的分散式檔案系統,用於大型的、分散式的、對大量資料進行訪問的應用。它執行於廉價的普通硬體上,並提供容錯功能,可以給大量的使用者提供總體效能較高的服務。GPFS是一種專門為叢集環境設計的高效能、可擴充套件的並行檔案系統,可以在叢集中的多個節點間實現對共享檔案系統中檔案的快速存取操作,並提供穩定的故障恢復和容錯機制。此外,雖然HDFS不是與可移植作業系統介面(POSIX)的模型相容的,但它在某些方面也與POSIX設計風格相呼應。

HDFS架構圖-應用程式透過Client與NameNode和DataNode進行互動

為什麼要使用HDFS

HDFS最早出自雅虎,用於滿足該公司廣告服務和搜尋引擎的部分需求。與其他面向Web的公司一樣,雅虎發現自己需要處理的應用程式的使用者訪問越來越多,而這些使用者正在產生越來越多的資料。後來,Facebook、eBay和Twitter等公司也開始使用HDFS作為大資料分析的基礎,來解決相同的需求。

但HDFS的用途遠不止於此。上述所提到的大規模Web搜尋,我們可以將其歸類於資料密集型平行計算。此外,HDFS也常用於計算密集型平行計算應用場景,如氣象計算。在資料密集與計算密集混合型場景中也多有應用,如3D建模與渲染。HDFS也是許多開源資料倉儲(有時稱為資料湖,Data Lake)的核心。

HDFS通常用於大規模部署,因為它具備一個重要特性,就是可執行在普通廉價機器上。還有,例如執行Web搜尋和相關應用程式的這種系統,往往需要可以擴充套件到數百PB和數千個節點,因此係統必須擁有易於擴充套件的特性,這正是HDFS所具備的。此外,伺服器故障在這種規模下很常見,HDFS所提供的容錯能力在這方面也很有實際價值。

不適用於HDFS的場景

首先,HDFS不適用於對延遲要求較高的場景,如實時查詢。在延遲方面,HDFS沒有充分的優勢。其次,HDFS也難以支援大量小檔案的儲存。在Hadoop系統中,通常將“小檔案”定義為遠小於HDFS的block size(預設64MB)的檔案,由於每個檔案都會產生各自的MetaData後設資料,Hadoop透過Namenode來儲存這些資訊,若小檔案過多,容易導致佔用大量NameNode記憶體,也會使尋道時間超過讀取時間,為系統帶來效能瓶頸。

此外,HDFS不支援多使用者寫入,也無法進行檔案隨機修改。僅支援以append的方式,即透過追加的方式新增到檔案結尾處。HDFS適用於儲存半結構化和非結構化資料,若有資料嚴格的結構化特性,強行採用HDFS是不合適的。最後,HDFS適用於TB、PB級的大資料處理,檔案數量通常在百萬以上,如果資料量很小,完全沒有必要採用HDFS。

HDFS和Hadoop的歷史

這裡簡要說一些關鍵的時間節點。2006年,Apache Hadoop專案正式啟動,HDFS和MapReduce開始獨立發展。該軟體開始廣泛應用於各行各業的大資料分析專案中。2012年,HDFS和Hadoop版本1.0釋出。

2013年Hadoop 2.0版本加入了通用YARN資源管理器,MapReduce和HDFS有效解耦。此後,Hadoop支援各種資料處理框架和檔案系統。雖然MapReduce經常被Apache Spark所替代,但HDFS仍然是Hadoop的一種流行的檔案格式。

在釋出了四個alpha版本和一個beta版本之後,Apache Hadoop 3.0.0在2017年12月開始普遍可用,HDFS增強支援額外的NameNode、擦除編碼工具和更大的資料壓縮。與此同時,HDFS工具,如LinkedIn的開源Dr. Elephant和Dynamometer 效能測試工具的進步,也使HDFS能夠支援更進一步的開發實現。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545806/viewspace-2215597/,如需轉載,請註明出處,否則將追究法律責任。

相關文章