HDFS、Ceph、GFS、GPFS、Swift、Lustre……容器云選擇哪種分布式存儲更好?
容器云在使用分布式存儲時,HDFS、CEPH、GFS、GPFS、Swift等分布式存儲哪種更好?
公司在進(jìn)行容器云技術(shù)選型,想了解相應(yīng)的分布式存儲如何匹配,HDFS、CEPH、GFS、GPFS、Swift等分布式存儲,采用哪種更好,主要場景是容器存儲應(yīng)用日志、配置文件、非結(jié)構(gòu)化數(shù)據(jù)文件等。
問題來自@yin986 某保險軟件架構(gòu)設(shè)計師,下文來自twt社區(qū)眾多同行實踐經(jīng)驗分享。
@Steven99 軟件架構(gòu)設(shè)計師:
日志文件隨著時間會是個很大的量,所以建議考慮統(tǒng)一的日志中心存儲處理,可以用es等,備份到hdfs。
配置文件在量上通常不是個問題,可以考慮配置中心統(tǒng)一管理,無需額外存儲。
非結(jié)構(gòu)化數(shù)據(jù)通常是大量的文件,可以采用傳統(tǒng)nas或分布式對象存儲,當(dāng)然資金充裕可以采購好的存儲,存儲性能很重要,根據(jù)業(yè)務(wù)重要程度選擇不同的存儲。
@Garyy 某保險系統(tǒng)工程師:
容器存儲的持久化,對于有狀態(tài)數(shù)據(jù)的容器使用場景來說至關(guān)重要。因此,在技術(shù)選型的時候,需要明確存儲的具體需求。存儲按照數(shù)據(jù)類型來分,可以分為塊存儲,對象存儲,文件存儲。我們傳統(tǒng)的環(huán)境中,使用最多的還是塊存儲和文件存儲。隨著IT的更新?lián)Q代,現(xiàn)在對于對象存儲(非結(jié)構(gòu)化數(shù)據(jù))的需求日益旺盛,對象存儲在對一些Key-Value型數(shù)據(jù)的存儲有著天然的優(yōu)勢,再加上其分布式,副本/糾刪碼等可以匹配傳統(tǒng)存儲的特性,日益成為溫數(shù)據(jù)/冷數(shù)據(jù)存儲的不二之選。
HDFS/CEPH/GFS/GPFS/Swift這類分布式存儲,按照存儲的類型來區(qū)分,HDFS/GPFS/GFS屬于文件存儲,CEPH屬于統(tǒng)一存儲--即塊/對象/文件統(tǒng)一體,Swift屬于對象存儲-目前屬于OpenStack下面的一個子項目。
1)HDFS
Hadoop分布式文件系統(tǒng)(HDFS)被設(shè)計成適合運(yùn)行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)。它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點(diǎn)。但同時,它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。HDFS是一個高度容錯性的系統(tǒng),適合部署在廉價的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。HDFS放寬了一部分POSIX約束,來實現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。
HDFS有著高容錯性(fault-tolerant)的特點(diǎn),并且設(shè)計用來部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以實現(xiàn)流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
2)GFS
GFS是一個可擴(kuò)展的分布式文件系統(tǒng),用于大型的、分布式的、對大量數(shù)據(jù)進(jìn)行訪問的應(yīng)用。它運(yùn)行于廉價的普通硬件上,并提供容錯功能。它可以給大量的用戶提供總體性能較高的服務(wù)。
3)GPFS
GPFS(General Parallel File System ,GPFS) 是 IBM 公司第一個共享文件系統(tǒng),起源于 IBM SP 系統(tǒng)上使用的虛擬共享磁盤技術(shù)( VSD )。作為這項技術(shù)的核心, GPFS 是一個并行的磁盤文件系統(tǒng),它保證在資源組內(nèi)的 所有節(jié)點(diǎn)可以并行訪問整個文件系統(tǒng);而且針對此文件系統(tǒng)的服務(wù)操作,可以同時安全地在 使用此文件系統(tǒng)的多個節(jié)點(diǎn)上實現(xiàn)。GPFS 允許客戶共享文件,而這些文件可能分布在不同節(jié)點(diǎn)的不同硬盤上;它提供了許多標(biāo)準(zhǔn)的 UNIX 文件系統(tǒng)接口,允許應(yīng)用不需修改或者重新編輯就可以在其上運(yùn)行。
4)CEPH
Ceph是一個可靠地、自動重均衡、自動恢復(fù)的分布式存儲系統(tǒng),根據(jù)場景劃分可以將Ceph分為三大塊,分別是對象存儲、塊設(shè)備存儲和文件系統(tǒng)服務(wù)。在虛擬化領(lǐng)域里,比較常用到的是Ceph的塊設(shè)備存儲,比如在OpenStack項目里,Ceph的塊設(shè)備存儲可以對接OpenStack的cinder后端存儲、Glance的鏡像存儲和虛擬機(jī)的數(shù)據(jù)存儲,比較直觀的是Ceph集群可以提供一個raw格式的塊存儲來作為虛擬機(jī)實例的硬盤。
Ceph相比其它存儲的優(yōu)勢點(diǎn)在于它不單單是存儲,同時還充分利用了存儲節(jié)點(diǎn)上的計算能力,在存儲每一個數(shù)據(jù)時,都會通過計算得出該數(shù)據(jù)存儲的位置,盡量將數(shù)據(jù)分布均衡,同時由于Ceph的良好設(shè)計,采用了CRUSH算法、HASH環(huán)等方法,使得它不存在傳統(tǒng)的單點(diǎn)故障的問題,且隨著規(guī)模的擴(kuò)大性能并不會受到影響。
5)Swift
Swift 最初是由 Rackspace 公司開發(fā)的高可用分布式對象存儲服務(wù),并于 2010 年貢獻(xiàn)給 OpenStack 開源社區(qū)作為其最初的核心子項目之一,為其 Nova 子項目提供虛機(jī)鏡像存儲服務(wù)。Swift 構(gòu)筑在比較便宜的標(biāo)準(zhǔn)硬件存儲基礎(chǔ)設(shè)施之上,無需采用 RAID(磁盤冗余陣列),通過在軟件層面引入一致性散列技術(shù)和數(shù)據(jù)冗余性,犧牲一定程度的數(shù)據(jù)一致性來達(dá)到高可用性和可伸縮性,支持多租戶模式、容器和對象讀寫操作,適合解決互聯(lián)網(wǎng)的應(yīng)用場景下非結(jié)構(gòu)化數(shù)據(jù)存儲問題。
@fanyqing 某銀行 高級工程師:
1)Ceph的特點(diǎn)
Ceph支持對象存儲、塊存儲和文件存儲服務(wù),故稱為統(tǒng)一存儲。
采用CRUSH算法,數(shù)據(jù)分布均衡,并行度高,不需要維護(hù)固定的元數(shù)據(jù)結(jié)構(gòu)。
數(shù)據(jù)具有強(qiáng)一致,確保所有副本寫入完成才返回確認(rèn),適合讀多寫少場景。
去中心化,MDS之間地位相同,無固定的中心節(jié)點(diǎn)。
Ceph存在一些缺點(diǎn):
去中心化的分布式解決方案,需要提前做好規(guī)劃設(shè)計,對技術(shù)團(tuán)隊的要求能力比較高。
Ceph擴(kuò)容時,由于其數(shù)據(jù)分布均衡的特性,會導(dǎo)致整個存儲系統(tǒng)性能的下降。
2)GFS特點(diǎn)
適合大文件場景的應(yīng)用,特別是針對GB級別的大文件,適用于數(shù)據(jù)訪問延時不敏感的搜索類業(yè)務(wù)。
中心化架構(gòu),只有1個master處于active狀態(tài)。
緩存和預(yù)取,通過在client端緩存元數(shù)據(jù),盡量減少與master的交互,通過文件的預(yù)讀取來提升并發(fā)性能。
高可靠性,master需要持久化的數(shù)據(jù)會通過操作日志與checkpoint的方式存放多份,故障后master會自動切換重啟。
3)HDFS的特點(diǎn)(vs GFS)
分塊更大,每個數(shù)據(jù)塊默認(rèn)128MB;
不支持并發(fā),同一時刻只允許一個寫入者或追加者;
過程一致性,寫入數(shù)據(jù)的傳輸順序與最終寫入順序一致;
Master HA,2.X版本支持兩個NameNode,(分別處于Active和Standby狀態(tài)),故障切換時間一般幾十秒到數(shù)分鐘。
HDFS適合的應(yīng)用場景:
適用于大文件、大數(shù)據(jù)處理,處理數(shù)據(jù)達(dá)到 GB、TB、甚至PB級別的數(shù)據(jù)。
適合流式文件訪問,一次寫入,多次讀取。
文件一旦寫入不能修改,只能追加。
HDFS不適合的場景:
低延時數(shù)據(jù)訪問。
小文件存儲。
并發(fā)寫入、文件隨機(jī)修改。
4)Swift特點(diǎn)
原生的對象存儲,不支持實時的文件讀寫、編輯功能。
完全對稱架構(gòu),無主節(jié)點(diǎn),無單點(diǎn)故障,易于大規(guī)模擴(kuò)展,性能容量線性增長。
數(shù)據(jù)實現(xiàn)最終一致性,不需要所有副本寫入即可返回,讀取數(shù)據(jù)時需要進(jìn)行數(shù)據(jù)副本的校驗。
是OpenStack的子項目之一,適合云環(huán)境的部署。
Swift的對象存儲與Ceph提供的對象存儲區(qū)別:客戶端在訪問對象存儲系統(tǒng)服務(wù)時,Swift要求客戶端必須訪問Swift網(wǎng)關(guān)才能獲得數(shù)據(jù)。而Ceph可以在每個存儲節(jié)點(diǎn)上的OSD(對象存儲設(shè)備)獲取數(shù)據(jù)信息; 在數(shù)據(jù)一致性方面,Swift的數(shù)據(jù)是最終一致,而Ceph是始終跨集群強(qiáng)一致性)
5)Lustre特點(diǎn)
支持?jǐn)?shù)萬個客戶端系統(tǒng),支持PB級存儲容量,單個文件最大支持320TB容量。
支持RDMA網(wǎng)絡(luò),大文件讀寫分片優(yōu)化,多個OSS能獲得更高的聚合帶寬。
缺少副本機(jī)制,存在單點(diǎn)故障。如果一個客戶端或節(jié)點(diǎn)發(fā)生故障,存儲在該節(jié)點(diǎn)上的數(shù)據(jù)在重新啟動前將不可訪問。
適用高性能計算HPC領(lǐng)域,適用于大文件連續(xù)讀寫。
幾種主流分布式存儲技術(shù)的特點(diǎn)比較如下: