En 400-6655-581
5
返回列表
> 資源中心 > 數(shù)據(jù)安全 | 大數(shù)據(jù)生態(tài)之對(duì)象存儲(chǔ)

數(shù)據(jù)安全 | 大數(shù)據(jù)生態(tài)之對(duì)象存儲(chǔ)

2020-05-14瀏覽次數(shù):961

導(dǎo)讀:我們前面的文章討論過大數(shù)據(jù)存儲(chǔ)組件中的HDFS和KUDU,這篇文章將會(huì)介紹一下對(duì)象存儲(chǔ),這也是大數(shù)據(jù)生態(tài)圈一個(gè)新的領(lǐng)域。本文將會(huì)從對(duì)象存儲(chǔ)的概念,內(nèi)部機(jī)制,發(fā)展情況以及相關(guān)產(chǎn)品展開,對(duì)對(duì)象存儲(chǔ)進(jìn)行一個(gè)較為全面的介紹,同時(shí)也為后續(xù)文章介紹大數(shù)據(jù)中的對(duì)象存儲(chǔ)Apache Ozone組件進(jìn)行一些鋪墊。





什么是對(duì)象存儲(chǔ)?



談起存儲(chǔ),都不陌生,能耳熟能詳?shù)挠杏脖P,U盤,磁帶,這些都是常見的存儲(chǔ)設(shè)備,可以滿足個(gè)人或者企業(yè)的小規(guī)模數(shù)據(jù)存儲(chǔ)需求。還有一類存儲(chǔ)設(shè)備,提供了一些網(wǎng)絡(luò)擴(kuò)展和功能增強(qiáng),比如SAN和NAS,可以滿足企業(yè)一些比較大規(guī)模數(shù)據(jù)的存儲(chǔ)需求。


那今天討論的對(duì)象存儲(chǔ),它又是什么呢?是像下面這種把“對(duì)象”存到類似銀行的東西里嗎?




顯然不對(duì),這只是一個(gè)調(diào)侃,但這種理解某種程度上的也有一定正確性,不過對(duì)象存儲(chǔ)存的不是女朋友或者男朋友,而是各式各樣的數(shù)據(jù)(不限制其類型數(shù)量的數(shù)據(jù),我們稱之為Object),存儲(chǔ)介質(zhì)也不是銀行,而是對(duì)象存儲(chǔ)設(shè)備(Object-based Storage Device,簡(jiǎn)稱OSD)。除此之外,為了完成對(duì)象存儲(chǔ)的過程,還需要對(duì)象存儲(chǔ)服務(wù)(Object-based Storage Service,簡(jiǎn)稱OSS),元數(shù)據(jù)服務(wù)器(Metadata Server,簡(jiǎn)稱MDS)以及對(duì)象存儲(chǔ)客戶端(Client)配合完成。


與SAN和NAS一樣,對(duì)象存儲(chǔ)也是一種網(wǎng)絡(luò)存儲(chǔ)架構(gòu)。


SAN(存儲(chǔ)局域網(wǎng))特點(diǎn)是采用SCSI快I/O命令集,通過磁盤或FC(Fiber Channel)級(jí)的數(shù)據(jù)訪問提供高性能的隨機(jī)I/O個(gè)數(shù)據(jù)吞吐率,它具有高寬帶、低時(shí)延的優(yōu)勢(shì),但這需要專業(yè)的硬件支持,所以價(jià)格非常高,并且不易擴(kuò)展,目前只在部分大型企業(yè)中進(jìn)行使用。


NAS(網(wǎng)絡(luò)附加存儲(chǔ))采用NFS或CIFS命令集訪問數(shù)據(jù),以文件為傳輸協(xié)議,通過TCP/IP實(shí)現(xiàn)網(wǎng)絡(luò)化存儲(chǔ),可擴(kuò)展行好、價(jià)格便宜、用戶易管理,特別受到Windows系統(tǒng)用戶的歡迎。像常用的FTP服務(wù)器目錄,企業(yè)共享文件夾,網(wǎng)站內(nèi)容存儲(chǔ)這類場(chǎng)景,大都可以使用NAS服務(wù)進(jìn)行解決。但NAS需要有文件系統(tǒng)層的支持。


