這些主流分布式存儲系統(tǒng),你都知道嗎?
Hadoop HDFS(大數(shù)據(jù)分布式文件系統(tǒng))
Hadoop分布式文件系統(tǒng)(HDFS)是一個分布式文件系統(tǒng),適用于商用硬件上高數(shù)據(jù)吞吐量對大數(shù)據(jù)集的訪問的需求。
該系統(tǒng)仿效了谷歌文件系統(tǒng)(GFS),數(shù)據(jù)在相同節(jié)點上以復(fù)制的方式進行存儲以實現(xiàn)將數(shù)據(jù)合并計算的目的。
該系統(tǒng)的主要設(shè)計目標(biāo)包括:容錯,可擴展性,高效性和可靠性。
HDFS采用了MapReduce,不遷移數(shù)據(jù)而是以將處理任務(wù)遷移到物理節(jié)點(保存數(shù)據(jù))的方式降低網(wǎng)絡(luò)I/O。HDFS是Apache Hadoop的一個子項目并且安裝Hadoop。
OpenStack的對象存儲Swift
OpenStack Swift提供一個類似Amazon S3的對象存儲。其主要特點為:
- 所有的存儲對象都有自身的元數(shù)據(jù)和一個URL,這些對象在盡可能唯一的區(qū)域復(fù)制3次,而這些區(qū)域可被定義為一組驅(qū)動器,一個節(jié)點,一個機架等。
- 開發(fā)者通過一個RESTful HTTP API與對象存儲系統(tǒng)相互作用。
- 對象數(shù)據(jù)可以放置在集群的任何地方。
- 在不影響性能的情況下,集群通過增加外部節(jié)點進行擴展。這是相對全面升級,性價比更高的近線存儲擴展。
- 數(shù)據(jù)無需遷移到一個全新的存儲系統(tǒng)。
- 集群可無宕機增加新的節(jié)點。
- 故障節(jié)點和磁盤可無宕機調(diào)換。
- 在標(biāo)準(zhǔn)硬件上運行,例如戴爾,HP和Supermicro。
公有云對象存儲
公有云大都只有對象存儲。例如,谷歌云存儲是一個快速,具有可擴展性和高可用性的對象存儲。而且云存儲無需一種模式也就是圖像,視頻文件就可以存儲海量數(shù)據(jù)。
Amazon類似產(chǎn)品就是S3: http://aws.amazon.com/s3;
微軟類似產(chǎn)品Azure Bolb:http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/;
阿里類似的有OSS:https://www.aliyun.com/product/oss/;
Facebook用于圖片存儲的Haystack
Facebook Haystack擁有大量元數(shù)據(jù),適用于圖片的對象存儲,采用每張圖片一個文件的方式取代NFS文件系統(tǒng)。
http://cse.unl.edu/~ylu/csce990/notes/HayStack_Facebook_ShakthiBachala.ppt;
此外,F(xiàn)acebook著眼于長尾服務(wù),因此傳統(tǒng)緩存和CDN(內(nèi)容發(fā)布網(wǎng)絡(luò))的表現(xiàn)并不甚佳。一般正常的網(wǎng)站有99%CDN點擊量,但Facebook只有約80%CDN點擊率。
f4: Facebook的暖性BLOB存儲
Haystack最初是用于Facebook圖片應(yīng)用的主要存儲系統(tǒng)。到2016年已有近8年的歷史。
這期間它通過比如減少磁盤數(shù)設(shè)法讀取一個BLOB到1,跨地理位置通過復(fù)制(3個復(fù)制因子即文件副本數(shù))實現(xiàn)容錯等更多優(yōu)化而運作良好。在此期間Facebook雖然服務(wù)良好但依然進行了演變。
截止2014年2月,Haystack存儲了約4000億張圖片。
https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-muralidhar.pdf
目前,f4存儲了超過65PB的本地BLOB,而且將其有效復(fù)制因子從3.6降低到任意2.8或2.1。
f4提供低延遲,可恢復(fù)磁盤,主機,機柜和數(shù)據(jù)中心故障并為暖性BLOB提供足夠的吞吐量。
PS:f4僅存儲“暖性”圖片
OpenStack塊存儲Cinder
OpenStack(類似商業(yè)云)還可以作為一個Linux訪問的文件系統(tǒng)提供傳統(tǒng)塊存儲。Cinder能虛擬化塊存儲設(shè)備池并向需要和消費這些資源的終端用戶提供一個自助服務(wù)API,而無需了解存儲部署的實際位置或是存儲設(shè)備的類型。
OpenStack Cinder類似于亞馬遜EBS(Elastic Block Storage )和微軟Azure Files以及谷歌Persistent Storage。
Lustre
Lustre是一個并行分布式文件系統(tǒng),通常用于大規(guī)模集群計算。??它的名字取自Linux和cluster(集群)的組合詞。Lustre文件系統(tǒng)軟件遵循GPL2認(rèn)證協(xié)議并為(各類規(guī)模)計算機集群提供高性能文件系統(tǒng)。
因為Lustre文件系統(tǒng)擁有高性能的能力和開放式認(rèn)證,所以經(jīng)常應(yīng)用于超級計算機。
Lustre文件系統(tǒng)具有可擴展性,可支持在數(shù)百臺服務(wù)器上配置數(shù)萬客戶端節(jié)點,PB級容量的多個計算機集群,并超出TB級聚合I/O吞吐量。
這讓Lustre文件系統(tǒng)受到擁有大型數(shù)據(jù)中心企業(yè)的青睞,其中也包括例如氣象,虛擬,石油天然氣,生命科學(xué),多功能媒體和金融行業(yè)。Lustre曾輾轉(zhuǎn)過幾家企業(yè),最近的三個所有者(時間先后排序)依次為甲骨文,Whamcloud和英特爾。
Gluster
http://www.gluster.org/http://en.wikipedia.org/wiki/Gluster
GlusterFS遵循Infiniband RDMA或TCP/IP協(xié)議創(chuàng)建塊集中存儲,在單一全局命名空間內(nèi)集中磁盤和內(nèi)存資源并管理數(shù)據(jù)。
對于公有云部署,GlusterFS提供了一個AWS AMI(亞馬遜機器鏡像)。它不是在物理服務(wù)器上部署,而是在Elastic Compute Cloud (EC2)實例上部署,并且地層存儲空間是Amazon的Elastic Block Storage(EBS)。
在這樣的環(huán)境里,容量通過部署更多EBS存儲設(shè)備進行擴展,性能則通過部署更多EC2實例進行增強,而可用性通過AWS可用區(qū)域之間進行多方復(fù)制來提升。
FUSE(Filesystem in Userspace 用戶空間文件系統(tǒng))
FUSE GPL/LGPL認(rèn)證是一個操作系統(tǒng)機制,針對類Unix計算操作系統(tǒng),讓用戶無需編輯內(nèi)核代碼即可構(gòu)建自身文件系統(tǒng)。這雖然是通過在用戶空間內(nèi)運行文件系統(tǒng)代碼實現(xiàn),但FUSE模塊僅提供了一個到達真正內(nèi)核接口的一架“橋梁”。
FUSE最初是作為一個可加載的核心模塊來實現(xiàn)的,通過GlusterFS使用,尤其適用于編寫虛擬文件系統(tǒng)。但與傳統(tǒng)文件系統(tǒng),尤其是可存儲數(shù)據(jù)和從磁盤上檢索數(shù)據(jù)的系統(tǒng)不同,虛擬文件系統(tǒng)檢索實際上無法存儲自身數(shù)據(jù)。它們充當(dāng)一個現(xiàn)有文件系統(tǒng)或存儲設(shè)備的視圖或翻譯。
Ceph
Cphe是紅帽的,Ceph是一個遵循LGPL協(xié)議的存儲平臺,它可以在單個分布式節(jié)點上同時支持對象存儲,塊存儲和文件存儲。
Cphe主要設(shè)計的初衷是變成一個可避免單節(jié)點故障的分布式文件系統(tǒng),EB級別的擴展能力,而且是一種開源自由軟件,許多超融合的分布式文件系統(tǒng)都是基于Ceph開發(fā)的,作為開源軟件在超融合商業(yè)領(lǐng)域的應(yīng)用,Ceph因為性能等問題被詬病,但不乏許多廠商在Ceph上不斷優(yōu)化和努力。
IBM General Parallel File System(GPFS通用并行文件系統(tǒng))
這個專有GPFS是一個由IBM開發(fā)的高性能集群文件系統(tǒng)。它可以在共享磁盤或非共享分布式并行模式中進行部署。
GPFS-SNC,其中SNC代表Shared Nothing Cluster(非共享集群),它是2012年12月正式發(fā)布的GPFS 3.5版本,如今被稱為GPFS-FPO(文件配置優(yōu)化)。這讓GPFS可以在一個聯(lián)網(wǎng)服務(wù)器的集群上采用本地連接磁盤,而不需要配置共享磁盤的專用服務(wù)器(例如使用SAN),GPFS-FPO可充當(dāng)HDFS兼容的文件系統(tǒng)。
GPFS時常通過調(diào)用計算集群上的MPI-IO(Message Passing Interface)進行訪問。功能包括:
分布式元數(shù)據(jù)處理。包括目錄樹。沒有單獨的“目錄控制器”或“索引服務(wù)器”管理文件系統(tǒng)。
對非常大的目錄進行高效索引目錄項。很多文件系統(tǒng)被限制在單一目錄(通常, 65536或類似的小二進制數(shù))中的少數(shù)文件內(nèi),而GPFS并沒有這樣的限制。
分布式鎖定。該功能考慮了完整的Posix文件系統(tǒng)語義,包括鎖定文件進行獨占訪問。
Global Federated File System(GFFS全局聯(lián)合文件系統(tǒng))
XSEDE文件系統(tǒng)在美國弗吉尼亞大學(xué)Genesis II項目的一部分。
GFFS的出現(xiàn)是源于一個對諸如文件系統(tǒng)的資源以一種聯(lián)合,安全,標(biāo)準(zhǔn)化,可擴展和透明化的方式進行訪問和遠程操作的需求,而無需數(shù)據(jù)所有者或應(yīng)用程序開發(fā)者和用戶改變他們存儲和訪問數(shù)據(jù)的任何方式。
GFFS通過采用一個全局基于路徑的命名空間實現(xiàn),例如/data/bio/file1。
在現(xiàn)有文件系統(tǒng)中的數(shù)據(jù),無論它們是否是 Windows文件系統(tǒng), MacOS文件系統(tǒng),AFS,Linux或者Lustre文件系統(tǒng)都可以導(dǎo)出或鏈接到全局命名空間。
例如,一個用戶可以將它 “C” 盤上一個本地根目錄結(jié)構(gòu),C:\work\collaboration-with-Bob導(dǎo)出到全局命名空間,/data/bio/project-Phil,那么用戶 “C” 盤\work\collaboration-with-bob 內(nèi)的文件和目錄將會受到訪問限制,用戶可以通過/data/bio/project-Bob路徑在 GFFS上訪問。
***談一下,最常見的GPFS和HDFS有什么區(qū)別?
GPFS和Hadoop的HDFS系統(tǒng)對比起來相當(dāng)有趣,它設(shè)計用于在商用硬件上存儲類似或更大的數(shù)據(jù)——換言之就是,不配置 RAID 磁盤的數(shù)據(jù)中心和一個SAN。
HDFS還將文件分割成塊,并將它們存儲在不同的文件系統(tǒng)節(jié)點內(nèi)。
HDFS對磁盤可靠性的依賴并不高,它可以在不同的節(jié)點內(nèi)存儲塊的副本。保存單一副本塊的一個節(jié)點出現(xiàn)故障是小問題,可以再復(fù)制該組其它有效塊內(nèi)的副本。相較而言,雖然GPFS支持故障節(jié)點恢復(fù),但它是一個更嚴(yán)重的事件,它可能包括數(shù)據(jù)(暫時性)丟失的高風(fēng)險。
GPFS支持完整的Posix文件系統(tǒng)語義。 HDFS和GFS(谷歌文件系統(tǒng))并不支持完整的Posix語義。
GPFS跨文件系統(tǒng)分布它的目錄索引和其它元數(shù)據(jù)。相反, Hadoop將它們保留在主要和次要Namenode中,大型服務(wù)器必須在RAM內(nèi)存儲所有的索引信息。
GPFS將文件分割成小塊。Hadoop HDFS喜歡64MB甚至更多的塊,因為這降低了Namenode的存儲需求。小塊或很多小的文件會快速填充文件系統(tǒng)的索引,因此限制了文件系統(tǒng)的大小。
說到分布式文件系統(tǒng),不得不提到許多超融合廠商,一部分是基于Ceph的,還有一部分是完全自主研發(fā)的。