OpenHarmony啃論文俱樂(lè)部—云計(jì)算數(shù)據(jù)壓縮方案
??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??
【本期看點(diǎn)】
- Hadoop和Spark框架的性能優(yōu)化系統(tǒng)。
- 云計(jì)算重復(fù)數(shù)據(jù)刪除技術(shù)降低冗余度。
- 壓縮框架Ares如何統(tǒng)一不同算法。
- 在線數(shù)據(jù)壓縮“搖擺門趨勢(shì)”。
- 揭秘新型移動(dòng)云存儲(chǔ)SDM。
【技術(shù)DNA】
前言
近年來(lái),相機(jī)、衛(wèi)xing、地震監(jiān)測(cè)等傳感設(shè)備產(chǎn)生了大量的流數(shù)據(jù),云計(jì)算技術(shù)使這些流數(shù)據(jù)的存儲(chǔ)、訪問(wèn)和管理變得更加容易,也降低了成本。其中,云存儲(chǔ)系統(tǒng)成為在各種云服務(wù)器上存儲(chǔ)數(shù)據(jù)塊的一種有前途的技術(shù),其主要機(jī)制之一是數(shù)據(jù)復(fù)制。數(shù)據(jù)復(fù)制的目標(biāo)是解決云存儲(chǔ)的可用性、可靠性、安全性、帶寬和數(shù)據(jù)訪問(wèn)的響應(yīng)時(shí)間,從而使數(shù)據(jù)密集型項(xiàng)目能夠?qū)崿F(xiàn)更優(yōu)越的性能。然而,既然復(fù)制,就免不了會(huì)產(chǎn)生過(guò)多的重復(fù)副本造成資源浪費(fèi)。因此,便產(chǎn)生了一種通過(guò)移除重復(fù)副本來(lái)減小云存儲(chǔ)系統(tǒng)中數(shù)據(jù)占用的大小,實(shí)現(xiàn)數(shù)據(jù)壓縮、避免資源浪費(fèi)的重復(fù)數(shù)據(jù)刪除技術(shù)。
以一種典型的傳統(tǒng)分類方式來(lái)看,可以將此重復(fù)數(shù)據(jù)刪除技術(shù)分為delta-based和hash-based兩類。本著相同的目標(biāo),前者基于相似性的消除,后者基于加密函數(shù)而發(fā)揮作用。
而在另一種分類方式中,可以將此重復(fù)數(shù)據(jù)刪除技術(shù)分為基于服務(wù)器和基于客戶端兩類。前者中,消除冗余數(shù)據(jù)的操作是在服務(wù)器接收到數(shù)據(jù)后完成的,而后者則在發(fā)送數(shù)據(jù)之前就先在客戶端檢查數(shù)據(jù)的重復(fù)性。
后文將對(duì)以上內(nèi)容一一解析,不過(guò)開始之前,我們還是先了解一些云計(jì)算的周邊內(nèi)容。
云計(jì)算
產(chǎn)生背景
云存儲(chǔ)數(shù)字?jǐn)?shù)據(jù)量的不斷增加 ,需要更多的存儲(chǔ)空間,高效的技術(shù) ,處理這些數(shù)據(jù)。
那么何為云計(jì)算?是如上圖一般把網(wǎng)線接到云彩上進(jìn)行計(jì)算嗎?當(dāng)然不是,這是一種形象的比喻,云計(jì)算提供了一種新的互聯(lián)網(wǎng)技術(shù)方式,利用互聯(lián)網(wǎng)和中央遠(yuǎn)程服務(wù)器管理資源和應(yīng)用程序。許多最終用戶以最低的成本使用這一創(chuàng)新,并且無(wú)需安裝就可以訪問(wèn)應(yīng)用程序。
主要優(yōu)點(diǎn):
- 可容錯(cuò)
- 處理速度快
- 存儲(chǔ)容量大
- 帶寬寬
- 允許使用 Internet 訪問(wèn)遠(yuǎn)程信息和文件
存在問(wèn)題:
- 云服務(wù)中最重要、最典型的是信息存儲(chǔ)服務(wù)。
常見的云存儲(chǔ)供應(yīng)商:
- Dropbox ,谷歌公司的Google Drive、微軟公司的 OneDrive 和亞馬遜公司的 AWS 等。
云計(jì)算和大數(shù)據(jù)是近六七年來(lái)大熱的兩個(gè)概念,很多時(shí)候,二者都是被綁定在一起談?wù)摰摹?/p>
大數(shù)據(jù)就是通過(guò)搜集海量的數(shù)據(jù)對(duì)其進(jìn)行分析和處理,發(fā)現(xiàn)隱藏在這些數(shù)據(jù)背后的潛在聯(lián)系,洞察內(nèi)在過(guò)程,進(jìn)而使這些數(shù)據(jù)轉(zhuǎn)化或推導(dǎo)出具有更多價(jià)值的信息,最終為用戶的決策提供幫助。放到日常工作生活中的典型表現(xiàn)就是“喜歡看什么,就會(huì)推什么”:當(dāng)我們刷一些娛樂(lè)類或者新聞?lì)惖腶pp時(shí),看到感興趣的內(nèi)容就免不了會(huì)駐足多停留一段時(shí)間,可能還會(huì)直接去搜相關(guān)的話題,這時(shí)大數(shù)據(jù)就已經(jīng)完成了標(biāo)記、為你的ID打上了相應(yīng)的標(biāo)簽?;趦?nèi)容相關(guān)性的頻次或后臺(tái)的定位信息等,標(biāo)簽也會(huì)不盡相同。盡管覺(jué)得自己凈如白紙,但在平臺(tái)的全閉環(huán)下,大數(shù)據(jù)總是能精確地捕捉并震撼到我們。
當(dāng)今時(shí)代的人們尚無(wú)隱私可言。技術(shù)是中立的,益害與否取決于被如何使用,地圖導(dǎo)航類app中基于大數(shù)據(jù)的實(shí)時(shí)交通流量分析大大方便了出行。鑒于近兩年來(lái)不斷發(fā)生的一些事件,隱私防護(hù)也得到了有關(guān)部門的重視。因此,許多app設(shè)置中相繼提供了關(guān)閉“個(gè)性化”一類的入口,可在一定程度上緩解大數(shù)據(jù)對(duì)個(gè)人生活的侵?jǐn)_。
云計(jì)算本質(zhì)上是分布式計(jì)算的一種,通過(guò)對(duì)任務(wù)的分發(fā),實(shí)現(xiàn)多端并行計(jì)算,最終再進(jìn)行計(jì)算結(jié)果的合并。它提供了計(jì)算資源的虛擬化池,存儲(chǔ)、應(yīng)用、內(nèi)存、處理能力和服務(wù)都是在用戶需要時(shí)可以用來(lái)請(qǐng)求這些資源的實(shí)例。其中,云服務(wù)通常分為平臺(tái)即服務(wù)(PaaS)、軟件即服務(wù)(SaaS)和基礎(chǔ)設(shè)施即服務(wù)(IaaS)三種模式,三者的主要區(qū)別就是提供服務(wù)的方式不同,需要用戶根據(jù)實(shí)際需要進(jìn)行選擇匹配。此外,基于云計(jì)算的思路,還衍生出了霧計(jì)算、邊緣計(jì)算、移動(dòng)邊緣計(jì)算(MEC)和移動(dòng)云計(jì)算(MCC)。
2015年迅雷曾推出的“賺錢寶”就是一種基于云計(jì)算的產(chǎn)品。用戶只需連接家中路由器,就可以將空閑帶寬收集處理,轉(zhuǎn)變?yōu)榭晒┗ヂ?lián)網(wǎng)服務(wù)商大規(guī)模使用的創(chuàng)新型CDN,最終實(shí)現(xiàn)幫助普通用戶將空閑資源變現(xiàn)。
所以我們說(shuō)云計(jì)算和大數(shù)據(jù)之間的聯(lián)系較緊密,云計(jì)算作為計(jì)算資源的底層,支撐著上層大數(shù)據(jù)的高效處理,數(shù)據(jù)中心的壯大又為云計(jì)算的發(fā)展提供了保障。
云存儲(chǔ)
云存儲(chǔ)是一種有用的移動(dòng)邊緣計(jì)算(M E C)設(shè)備,其特點(diǎn)是存儲(chǔ)空間有限。這些數(shù)據(jù)或日志數(shù)據(jù)可以在需要時(shí)被存儲(chǔ)和訪問(wèn)到云存儲(chǔ)服務(wù)中。為了提高M(jìn) E C設(shè)備上的云存儲(chǔ)服務(wù)體驗(yàn),可以將多個(gè)云存儲(chǔ)服務(wù)合并成一個(gè)統(tǒng)一的云存儲(chǔ)在云存儲(chǔ)中,在處理大量數(shù)據(jù)時(shí),無(wú)法避免重復(fù)。盡管云存儲(chǔ)空間巨大,這種復(fù)制極大地浪費(fèi)了網(wǎng)絡(luò)資源,消耗了大量電能,并使數(shù)據(jù)管理變得復(fù)雜。重復(fù)數(shù)據(jù)刪除可以節(jié)省大量空間和成本,備份應(yīng)用可以減少高達(dá) 90-95%的存儲(chǔ)需求,標(biāo)準(zhǔn)文件系統(tǒng)可以減少高達(dá) 68%的存儲(chǔ)需求。 數(shù)據(jù)重復(fù)刪除和數(shù)據(jù)壓縮是在云中優(yōu)化存儲(chǔ)的可用技術(shù)中使用的最突出的技術(shù)。
重復(fù)數(shù)據(jù)刪除技術(shù)
隨機(jī)復(fù)制作為一種流行的復(fù)制方案,已廣泛用于云存儲(chǔ)系統(tǒng),如Hadoop分布式文件系統(tǒng)(HDFS)、RAMCloud、Google文件系統(tǒng)(GFS)和微軟Azure等,使用隨機(jī)復(fù)制從不同機(jī)房隨機(jī)選擇的三臺(tái)服務(wù)器中復(fù)制數(shù)據(jù),從而防止單個(gè)集群中的數(shù)據(jù)丟失。然而,三方隨機(jī)復(fù)制不能很好地應(yīng)對(duì)機(jī)器故障,若三個(gè)節(jié)點(diǎn)的隨機(jī)組合同時(shí)出現(xiàn)錯(cuò)誤,就會(huì)造成數(shù)據(jù)丟失。
為了解決以上問(wèn)題,便提出了Copyset復(fù)制和分層復(fù)制兩種方案。但又出現(xiàn)了新的問(wèn)題:它們都沒(méi)有試圖降低由于復(fù)制而造成的存儲(chǔ)成本和帶寬成本。盡管后續(xù)又提出了更多相關(guān)的復(fù)制方案,但仍然存在著同樣的問(wèn)題。
于是,有學(xué)者設(shè)計(jì)了一種叫做流行感知的多故障彈性和經(jīng)濟(jì)有效的復(fù)制方案(PMCR)的方案。它比之前的復(fù)制方案都有優(yōu)勢(shì),且同時(shí)具有以下特點(diǎn):
- 可以處理相關(guān)或不相關(guān)的機(jī)器故障。
- 壓縮那些很少使用的冷門數(shù)據(jù)的副本。
- 降低了存儲(chǔ)和帶寬成本。
- 不會(huì)顯著影響數(shù)據(jù)持久性、數(shù)據(jù)可用性和數(shù)據(jù)請(qǐng)求的延遲。
SC、DC壓縮
由于PMCR方案的操作是一整套流程,我們?cè)诖酥魂P(guān)注其中壓縮數(shù)據(jù)降低冗余度的部分。
SC全稱Similarity Compression,是依據(jù)數(shù)據(jù)相似性壓縮的一種方法;DC全稱Delta Compression,意即增量壓縮。PMCR使用SC壓縮讀密集型數(shù)據(jù),使用DC壓縮寫密集型數(shù)據(jù)。SC刪除文件或文件中相似的塊,文件請(qǐng)求用戶在接收到壓縮文件后,可再恢復(fù)已刪除的數(shù)據(jù)塊;DC存儲(chǔ)文件的副本和與此文件相似的其他文件的不同部分,以上將會(huì)被傳輸給文件請(qǐng)求用戶。而當(dāng)文件更新時(shí),只需將更新后的部分同步到副本節(jié)點(diǎn)即可。
相似性壓縮(SC):
進(jìn)行SC時(shí),相似的塊被分組在一起,一定數(shù)量相似的小塊形成一個(gè)大塊。然后,刪除重復(fù)的塊或接近重復(fù)的塊到一個(gè)塊。在PMCR中,當(dāng)壓縮讀密集型數(shù)據(jù)時(shí),對(duì)于每一組相似的塊,只需存儲(chǔ)第一個(gè)塊即可,剩下的冗余塊可刪除;對(duì)于不同數(shù)據(jù)對(duì)象之間的冗余塊,也可消除,方式大體分為文件內(nèi)壓縮和文件間壓縮:
增量壓縮(DC):
如圖,B塊和B’塊都是相似的塊,它們之間的差異用橙色標(biāo)記出,此時(shí),便可用DC存儲(chǔ)橙色區(qū)域。當(dāng)塊B或塊B’被更新時(shí),只需將更新的部分而非整個(gè)塊發(fā)送到復(fù)制服務(wù)器即可,然后,副本服務(wù)器再更新相應(yīng)的部分。要將數(shù)據(jù)發(fā)送給用戶,只需傳輸存儲(chǔ)的不同部分和B塊的完整部分。
DSHA算法
現(xiàn)有系統(tǒng)使用(任何類型的)加密散列算法(如 MD5 或 Secure 散列算法),生成散列值,重復(fù)數(shù)據(jù)刪除這些算法產(chǎn)生固定長(zhǎng)度的 128 位或 160 位分別作為輸出以識(shí)別復(fù)制的存在。同時(shí)用一個(gè)額外的內(nèi)存空間存儲(chǔ)哈希值。
本文提出了一種高效的分布式存儲(chǔ)哈希算法(Distributed Storage Hash Algorithm, DSHA),以減少用于識(shí)別和丟棄冗余數(shù)據(jù)的哈希值所占用的內(nèi)存空間。
結(jié)論:實(shí)驗(yàn)分析表明,該策略降低了哈希值的內(nèi)存利用率,提高了數(shù)據(jù)讀寫性能。
SDM技術(shù)
SDM是一種針對(duì)移動(dòng)設(shè)備的智能重復(fù)數(shù)據(jù)刪除系統(tǒng),提高了云存儲(chǔ)作為移動(dòng)設(shè)備上的存儲(chǔ)解決方案的可行性。SDM旨在利用多核技術(shù) 在現(xiàn)代移動(dòng)處理器上的架構(gòu)。為了減少重復(fù)數(shù)據(jù)刪除過(guò)程的時(shí)間,針對(duì)每種文件類型的最佳重復(fù)數(shù)據(jù)刪除方法,而不依賴于針對(duì)每種文件類型的任何配置。由于其設(shè)計(jì),學(xué)習(xí)系統(tǒng)不存在散列不兼容性。
移動(dòng)設(shè)備和云存儲(chǔ)服務(wù)的固有限制:
- 移動(dòng)設(shè)備的性能限制。
移動(dòng)設(shè)備的處理功率和電源受到限制。
- 有限的存儲(chǔ)容量。
由于其外形因素,也很難在移動(dòng)設(shè)備中安裝高容量的存儲(chǔ)空間。云存儲(chǔ)供應(yīng)商提供的免費(fèi)存儲(chǔ)容量 往往很小,升級(jí)需支付額外費(fèi)用。
- 網(wǎng)絡(luò)帶寬。
網(wǎng)絡(luò)帶寬對(duì)于訪問(wèn)云存儲(chǔ)至關(guān)重要。遺憾的是,網(wǎng)絡(luò)帶寬通常被限制在免費(fèi)存儲(chǔ)上,云存儲(chǔ)服務(wù)的帶寬是在活動(dòng)用戶的數(shù)量之間劃分的,會(huì)導(dǎo)致更長(zhǎng)的訪問(wèn)時(shí)間,在大多數(shù)在某些情況下,這將導(dǎo)致云存儲(chǔ)服務(wù)的性能低于客戶的網(wǎng)絡(luò)性能。
- 價(jià)格昂貴的無(wú)線網(wǎng)絡(luò)收費(fèi)。
- 有限網(wǎng)絡(luò)覆蓋范圍。
網(wǎng)絡(luò)覆蓋對(duì)移動(dòng)用戶來(lái)說(shuō)可能是一個(gè)問(wèn)題。當(dāng)用戶超出網(wǎng)絡(luò)覆蓋范圍時(shí),所有的網(wǎng)絡(luò)活動(dòng)都將是已停止,這意味著沒(méi)有云存儲(chǔ)服務(wù)。
系統(tǒng)架構(gòu)
我們建議使用智能重復(fù)數(shù)據(jù)刪除技術(shù)進(jìn)行移動(dòng)云存儲(chǔ)(SDM)。SDM在文件級(jí)和塊級(jí)使用多級(jí)重復(fù)數(shù)據(jù)刪除方法,這些方法由學(xué)習(xí)系統(tǒng)集成(學(xué)習(xí)系統(tǒng)選擇最佳的重復(fù)數(shù)據(jù)消除 方法來(lái)實(shí)現(xiàn)最佳的數(shù)據(jù)減少和能量消耗。此外,我們還使用哈希表和一個(gè)bloom過(guò)濾器來(lái)進(jìn)行本地搜索并添加并行化來(lái)提高應(yīng)用程序的性能。整個(gè)系統(tǒng)如圖所示。整個(gè)過(guò)程是可逆的,因?yàn)橹貜?fù)數(shù)據(jù)刪除是一個(gè)無(wú)損壓縮的操作。
- 文件級(jí)重復(fù)數(shù)據(jù)刪除。
在文件級(jí)別上,重復(fù)數(shù)據(jù)刪除可以通過(guò)比較整個(gè)文件來(lái)進(jìn)行操作。由于它只將一個(gè)哈希值與另一個(gè)文件哈希值進(jìn)行比較,因此該進(jìn)程比其他方法更快。但是,當(dāng)文件的一部分發(fā)生更改時(shí),整個(gè)哈希值也會(huì)發(fā)生更改。這就降低了文件級(jí)重復(fù)數(shù)據(jù)刪除的性能。
- 塊級(jí)重復(fù)數(shù)據(jù)刪除。
當(dāng)在塊級(jí)別執(zhí)行重復(fù)數(shù)據(jù)刪除時(shí),處理的文件被分割為多個(gè)塊。每個(gè)塊的處理與文件級(jí)重復(fù)數(shù)據(jù)刪除中的文件相同。塊的大小可以是固定大小的或可變大小的。
塊級(jí)變化不會(huì)影響其他塊的哈希值,但是,在一個(gè)塊部分字節(jié)變化上就會(huì)改變多個(gè)塊的哈希值??勺兇笮〉膲K或內(nèi)容定義的分塊通過(guò)使用固定的分塊偏移量來(lái)分割一個(gè)文件來(lái)解決這個(gè)問(wèn)題。固定的分塊偏移量可以通過(guò)使用Rabin滾動(dòng)散列找到。Rabin滾動(dòng)散列使用多項(xiàng)式和一個(gè)滑動(dòng)窗口來(lái)進(jìn)行散列。為了找到分塊偏移量,我們滑動(dòng)和散列窗口,直到哈希匹配一個(gè)預(yù)定義的值。
應(yīng)用場(chǎng)景
客戶端API
該方案提供了客戶端與存儲(chǔ)服務(wù)器之間良好的接口。通過(guò)選擇合適的存儲(chǔ)節(jié)點(diǎn), 可以降低 CPU 負(fù)載。
System.out.println();
jLabel3.setText(digits+outputString1);
Class.forname("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/javamysql", "root", "root");
String HashValue = digits + outputString1;
String status = null;
int result, tab = 0;
性能測(cè)試數(shù)據(jù):
安卓的一個(gè)原型實(shí)現(xiàn)上的實(shí)現(xiàn):
1.僅限文件級(jí)重復(fù)數(shù)據(jù)刪除的系統(tǒng)(FDS)。
2.僅限塊級(jí)重復(fù)數(shù)據(jù)刪除的系統(tǒng)(BDS)。
3.針對(duì)移動(dòng)設(shè)備或SDM的智能重復(fù)數(shù)據(jù)刪除。
4.預(yù)配置的重復(fù)數(shù)據(jù)刪除系統(tǒng)(PCDS)。
5.旋轉(zhuǎn)重復(fù)數(shù)據(jù)刪除系統(tǒng)(RADS)。
RADS的工作原理是使用重復(fù)數(shù)據(jù)消除比率來(lái)確定每種文件類型應(yīng)該使用哪種重復(fù)數(shù)據(jù)消除方法。如果沒(méi)有達(dá)到該文件類型 的目標(biāo)重復(fù)數(shù)據(jù)刪除比率,則系統(tǒng)將選擇另一種重復(fù)數(shù)據(jù)刪除方法。對(duì)于每種文件類型,重復(fù)數(shù)據(jù)刪除比率通過(guò)將重復(fù)數(shù)據(jù)刪除文件大小除以文件大小來(lái)計(jì)算。
測(cè)試結(jié)果:
演示不同的重復(fù)數(shù)據(jù)刪除系統(tǒng)在處理未知文件類型時(shí)的性能:
總的來(lái)說(shuō),SDM比其他系統(tǒng)表現(xiàn)得更好,特別是在未知的文件類型上,因?yàn)槲覀兊南到y(tǒng)不需要對(duì)不同的文件類型進(jìn)行任 何特定的配置。對(duì)于大多數(shù)情況下文件和塊級(jí)之間的重復(fù)數(shù)據(jù)刪除吞吐量,以及接近塊級(jí)重復(fù)數(shù)據(jù)刪除精度的重復(fù)數(shù)據(jù)刪 除精度,與其他系統(tǒng)相比,我們的系統(tǒng)可以使云存儲(chǔ)作為移動(dòng)設(shè)備的存儲(chǔ)解決方案更加可行。
Ares數(shù)據(jù)壓縮框架
介紹
現(xiàn)代應(yīng)用中的數(shù)據(jù)爆炸現(xiàn)象給存儲(chǔ)系統(tǒng)帶來(lái)了巨大的壓力,因此開發(fā)者使用數(shù)據(jù)壓縮技術(shù)來(lái)解決這個(gè)問(wèn)題。但是,在考慮輸入數(shù)據(jù)類型和格式時(shí),每個(gè)壓縮庫(kù)都表現(xiàn)出不同的優(yōu)勢(shì)和劣勢(shì)。所以有相關(guān)學(xué)者提出了Ares,一個(gè)智能、自適應(yīng)和靈活的模塊化壓縮框架,可以根據(jù)工作負(fù)載的類型為給定的輸入數(shù)據(jù)動(dòng)態(tài)選擇壓縮庫(kù),并為用戶提供適當(dāng)?shù)幕A(chǔ)設(shè)施來(lái)微調(diào)所選的庫(kù)。Ares是一個(gè)模塊化框架,它統(tǒng)一了多個(gè)壓縮庫(kù),同時(shí)允許用戶添加更多壓縮庫(kù)。同時(shí),Ares也是一個(gè)統(tǒng)一的壓縮引擎,它抽象了每個(gè)工作負(fù)載使用不同壓縮庫(kù)的復(fù)雜性。
在科學(xué)和云計(jì)算領(lǐng)域的實(shí)際運(yùn)用中,Ares的執(zhí)行速度相比其他解決方案快了 2-6 倍,而且附加數(shù)據(jù)分析的成本較低。與完全沒(méi)有壓縮的基線相比,速度快了 10 倍。
面臨的問(wèn)題
我們知道,無(wú)損壓縮算法分為兩類:通用算法和專用算法。像Bzip、Zlib、7z這些就是屬于通用壓縮庫(kù),事實(shí)上,它們的性能的確很好,但不足是不會(huì)利用數(shù)據(jù)表示之間的細(xì)微差別。所以又有了一些更專門的算法,比如Snappy、SPDP、LZO等,這一類算法通過(guò)最小化數(shù)據(jù)占用空間來(lái)提高應(yīng)用程序的整體性能,因而有著廣泛的前景。
盡管有以上這些特定領(lǐng)域的壓縮庫(kù)的良好發(fā)展,但是仍然面臨幾個(gè)比較現(xiàn)實(shí)的問(wèn)題:
數(shù)據(jù)依賴:
由于每個(gè)庫(kù)對(duì)某種數(shù)據(jù)類型的專一化,致使對(duì)于其他情況來(lái)說(shuō),它通常不夠一般化。即使選擇了庫(kù),大多數(shù)應(yīng)用程序由于使用很多不同類型的數(shù)據(jù),因此僅使用一個(gè)庫(kù)也不會(huì)產(chǎn)生最佳性能。
庫(kù)的選擇:
不同的庫(kù)有著不同的優(yōu)點(diǎn)和缺點(diǎn),通常為一個(gè)用例選擇合適的庫(kù)是困難的。即使在同一個(gè)應(yīng)用程序中,其不同部分也會(huì)有著不同的壓縮需求。比如檔案的存儲(chǔ)需要高的壓縮比,而進(jìn)程間的數(shù)據(jù)共享需要高的壓/解壓縮速度。
API和可用性:
每個(gè)壓縮庫(kù)都有自己的一組參數(shù)和API,通常很難過(guò)渡到或采用新的庫(kù),沒(méi)有哪種壓縮算法可為所有類型的數(shù)據(jù)、文件格式或應(yīng)用程序需求提供最佳性能。我們希望可以有一個(gè)智能的框架,能夠無(wú)縫統(tǒng)一多個(gè)庫(kù),并根據(jù)特定場(chǎng)景動(dòng)態(tài)選擇“最佳”壓縮算法。
基準(zhǔn)測(cè)試
既然要統(tǒng)一不同算法,那首先就要確切地掌握它們的實(shí)際表現(xiàn)。因此,學(xué)者對(duì)廣泛選擇的壓縮庫(kù)通過(guò)全面的基準(zhǔn)測(cè)試進(jìn)行了性能評(píng)估:
從數(shù)據(jù)類型、數(shù)據(jù)格式和工作負(fù)載優(yōu)先級(jí)三個(gè)維度進(jìn)行了測(cè)試,篇幅有限,細(xì)節(jié)分析部分這里不再具體展開。簡(jiǎn)單總結(jié)為:通過(guò)觀察各個(gè)庫(kù)之間的性能變化,可以發(fā)現(xiàn)每個(gè)工作負(fù)載都可以從智能的動(dòng)態(tài)壓縮框架中受益。
Ares的體系架構(gòu)
Ares架構(gòu)的核心是即插即用,框架是一個(gè)中間件庫(kù),它封裝了多個(gè)壓縮庫(kù),從用戶側(cè)抽象出它們的復(fù)雜性。應(yīng)用程序可以使用Ares作為工具(CLI)或作為一個(gè)庫(kù)(API)。在這兩種情況下,Ares內(nèi)部的數(shù)據(jù)流是相同的。首先,Ares分析輸入數(shù)據(jù),以識(shí)別所涉及的數(shù)據(jù)類型和格式。其輸入可以是一個(gè)文件、一個(gè)目錄或一個(gè)以前壓縮過(guò)的文件(file.ares)。然后,將分析結(jié)果傳遞給主引擎,由主引擎決定哪個(gè)壓縮庫(kù)最適合給定的情況。根據(jù)決策,Ares利用一個(gè)庫(kù)池,其中包括預(yù)編譯的壓縮庫(kù)(目前的原型中已存在11個(gè)),再執(zhí)行壓/解壓縮操作。最后,Ares用其元數(shù)據(jù)修飾壓縮數(shù)據(jù),并輸出.ares文件到磁盤。
要點(diǎn)評(píng)估
1. 開銷和資源利用率
如上圖,我們可以觀察到,每個(gè)被測(cè)試的庫(kù)都展現(xiàn)了不同的開銷。例如,lz4、quicklz和snappy在CT、I/O和DT上都實(shí)現(xiàn)了類似的時(shí)間,但系統(tǒng)利用率不同(如snappy是CPU密集型、內(nèi)存占用低)。相比之下,bsc提供了最高8.6x的CR,但也是最慢的庫(kù),它的CPU和內(nèi)存占用率高達(dá)90%以上。bzip2的內(nèi)存占用較低,但在CR為6.2x時(shí)仍保持較高的CPU占用率。另一方面,Ares通過(guò)分析輸入數(shù)據(jù)來(lái)平衡CT、DT和CR,而這個(gè)額外的開銷只占總時(shí)間的10%。Ares用了74秒進(jìn)行數(shù)據(jù)類型和格式的檢測(cè),即便有這些額外的開銷,Ares執(zhí)行所有操作的速度仍然比所有庫(kù)的速度快,并取得了最佳的總體時(shí)間。
具體來(lái)說(shuō),Ares比bsc快6.5倍,比bzip2快4.6倍,比lz4、quicklz快5-40%,而且在達(dá)到58%的CPU和64%的內(nèi)存占用率情況下仍然非??臁?/p>
2. 壓/解壓智能度
從結(jié)果可以看出,使用CR為1.75倍的lz4可以更快地壓縮二進(jìn)制數(shù)據(jù)。對(duì)于較復(fù)雜的壓縮,bsc實(shí)現(xiàn)了大于5倍的CR,但CT和DT明顯減慢。
3. 壓/解壓適應(yīng)度
4. 壓/解壓靈活度
Ares的優(yōu)勢(shì)在于它能夠根據(jù)輸入的數(shù)據(jù)類型和格式進(jìn)行壓縮。此外,Ares提供了在給定工作負(fù)載的情況下對(duì)某些壓縮特性進(jìn)行優(yōu)先級(jí)排序的基礎(chǔ)設(shè)施。Ares的目標(biāo)是通過(guò)C/C++和Java綁定支持科學(xué)和云工作負(fù)載。此外,Ares抽象了它的引擎中包含的每個(gè)壓縮庫(kù)的細(xì)節(jié),這使得它更易于使用,并且在需要時(shí)可以靈活地?cái)U(kuò)展到更多的壓縮庫(kù)。下面用了四個(gè)不同的科學(xué)應(yīng)用(VPIC和HACC)和云工作負(fù)載(單詞計(jì)數(shù)和整數(shù)排序)測(cè)試了Ares的性能,研究了三種類型的工作負(fù)載:讀密集型、寫密集型和混合讀寫型。
總結(jié)
與傳統(tǒng)的壓縮庫(kù)相比,Ares可以提高性能。具體來(lái)說(shuō),在科學(xué)和云計(jì)算領(lǐng)域的實(shí)際應(yīng)用中,Ares的執(zhí)行速度比同類解決方案快了2-6倍,并為用戶提供了一個(gè)靈活的基礎(chǔ)設(shè)施,可根據(jù)手頭的任務(wù)確定壓縮特點(diǎn)。