HDFS、Ceph、GFS、GPFS、Swift 等分佈式存儲技術的特點和適用場景

HDFS、Ceph、GFS、GPFS、Swift 等分佈式存儲技術的特點和適用場景
隨着數字化轉型的深入,海量數據對存儲提出了新的要求。傳統存儲雖然有技術成熟、性能良好、可用性高等優點,但面對海量數據,其缺點也越來越明顯:如擴展性差、成本高等。爲了克服上述缺點,滿足海量數據的存儲需求,市場上出現了分佈式存儲技術。當前,分佈式存儲有多種實現技術,如HDFS、Ceph、GFS、GPFS、Swift等。在實際工作中,爲了更好地引入分佈式存儲技術,我們需瞭解各種分佈式存儲技術的特點,以及各種技術的適用場景,在此希望請教下同行,城商行應該如何選擇這些分佈式存儲技術,他們各自的特點和場景如何?

在以上幾種分佈式存儲技術中,每一種存儲技術都有各自的特點和應用場景。其中HDFS、Ceph和Swift應用比較多,這也和它們的技術發展比較快和應用場景比較多相關。下面分別介紹:

一、HDFS
主要用於大數據的存儲場景,是Hadoop大數據架構中的存儲組件。HDFS在開始設計的時候,就已經明確的它的應用場景,就是爲大數據服務。主要的應用場景有:
1、對大文件存儲的性能比較高,例如幾百兆,幾個G的大文件。因爲HDFS採用的是以元數據的方式進行文件管理,而元數據的相關目錄和塊等信息保存在NameNode的內存中, 文件數量的增加會佔用大量的NameNode內存。如果存在大量的小文件,會佔用大量內存空間,引起整個分佈式存儲性能下降,所以儘量使用HDFS存儲大文件比較合適。
2、適合低寫入,多次讀取的業務。就大數據分析業務而言,其處理模式就是一次寫入、多次讀取,然後進行數據分析工作,HDFS的數據傳輸吞吐量比較高,但是數據讀取延時比較差,不適合頻繁的數據寫入。
3、HDFS採用多副本數據保護機制,使用普通的X86服務器就可以保障數據的可靠性,不推薦在虛擬化環境中使用。

二、Ceph
是一個開源的存儲項目,是目前應用最廣泛的開源分佈式存儲系統,已得到衆多廠商的支持,許多超融合系統的分佈式存儲都是基於Ceph深度定製。而且Ceph已經成爲LINUX系統和OpenStack的“標配”,用於支持各自的存儲系統。Ceph可以提供對象存儲、塊設備存儲和文件系統存儲服務。同時支持三種不同類型的存儲服務的特性,在分佈式存儲系統中,是很少見的。

Ceph沒有采用HDFS的元數據尋址的方案,而且採用CRUSH算法,數據分佈均衡,並行度高。而且在支持塊存儲特性上,數據可以具有強一致性,可以獲得傳統集中式存儲的使用體驗。對象存儲服務,Ceph支持Swift和S3的API接口。在塊存儲方面,支持精簡配置、快照、克隆。在文件系統存儲服務方面,支持Posix接口,支持快照。但是目前Ceph支持文件的性能相當其他分佈式存儲系統,部署稍顯複雜,性能也稍弱,一般都將Ceph應用於塊和對象存儲。

Ceph是去中心化的分佈式解決方案,需要提前做好規劃設計,對技術團隊的要求能力比較高。特別是在Ceph擴容時,由於其數據分佈均衡的特性,會導致整個存儲系統性能的下降。

三、GFS
GFS是google分佈式文件存儲,是爲了存儲海量搜索數據而設計的專用文件系統。和HDFS 比較類似,而且HDFS系統最早就是根據 GFS的概念進行設計實現的。 GFS同樣適合大文件讀寫,不合適小文件存儲。適合處理大量的文件讀取,需要高帶寬,而且數據訪問延時不敏感的搜索類業務。同樣不適合多用戶同時寫入。GFS 是最早的推出分佈式存儲概念的的存儲系統之一,後來的大部分的分佈式式文件系統或多或少都參考了 GFS 的設計。HDFS和 GFS 的主要區別是,對GFS 中關於數據的寫入進行了一些改進,同一時間只允許一個客戶端寫入或追加數據。而GFS 是支持併發寫入的。這樣會減少同時寫入帶來的數據一致性問題,在寫入流程上,架構相對比較簡單,容易實現。