對(duì)于對(duì)象存儲(chǔ)而言,它既有SAN的優(yōu)點(diǎn),即高速直接訪問存儲(chǔ)設(shè)備上的數(shù)據(jù);又有NAS的優(yōu)點(diǎn),數(shù)據(jù)可以分布式存儲(chǔ),共享,從而實(shí)現(xiàn)了高性能,高可靠性的跨平臺(tái)數(shù)據(jù)存儲(chǔ)共享體系結(jié)構(gòu),因此特別容易進(jìn)行擴(kuò)展。


對(duì)象存儲(chǔ)的核心是將控制流(元數(shù)據(jù)記錄)與數(shù)據(jù)流分離(數(shù)據(jù)讀寫),控制端只負(fù)責(zé)記錄元數(shù)據(jù),而由每個(gè)對(duì)象存儲(chǔ)設(shè)備自行管理其上的數(shù)據(jù)分布,并完成讀寫過程。這樣有幾個(gè)好處:

 

1. 降低了控制端的工作負(fù)載,控制端只需與OSD交互(實(shí)際上由OSS服務(wù)層代為完成),因此當(dāng)存儲(chǔ)容量特別大時(shí),對(duì)象存儲(chǔ)系統(tǒng)也可以輕松應(yīng)對(duì),同時(shí)也極方便擴(kuò)展。


2. 不需要通過文件系統(tǒng)支持,OSD直接在存儲(chǔ)介質(zhì)上進(jìn)行I/O管理,不受LBA層尋址效率的影響,大大提升的了數(shù)據(jù)讀寫效率。


3. 不限制數(shù)據(jù)類型。由于不需要文件系統(tǒng)的支持,因此各類型的數(shù)據(jù)都可以作為對(duì)象(Object),存儲(chǔ)進(jìn)去。


4. 高容錯(cuò)性,OSD自動(dòng)完成對(duì)象的管理與冗余復(fù)制,控制端并不需要知道具體的數(shù)據(jù)位置和復(fù)制策略,當(dāng)某一位置發(fā)生故障時(shí),OSD自動(dòng)返回新的位置數(shù)據(jù)給到控制端,控制端幾乎無(wú)感。


5. 訪問方式統(tǒng)一,操作簡(jiǎn)單。由于去掉了對(duì)文件系統(tǒng)的依賴,同時(shí)提升相關(guān)數(shù)據(jù)存取效率,因此數(shù)據(jù)存取接口基本都統(tǒng)一為Rest方式調(diào)用,降低了使用的復(fù)雜度。


 


對(duì)象存儲(chǔ)的工作機(jī)制




對(duì)象存儲(chǔ)存儲(chǔ)的架構(gòu)如下,一個(gè)對(duì)象存儲(chǔ)系統(tǒng),由對(duì)象存儲(chǔ)客戶端(Client),對(duì)象存儲(chǔ)服務(wù)(OSS),元數(shù)據(jù)服務(wù)器(MDS),對(duì)象存儲(chǔ)設(shè)備OSD組成,此外還有大大小小存在于OSD中的對(duì)象Object。



對(duì)象(Object):所有被存儲(chǔ)的目標(biāo)都可以被稱作對(duì)象,它是數(shù)據(jù)存儲(chǔ)的基本單位,一個(gè)對(duì)象大小可以從幾十字節(jié)到幾PB(看OSD的支持能力),一個(gè)對(duì)象包括數(shù)據(jù)和數(shù)據(jù)屬性兩部分,數(shù)據(jù)屬性可以是數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)描述,冗余份數(shù)等等,對(duì)象自己維護(hù)自己的數(shù)據(jù)屬性。此外,一個(gè)對(duì)象有一個(gè)特定的對(duì)象標(biāo)識(shí),對(duì)象通過對(duì)象標(biāo)識(shí)和數(shù)據(jù)屬性與OSD進(jìn)行交互。


對(duì)象存儲(chǔ)設(shè)備(OSD):一個(gè)對(duì)象存儲(chǔ)設(shè)備不單單是一塊簡(jiǎn)單的硬盤,一般來說其是一個(gè)智能設(shè)備,自動(dòng)管理其上對(duì)象的數(shù)據(jù)分布,數(shù)據(jù)讀寫,并進(jìn)行相關(guān)的性能優(yōu)化。對(duì)象存儲(chǔ)設(shè)備可以有自己的CPU,內(nèi)存,存儲(chǔ)介質(zhì)和網(wǎng)絡(luò);也可以是在標(biāo)準(zhǔn)磁盤系統(tǒng)上通過軟件的虛擬化特性演化出一套智能系統(tǒng)。


