1. 程式人生 > 其它 >分散式檔案儲存介紹、選型比較、架構設計

分散式檔案儲存介紹、選型比較、架構設計

資料正成為世界上最有價值的資源,分散式檔案儲存是應對資料爆炸的最好解決方案,那就會涉及到分散式檔案儲存方案、選型、架構設計等。

分散式檔案儲存的來源

在這個資料爆炸的時代,產生的資料量不斷地在攀升,從GB,TB,PB,ZB.挖掘其中資料的價值也是企業在不斷地追求的終極目標。但是要想對海量的資料進行挖掘,首先要考慮的就是海量資料的儲存問題,比如Tb量級的資料。

談到資料的儲存,則不得不說的是磁碟的資料讀寫速度問題。早在上個世紀90年代初期,普通硬碟的可以儲存的容量大概是1G左右,硬碟的讀取速度大概為4.4MB/s.讀取一張硬碟大概需要5分鐘時間,但是如今硬碟的容量都在1TB左右了,相比擴充套件了近千倍。但是硬碟的讀取速度大概是100MB/s。讀完一個硬碟所需要的時間大概是2.5個小時。所以如果是基於TB級別的資料進行分析的話,光硬碟讀取完資料都要好幾天了,更談不上計算分析了。那麼該如何處理大資料的儲存,計算分析呢?

常見的分散式檔案系統

GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自適用於不同的領域。它們都不是系統級的分散式檔案系統,而是應用級的分散式檔案存 儲服務。

分散式檔案儲存選型比較

知名開源分散式檔案儲存

1.GFS(Google File System)

Google公司為了滿足本公司需求而開發的基於Linux的專有分散式檔案系統。儘管Google公佈了該系統的一些技術細節,但Google並沒有將該系統的軟體部分作為開源軟體釋出。

2.HDFS

Hadoop 實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。 Hadoop是Apache Lucene創始人Doug Cutting開發的使用廣泛的文字搜尋庫。它起源於Apache Nutch,

後者是一個開源的網路搜尋引擎,本身也是Luene專案的一部分。Aapche Hadoop架構是MapReduce演算法的一種開源應用,是Google開創其帝國的重要基石。

3.TFS

TFS(Taobao FileSystem)是一個高可擴充套件、高可用、高效能、面向網際網路服務的分散式檔案系統,主要針對海量的非結構化資料,它構築在普通的Linux機器 叢集上,可為外部提供高可靠

和高併發的儲存訪問。TFS為淘寶提供海量小檔案儲存,通常檔案大小不超過1M,滿足了淘寶對小檔案儲存的需求,被廣泛地應用 在淘寶各項應用中。它採用了HA架構和平滑擴容,保證了整個檔案系統的可用性和擴充套件性。同時扁平化的資料組織結構,可將檔名對映到檔案的實體地址,簡化 了檔案的訪問流程,一定程度上為TFS提供了良好的讀寫效能。

Google學術論文,這是眾多分散式檔案系統的起源,HDFS和TFS都是參考Google的GFS設計出來的。

典型的分散式檔案儲存的架構設計

我以hadoop的HDFS為例,畢竟開源的分散式檔案儲存使用的最多。

Hadoop分散式檔案系統(HDFS)被設計成適合執行在通用硬體(commodity hardware)上的分散式檔案系統。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的資料訪問,非常適合大規模資料集上的應用。HDFS放寬了一部分POSIX約束,來實現流式讀取檔案系統資料的目的。

大規模資料集

執行在HDFS上的應用具有很大的資料集。HDFS上的一個典型檔案大小一般都在G位元組至T位元組。因此,HDFS被調節以支援大檔案儲存。它應該能提供整體上高的資料傳輸頻寬,能在一個叢集裡擴充套件到數百個節點。一個單一的HDFS例項應該能支撐數以千萬計的檔案。

簡單的一致性模型

HDFS應用需要一個“一次寫入多次讀取”的檔案訪問模型。一個檔案經過建立、寫入和關閉之後就不需要改變。這一假設簡化了資料一致性問題,並且使高吞吐量的資料訪問成為可能。Map/Reduce應用或者網路爬蟲應用都非常適合這個模型。目前還有計劃在將來擴充這個模型,使之支援檔案的附加寫操作。

異構軟硬體平臺間的可移植性

HDFS在設計的時候就考慮到平臺的可移植性。這種特性方便了HDFS作為大規模資料應用平臺的推廣。

Namenode 和 Datanode

HDFS採用master/slave架構。一個HDFS叢集是由一個Namenode和一定數目的Datanodes組成。

Namenode是一箇中心伺服器,負責管理檔案系統的名字空間(namespace)以及客戶端對檔案的訪問。

叢集中的Datanode一般是一個節點一個,負責管理它所在節點上的儲存。HDFS暴露了檔案系統的名字空間,使用者能夠以檔案的形式在上面儲存資料。從內部看,一個檔案其實被分成一個或多個數據塊,這些塊儲存在一組Datanode上。

Namenode執行檔案系統的名字空間操作,比如開啟、關閉、重新命名檔案或目錄。它也負責確定資料塊到具體Datanode節點的對映。Datanode負責處理檔案系統客戶端的讀寫請求。在Namenode的統一排程下進行資料塊的建立、刪除和複製。

Namenode和Datanode被設計成可以在普通的商用機器上執行。這些機器一般執行著GNU/Linux作業系統(OS)。HDFS採用Java語言開發,因此任何支援Java的機器都可以部署Namenode或Datanode。由於採用了可移植性極強的Java語言,使得HDFS可以部署到多種型別的機器上。一個典型的部署場景是一臺機器上只執行一個Namenode例項,而叢集中的其它機器分別執行一個Datanode例項。這種架構並不排斥在一臺機器上執行多個Datanode,只不過這樣的情況比較少見。

分散式儲存的未來

隨著現代社會從工業時代過渡到資訊時代,資訊科技的發展以及人類生活的智慧化帶來資料的爆炸性增長,資料正成為世界上最有價值的資源。

根據物理儲存形態,資料儲存可分為集中式儲存與分散式儲存兩種。集中式儲存以傳統儲存陣列(傳統儲存)為主,分散式儲存(雲端儲存)以軟體定義儲存為主。

傳統儲存一向以可靠性高、穩定性好,功能豐富而著稱,但與此同時,傳統儲存也暴露出橫向擴充套件性差、價格昂貴、資料連通困難等不足,容易形成資料孤島,導致資料中心管理和維護成本居高不下。

分散式儲存:將資料分散儲存在網路上的多臺獨立裝置上,一般採用標準x86伺服器和網路互聯,並在其上執行相關儲存軟體,系統對外作為一個整體提供儲存服務。。

總之,分散式檔案儲存,不僅提高了儲存空間的利用率,還實現了彈性擴充套件,降低了運營成本,避免了資源浪費,更適合未來的資料爆炸時代場景。