四、GPFS
GPFS是 IBM 的共享文件系統,它是一個並行的磁盤文件系統,可以保證在資源組內的所有節點可以並行訪問整個文件系統。GPFS 允許客戶共享文件,而這些文件可能分佈在不同節點的不同硬盤上。GPFS提供了許多標準的 UNIX 文件系統接口,允許應用不需修改或者重新編輯就可以在其上運行。

GPFS和其他分佈式存儲不同的是,GPFS是由網絡共享磁盤(NSD)和物理磁盤組成。網絡共享磁盤(NSD)是由物理磁盤映射出來的虛擬設備,與磁盤之間是一一對應的關係。所以,使用兩臺傳統的集中式存儲設備,通過劃分不同的網絡共享磁盤,也可以部署GPFS,不一定部署在X86設備上。GPFS文件系統允許在同一個節點內的多個進程使用標準的UNIX文件系統接口並行的訪問相同文件進行讀寫,性能比較高。GPFS支持傳統集中式存儲的仲裁機制和文件鎖,保證數據安全和數據的正確性,這是其他分佈式存儲系統無法比擬的。GPFS主要用於IBM 小型機和UNIX系統的文件共享和數據容災等場景。

五、Swift
Swift也是一個開源的存儲項目,但是主要面向的是對象存儲。和Ceph提供的對象存儲服務類似。主要用於解決非結構化數據存儲問題。它和Ceph的對象存儲服務的主要區別是。

1、客戶端在訪問對象存儲系統服務時,Swift要求客戶端必須訪問Swift網關才能獲得數據。而Ceph使用一個運行在每個存儲節點上的OSD(對象存儲設備)獲取數據信息,沒有一個單獨的入口點,比Swift更靈活一些。

2、在數據一致性方面,Swift的數據是最終一致,在海量數據的處理效率上要高一些,但是主要面向對數據一致性要求不高,但是對數據處理效率要求比較高的對象存儲業務。而Ceph是始終跨集羣強一致性。主要的應用場景,在在OpenStack中,對象存儲服務使用的就是Swift,而不是Ceph。

應用場景及特點:
Hadoop HDFS(大數據分佈式文件系統)

Hadoop分佈式文件系統(HDFS)是一個分佈式文件系統,適用於商用硬件上高數據吞吐量對大數據集的訪問的需求。該系統仿效了谷歌文件系統(GFS),數據在相同節點上以複製的方式進行存儲以實現將數據合併計算的目的。
該系統的主要設計目標包括:容錯,可擴展性,高效性和可靠性。HDFS採用了MapReduce,不遷移數據而是以將處理任務遷移到物理節點(保存數據)的方式降低網絡I/O。HDFS是Apache Hadoop的一個子項目並且安裝Hadoop。

OpenStack的對象存儲Swift

OpenStack Swift提供一個類似Amazon S3的對象存儲。其主要特點爲:
所有的存儲對象都有自身的元數據和一個URL,這些對象在儘可能唯一的區域複製3次,而這些區域可被定義爲一組驅動器,一個節點,一個機架等。開發者通過一個RESTful HTTP API與對象存儲系統相互作用。對象數據可以放置在集羣的任何地方。在不影響性能的情況下,集羣通過增加外部節點進行擴展。這是相對全面升級,性價比更高的近線存儲擴展。數據無需遷移到一個全新的存儲系統。集羣可無宕機增加新的節點。故障節點和磁盤可無宕機調換。在標準硬件上運行,例如戴爾,HP和Supermicro。

Ceph

Ceph是一個遵循LGPL協議的存儲平臺,它可以在單個分佈式節點上同時支持對象存儲,塊存儲和文件存儲。