為了進(jìn)一步提升效率,OSD中只分為兩層,其中第一層為Bucket, 第二層為Key。其中Bucket類似數(shù)據(jù)集,Key則是具體的數(shù)據(jù)。OSD只需獲取數(shù)據(jù)的Bucket ID,Key,以及偏移量,即可定位到具體的數(shù)據(jù)。


對(duì)象存儲(chǔ)服務(wù)(OSS):OSS是Client與OSD交互的中間層服務(wù),這個(gè)請(qǐng)和阿里云的對(duì)象存儲(chǔ)區(qū)別開來,雖然阿里云對(duì)象存儲(chǔ)也叫OSS。對(duì)象存儲(chǔ)服務(wù)負(fù)責(zé)收集OSD反饋的信息,并通過文件鎖,AccessKey等方式對(duì)Client進(jìn)行認(rèn)證,并控制其讀寫。


元數(shù)據(jù)服務(wù)器(MDS):元數(shù)據(jù)服務(wù)器為客戶端提供元數(shù)據(jù),主要是文件的邏輯視圖,包括文件與目錄的組織關(guān)系、每個(gè)文件所對(duì)應(yīng)的OSD等。同時(shí)元數(shù)據(jù)服務(wù)器支持Client的Cache,當(dāng)Cache的文件發(fā)生改變時(shí),將通知Client端刷新Cache,從而避免Cache不一致引發(fā)相關(guān)問題。


對(duì)象存儲(chǔ)客戶端(Client):對(duì)象存儲(chǔ)客戶端包含計(jì)算節(jié)點(diǎn)上某些特殊工具和接口,依次來訪問對(duì)象存儲(chǔ)系統(tǒng),比如命令行等。

數(shù)據(jù)訪問流程如下:

 

1. Client首先向MDS查詢數(shù)據(jù)邏輯視圖;


2. MDS通過OSS服務(wù)查詢OSD中數(shù)據(jù)的狀態(tài)信息;


3. MDS獲取到OSD中數(shù)據(jù)的相關(guān)信息(OSD id, Bucket ID, Key與偏移量等);


4. MDS更新Client保存的Cache信息;


5. Client向OSS提交客戶端認(rèn)證,比如AccessKey;


6. 認(rèn)證通過,OSS返回OSD與Object相關(guān)信息;


7. Client通過Rest接口訪問對(duì)應(yīng)的數(shù)據(jù)。

 



對(duì)象存儲(chǔ)的發(fā)展簡(jiǎn)史




雖然對(duì)象存儲(chǔ)這一名詞近些年才大量地出現(xiàn)在人們視線中,但其發(fā)展過程可謂源遠(yuǎn)流長(zhǎng),甚至比大數(shù)據(jù)技術(shù)的歷史還要悠久,引用硅谷技術(shù)公司顧問Philippe Nicolas公開的一張對(duì)象存儲(chǔ)統(tǒng)計(jì)圖看一下:



1998年開始,第一個(gè)做對(duì)象存儲(chǔ)的公司FilePool標(biāo)志著對(duì)象存儲(chǔ)技術(shù)領(lǐng)域的誕生,到現(xiàn)在已經(jīng)有20余年的歷史。這足足比Hadoop的歷史還要多5年(Google GFS 論文2003年發(fā)表)?,F(xiàn)在做對(duì)象存儲(chǔ)的公司已經(jīng)數(shù)量非常眾多。


目前的對(duì)象存儲(chǔ)技術(shù)分為兩大陣營(yíng),即開源產(chǎn)品與商業(yè)化產(chǎn)品。其中開源產(chǎn)品以Ceph,OpenIO, OpenStack Swift一類為主,特別是Hortonworks公司于2014年推出了Apache Ozone產(chǎn)品,提供S3接口,從而讓在大數(shù)據(jù)中使用對(duì)象存儲(chǔ)變成了可能。商業(yè)化產(chǎn)品則以各家存儲(chǔ)企業(yè)以及云廠商推出的對(duì)象存儲(chǔ)方案為主,例如阿里云OSS, 華為云OBS, 微軟 Azure等。


雖然對(duì)象存儲(chǔ)發(fā)展了這么久,各家的產(chǎn)品也五花八門,但是對(duì)象存儲(chǔ)的設(shè)計(jì)模式和架構(gòu)各家都高度的統(tǒng)一,差異只是在Client層做了一些功能豐富,例如增加了一些接口。在后續(xù)的文章中,我們會(huì)進(jìn)一步介紹一下Apache Ozone。