常見分佈式文件存儲介紹、選型比較、以及架構設計

分佈式文件存儲的來源node

在這個數據爆炸的時代,產生的數據量不斷地在攀升,從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並無將該系統的軟件部分做爲開源軟件發佈。oop

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服務器和網絡互聯,並在其上運行相關存儲軟件,系統對外做爲一個總體提供存儲服務。。

總之,分佈式文件存儲,不只提升了存儲空間的利用率,還實現了彈性擴展,下降了運營成本,避免了資源浪費,更適合將來的數據爆炸時代場景。

相關文章
相關標籤/搜索