Ceph主要設計的初衷是變成一個可避免單節點故障的分佈式文件系統,EB級別的擴展能力,而且是一種開源自由軟件,許多超融合的分佈式文件系統都是基於Ceph開發的,作爲開源軟件在超融合商業領域的應用,Ceph因爲性能等問題被詬病,但不乏許多廠商在Ceph上不斷優化和努力。

IBM General Parallel File System(GPFS通用並行文件系統)

這個專有GPFS是一個由IBM開發的高性能集羣文件系統。它可以在共享磁盤或非共享分佈式並行模式中進行部署。

GPFS-SNC,其中SNC代表Shared Nothing Cluster(非共享集羣),它是2012年12月正式發佈的GPFS 3.5版本,如今被稱爲GPFS-FPO(文件配置優化)。這讓GPFS可以在一個聯網服務器的集羣上採用本地連接磁盤,而不需要配置共享磁盤的專用服務器(例如使用SAN),GPFS-FPO可充當HDFS兼容的文件系統。

GPFS時常通過調用計算集羣上的MPI-IO(Message Passing Interface)進行訪問。功能包括:

分佈式元數據處理。包括目錄樹。沒有單獨的“目錄控制器”或“索引服務器”管理文件系統。

對非常大的目錄進行高效索引目錄項。很多文件系統被限制在單一目錄(通常, 65536或類似的小二進制數)中的少數文件內,而GPFS並沒有這樣的限制。

分佈式鎖定。該功能考慮了完整的Posix文件系統語義,包括鎖定文件進行獨佔訪問。

Global Federated File System(GFFS全局聯合文件系統)

XSEDE文件系統在美國弗吉尼亞大學Genesis II項目的一部分。

GFFS的出現是源於一個對諸如文件系統的資源以一種聯合,安全,標準化,可擴展和透明化的方式進行訪問和遠程操作的需求,而無需數據所有者或應用程序開發者和用戶改變他們存儲和訪問數據的任何方式。

GFFS通過採用一個全局基於路徑的命名空間實現,例如/data/bio/file1。

在現有文件系統中的數據,無論它們是否是 Windows文件系統, MacOS文件系統,AFS,Linux或者Lustre文件系統都可以導出或鏈接到全局命名空間。

例如,一個用戶可以將它 “C” 盤上一個本地根目錄結構,C:workcollaboration-with-Bob導出到全局命名空間,/data/bio/project-Phil,那麼用戶 “C” 盤workcollaboration-with-bob 內的文件和目錄將會受到訪問限制,用戶可以通過/data/bio/project-Bob路徑在 GFFS上訪問。

最後談一下,最常見的GPFS和HDFS有什麼區別?

GPFS和Hadoop的HDFS系統對比起來相當有趣,它設計用於在商用硬件上存儲類似或更大的數據——換言之就是,不配置 RAID 磁盤的數據中心和一個SAN。

HDFS還將文件分割成塊,並將它們存儲在不同的文件系統節點內。

HDFS對磁盤可靠性的依賴並不高,它可以在不同的節點內存儲塊的副本。保存單一副本塊的一個節點出現故障是小問題,可以再複製該組其它有效塊內的副本。相較而言,雖然GPFS支持故障節點恢復,但它是一個更嚴重的事件,它可能包括數據(暫時性)丟失的高風險。

GPFS支持完整的Posix文件系統語義。HDFS和GFS(谷歌文件系統)並不支持完整的Posix語義。

GPFS跨文件系統分佈它的目錄索引和其它元數據。相反, Hadoop將它們保留在主要和次要Namenode中,大型服務器必須在RAM內存儲所有的索引信息。

GPFS將文件分割成小塊。Hadoop HDFS喜歡64MB甚至更多的塊,因爲這降低了Namenode的存儲需求。小塊或很多小的文件會快速填充文件系統的索引,因此限制了文件系統的大小。

說到分佈式文件系統,不得不提到許多超融合廠商,一部分是基於Ceph的,還有一部分是完全自主研發的

本文摘自於 talkwithtrend

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章