陸克中 朱金彬 李正民 隋秀峰
1(深圳大學(xué)計算機(jī)與軟件學(xué)院 廣東深圳 518060) 2(廣東工業(yè)大學(xué)計算機(jī)學(xué)院 廣州 511400) 3(國家計算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心 北京 100029) 4(計算機(jī)體系結(jié)構(gòu)國家重點(diǎn)實(shí)驗(yàn)室 (中國科學(xué)院計算技術(shù)研究所) 北京 100190)5(中國工程院戰(zhàn)略咨詢中心 北京 100088)
面向固態(tài)硬盤的Spark數(shù)據(jù)持久化方法設(shè)計
陸克中1朱金彬2,4李正民3隋秀峰4,5
1(深圳大學(xué)計算機(jī)與軟件學(xué)院 廣東深圳 518060)2(廣東工業(yè)大學(xué)計算機(jī)學(xué)院 廣州 511400)3(國家計算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心 北京 100029)4(計算機(jī)體系結(jié)構(gòu)國家重點(diǎn)實(shí)驗(yàn)室 (中國科學(xué)院計算技術(shù)研究所) 北京 100190)5(中國工程院戰(zhàn)略咨詢中心 北京 100088)
(kzlu@szu.edu.cn)
基于固態(tài)硬盤(solid-state drive, SSD)和硬盤(hard disk drive, HDD)混合存儲的數(shù)據(jù)中心已經(jīng)成為大數(shù)據(jù)計算領(lǐng)域的高性能載體,數(shù)據(jù)中心負(fù)載應(yīng)該可將不同特性的數(shù)據(jù)按需持久化到SSD或HDD,以提升系統(tǒng)整體性能.Spark是目前產(chǎn)業(yè)界廣泛使用的高效大數(shù)據(jù)計算框架,尤其適用于多次迭代計算的應(yīng)用領(lǐng)域,其原因在于Spark可以將中間數(shù)據(jù)持久化在內(nèi)存或硬盤中,且持久化數(shù)據(jù)到硬盤打破了內(nèi)存容量不足對數(shù)據(jù)集規(guī)模的限制.然而,當(dāng)前的Spark實(shí)現(xiàn)并未專門提供顯式的面向SSD的持久化接口,盡管可根據(jù)配置信息將數(shù)據(jù)按比例分布到不同的存儲介質(zhì)中,但是用戶無法根據(jù)數(shù)據(jù)特征按需指定RDD的持久化存儲介質(zhì),針對性和靈活性不足.這不僅成為進(jìn)一步提升Spark性能的瓶頸,而且嚴(yán)重影響了混合存儲系統(tǒng)性能的發(fā)揮.有鑒于此,首次提出面向SSD的數(shù)據(jù)持久化策略.探索了Spark數(shù)據(jù)持久化原理,基于混合存儲系統(tǒng)優(yōu)化了Spark的持久化架構(gòu),最終通過提供特定的持久化API實(shí)現(xiàn)用戶可顯式、靈活指定RDD的持久化介質(zhì).基于SparkBench的實(shí)驗(yàn)結(jié)果表明,經(jīng)本方案優(yōu)化后的Spark與原生版本相比,其性能平均提升14.02%.
大數(shù)據(jù);混合存儲;固態(tài)硬盤;Spark;持久化
“大數(shù)據(jù)”描述了信息爆炸時代所產(chǎn)生的海量數(shù)據(jù),它不僅聚焦于數(shù)據(jù)規(guī)模本身,更強(qiáng)調(diào)了數(shù)據(jù)量激增背景下的數(shù)據(jù)分析與應(yīng)用所面臨的巨大挑戰(zhàn)[1].與傳統(tǒng)數(shù)據(jù)相比,大數(shù)據(jù)來源廣、種類豐富且格式多樣,其中囊括了結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)[2].目前,大數(shù)據(jù)已經(jīng)滲透到人類社會的各行各業(yè),已成為起決定性作用的生產(chǎn)要素.挖掘隱藏在大數(shù)據(jù)內(nèi)部的有價值的信息,可以有效推進(jìn)相關(guān)工作的展開,提高領(lǐng)導(dǎo)者的決策和管理水平[3-4].大數(shù)據(jù)技術(shù)是指從各種類型的大數(shù)據(jù)中快速提取高價值信息的能力,其中涉及數(shù)據(jù)的采集、清洗、存儲、管理、信息挖掘和可視化等內(nèi)容.面對海量數(shù)據(jù),如何在有效的時間內(nèi)管理、分析并提取有價值的信息,成為人們亟需解決的問題.然而,無論是規(guī)模、種類還是結(jié)構(gòu),大數(shù)據(jù)對人們駕馭數(shù)據(jù)的能力提出了巨大挑戰(zhàn).
Spark是目前高效且在產(chǎn)業(yè)界被廣泛使用的大數(shù)據(jù)計算框架,是通用、快速的大規(guī)模數(shù)據(jù)處理引擎[5].1)Spark提供了統(tǒng)一的解決方案,可以用于交互式查詢(Spark SQL)、實(shí)時流處理(Spark Streaming)、機(jī)器學(xué)習(xí)(Spark MLlib)等復(fù)雜任務(wù);2)Spark通過彈性分布式數(shù)據(jù)集(resilient distributed dataset, RDD)劃分階段和任務(wù),通過高效的有向無環(huán)圖(directed acyclic graph, DAG)執(zhí)行引擎優(yōu)化子任務(wù)執(zhí)行順序,并通過基于內(nèi)存的計算大幅提升數(shù)據(jù)處理效率;3)Spark數(shù)據(jù)管理依賴于HDFS,Hive等多種數(shù)據(jù)源,并且集群模式下的Spark實(shí)現(xiàn)了橫向擴(kuò)展,支持大規(guī)模數(shù)據(jù)的處理.RDD是Spark區(qū)別于其他大數(shù)據(jù)計算框架最重要的概念,它是一種具有高度容錯機(jī)制的、只讀的分布式數(shù)據(jù)集.Spark應(yīng)用程序中,每一個RDD會被分成多個分區(qū),且Spark以分區(qū)為單位對RDD進(jìn)行各種操作[6].
持久化(persist)RDD分區(qū)數(shù)據(jù)到內(nèi)存或硬盤實(shí)現(xiàn)了對計算任務(wù)中間結(jié)果的緩存,以供后續(xù)迭代任務(wù)直接讀取中間結(jié)果,避免了重復(fù)計算,大幅提升了數(shù)據(jù)處理效率[7].另外,持久化數(shù)據(jù)到硬盤,打破了內(nèi)存容量不足對數(shù)據(jù)集規(guī)模的限制,使得Spark處理大數(shù)據(jù)游刃有余.
固態(tài)硬盤(solid-state drive, SSD)的出現(xiàn)為提升存儲系統(tǒng)性能帶來了新的機(jī)遇,SSD具有低功耗、低延遲、體積小等優(yōu)點(diǎn)[8].與傳統(tǒng)企業(yè)級硬盤(hard disk drive, HDD)通過移動機(jī)械臂來尋址方式不同,SSD完全構(gòu)建于半導(dǎo)體芯片上,因此具有隨機(jī)訪問性能.然而,由于SSD容量成本過高、壽命有限等不足,完全使用SSD替換HDD會大幅提升產(chǎn)業(yè)成本.為了合理利用SSD的高性能和HDD的低廉價格等優(yōu)勢,基于SSD和HDD混合存儲的異構(gòu)數(shù)據(jù)中心得到人們普遍研究和應(yīng)用[9].當(dāng)前的研究主要涉及了SSD與HDD的組織架構(gòu)以及容量比例分配,并針對不同特征的數(shù)據(jù)提出了合理、高效的數(shù)據(jù)存儲策略.目前,Google,Amazon,Facebook,Baidu等國內(nèi)外大型互聯(lián)網(wǎng)公司都已經(jīng)將SSD應(yīng)用到數(shù)據(jù)中心的存儲系統(tǒng)中[10-12],通過結(jié)合數(shù)據(jù)冷熱條件,實(shí)現(xiàn)了數(shù)據(jù)的按需持久化,提升了系統(tǒng)整體性能.
然而,數(shù)據(jù)中心計算框架Spark所提供的數(shù)據(jù)持久化語義對存儲介質(zhì)不具備感知能力,無法實(shí)現(xiàn)RDD分區(qū)數(shù)據(jù)的按需持久化.具體而言,在Spark迭代計算任務(wù)中,不同RDD的重復(fù)利用率往往不同,顯然,將不同重復(fù)利用率的RDD有選擇地持久化到SSD或HDD,充分利用SSD高速讀寫和HDD大容量的特性,可有效提升Spark性能,而原生Spark提供的單一持久化語義根據(jù)Spark配置信息按照比例地放置RDD分區(qū)的存儲位置,針對性和靈活性不足,無法實(shí)現(xiàn)上述按需持久化目標(biāo).因此,基于混合存儲系統(tǒng),為應(yīng)用的開發(fā)者提供面向不同存儲介質(zhì)的RDD持久化編程接口,實(shí)現(xiàn)用戶根據(jù)程序中數(shù)據(jù)的不同特征有針對性地進(jìn)行數(shù)據(jù)的持久化成為進(jìn)一步提升Spark性能的關(guān)鍵技術(shù)之一.
本文首次基于混合存儲系統(tǒng)提出面向SSD的數(shù)據(jù)持久化策略.探索了Spark數(shù)據(jù)持久化原理,并基于SSD和HDD的混合存儲系統(tǒng)優(yōu)化了Spark的持久化架構(gòu).設(shè)計DeviceAdapter模塊完成存儲設(shè)備的映射,并提供顯式持久化API實(shí)現(xiàn)RDD的按需持久化.
1.1 存儲異構(gòu)數(shù)據(jù)中心的發(fā)展
IDC的研究報告指出:“自2005年至2020年,人類社會所產(chǎn)生的數(shù)據(jù)將增長300倍——從130艾字節(jié)增長到40 000艾字節(jié)”[13].數(shù)據(jù)的爆炸式增長從根本上改變了傳統(tǒng)數(shù)據(jù)的規(guī)模、種類和結(jié)構(gòu)等,催生了新一代數(shù)據(jù)中心的數(shù)據(jù)存儲和管理方式的變革.尤其對于大數(shù)據(jù)分析型數(shù)據(jù)中心,其任務(wù)高頻率的讀、寫磁盤操作對數(shù)據(jù)中心存儲系統(tǒng)的性能提出巨大的挑戰(zhàn).SSD的引入,顯著地提升了數(shù)據(jù)中心的性能和能效.SSD可以幫助企業(yè)在一個快速發(fā)展的大數(shù)據(jù)時代中最大限度地提升數(shù)據(jù)的存儲和分析效率.目前,諸多新興技術(shù)可以有效地提升SSD的I/O帶寬和降低訪問延遲.而HDD仍然能為那些對存儲性能要求較低的數(shù)據(jù)提供大量的存儲效率.IDC的研究數(shù)據(jù)顯示,大量的數(shù)據(jù)被數(shù)據(jù)中心收集并捕獲后,并不經(jīng)常被訪問,稱之為冷數(shù)據(jù),約占全球數(shù)據(jù)的90%;而剩余的10%的數(shù)據(jù)被收集并捕獲后,會經(jīng)常性地被訪問,稱之為熱數(shù)據(jù).顯然,將全部的數(shù)據(jù)都存儲在高性能、低延遲的存儲設(shè)備是不合理的,成本是極為昂貴的.因此,將SSD和HDD以合理的方式進(jìn)行組合,通過構(gòu)建混合存儲系統(tǒng)有可能帶來性能的大幅提升,同時保障成本可控.
目前,基于SSD和HDD混合存儲的異構(gòu)數(shù)據(jù)中心在學(xué)術(shù)界得到廣泛研究,其從組織結(jié)構(gòu)上分為2類:1)SSD作為HDD的緩存[14-16];2)SSD作為HDD的同層持久化存儲[17-18].在SSD作為HDD的緩存組織結(jié)構(gòu)中,SSD負(fù)責(zé)存放HDD少量數(shù)據(jù)的拷貝,所有的數(shù)據(jù)請求優(yōu)先查找SSD,如果請求的數(shù)據(jù)在SSD中就直接由SSD服務(wù),否則從HDD上拷貝相應(yīng)的數(shù)據(jù)到SSD中.這種分層結(jié)構(gòu),通過部署高命中率的數(shù)據(jù)映射機(jī)制,可以有效地提升存儲系統(tǒng)的I/O性能.在另一種結(jié)構(gòu)中,SSD作為HDD的同層持久化存儲,用戶或系統(tǒng)可以根據(jù)數(shù)據(jù)的冷熱條件將不同類別的數(shù)據(jù)按需持久化到SSD或HDD,利用SSD高速讀、寫的特征來提升熱數(shù)據(jù)的訪問效率,同時,利用HDD大容量的特性來提升數(shù)據(jù)的存儲效率,從而提升系統(tǒng)的整體性能.本文基于該結(jié)構(gòu)展開面向固態(tài)硬盤的Spark數(shù)據(jù)持久化方法的研究.在工業(yè)界,基于SSD和HDD混合存儲的異構(gòu)數(shù)據(jù)中心已經(jīng)得到了普遍的應(yīng)用.如Google、Facebook、百度以及阿里云等國內(nèi)外大型互聯(lián)網(wǎng)公司都已經(jīng)將SSD引入數(shù)據(jù)中心,并結(jié)合自身業(yè)務(wù)需求,合理地構(gòu)建了基于SSD和HDD混合存儲的異構(gòu)數(shù)據(jù)中心.如圖1所示,三星公司的研究報告指出,基于SSD和HDD的混合存儲系統(tǒng)可以大幅度地降低數(shù)據(jù)中心能耗至原來的1/7,同時將數(shù)據(jù)中心性能提升2倍[19].
Fig. 1 Performance evaluation between traditional and heterogeneous data centers[19]圖1 傳統(tǒng)與存儲異構(gòu)數(shù)據(jù)中心性能評估[19]
1.2 混合存儲系統(tǒng)中的Spark數(shù)據(jù)持久化問題
Spark的功能涵蓋了大數(shù)據(jù)計算的各個分支領(lǐng)域,如SQL類處理、實(shí)時流數(shù)據(jù)處理、機(jī)器學(xué)習(xí)和圖計算等復(fù)雜計算任務(wù).Spark廣泛的應(yīng)用范圍、簡潔易用的API,使得Spark已經(jīng)成為越來越受歡迎的大數(shù)據(jù)計算平臺之一.Spark最重要的一項功能是持久化RDD分區(qū)數(shù)據(jù)到內(nèi)存或硬盤,被持久化的分區(qū)數(shù)據(jù)可被其他迭代任務(wù)直接讀取,避免了重復(fù)計算.
在混合存儲系統(tǒng)中,根據(jù)數(shù)據(jù)的冷熱條件將不同類別的數(shù)據(jù)按需持久化到SSD或HDD,可有效提升數(shù)據(jù)的訪問和存儲效率.具體到Spark應(yīng)用中,不同RDD的重復(fù)利用率往往不同,換言之,不同RDD的冷熱度存在明顯差異.因此,在僅考慮存儲層的持久化問題時,如將高熱度的RDD分區(qū)數(shù)據(jù)完全持久化到SSD,將熱度相對較高或基于其他原因的關(guān)鍵RDD分區(qū)數(shù)據(jù)持久化到HDD,充分發(fā)揮混合存儲的特性,可有效加速大數(shù)據(jù)的計算速度.然而,Spark所提供的持久化語義對存儲介質(zhì)不具備感知能力,無法實(shí)現(xiàn)RDD分區(qū)數(shù)據(jù)的按需持久化.
針對該問題,做3組實(shí)驗(yàn)進(jìn)行驗(yàn)證:將原生Spark2.0部署到僅配置一塊HDD、僅配置一塊SSD以及同時配置一塊HDD和一塊SSD三種服務(wù)器平臺上,同時在Spark配置文件中,每一塊存儲設(shè)備配置一個臨時文件目錄.圖2所示為我們設(shè)計的MicroBench的RDD轉(zhuǎn)換關(guān)系,其中RDD_a,RDD_b和RDD_e的依賴度比較高,所以我們對這3個RDD做persist(DISK_ONLY)持久化.以RDD的分區(qū)為單位,分別統(tǒng)計3種情況下被持久化的數(shù)據(jù)分布情況.
Fig. 2 Transformation of RDD in MicroBench圖2 MicroBench的RDD轉(zhuǎn)換關(guān)系
統(tǒng)計實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),RDD_a,RDD_b和RDD_e全部被劃分為28個分區(qū).第1組實(shí)驗(yàn)中,3個RDD的分區(qū)數(shù)據(jù)全部被持久化到HDD;第2組實(shí)驗(yàn)中,3個RDD的分區(qū)數(shù)據(jù)全部被持久化到SSD;第3組實(shí)驗(yàn)中,每個RDD的14個分區(qū)被持久化到SSD,另一半被持久化到HDD.
統(tǒng)計結(jié)果表明,被持久化的RDD分區(qū)數(shù)據(jù)的分布和各實(shí)驗(yàn)中臨時文件目錄的配置存在一定關(guān)系,即原生Spark僅按照臨時文件目錄個數(shù)比例來確認(rèn)持久化數(shù)據(jù)的存儲位置.而在SSD和HDD混合存儲系統(tǒng)中,由于RDD_e的依賴度較高,希望將RDD_e完全持久化到SSD而RDD_a和RDD_b持久化到HDD,以此提升Spark數(shù)據(jù)處理效率是無法實(shí)現(xiàn)的.因此,原生Spark所提供的持久化語義靈活性較差,程序員無法根據(jù)Spark應(yīng)用數(shù)據(jù)的特征,顯式地依據(jù)RDD的冷熱特性實(shí)現(xiàn)按需持久化.有鑒于此,本文將進(jìn)一步探索面向SSD的數(shù)據(jù)持久化方法.
原生Spark持久化框架如圖3所示.其中,臨時文件目錄由用戶通過配置文件配置,且可以同時配置多個.臨時文件目錄的選擇決定了數(shù)據(jù)持久化地址,具體一個RDD的某一分區(qū)數(shù)據(jù)持久化地址的選擇是由Utils模塊的nonNegativeHash方法完成,該函數(shù)的設(shè)計原理是保持每一個目錄以相同的概率被選取.如上文所做的第3組實(shí)驗(yàn)中,當(dāng)配置了2個臨時文件目錄時,每個目錄都有50%被使用的概率.
Fig. 3 Persistence framework of native Spark圖3 原生Spark持久化框架
結(jié)合圖3所示Spark數(shù)據(jù)持久化框架可知,Spark對SSD的存在無感知能力的根本原因可歸納為3點(diǎn):
1) Spark配置文件采用單一參數(shù)保存多個臨時文件目錄,將指向SSD和HDD的目錄進(jìn)行混合管理;
2) nonNegativeHash方法未有效地區(qū)分不同臨時文件目錄所在存儲介質(zhì)數(shù)據(jù)訪問性能的差異,等概率的選擇目錄;
3) 對不同的存儲介質(zhì),統(tǒng)一使用DISK_ONLY為上層應(yīng)用提供持久化接口,而此接口通過StorageLevel反饋給用戶.
第2節(jié)將結(jié)合上述原因,提出在混合存儲系統(tǒng)中,面向SSD的顯式數(shù)據(jù)持久化方案,并以編程接口的方式提供用戶根據(jù)數(shù)據(jù)特征按需選擇持久化介質(zhì).
基于1.2節(jié)分析,研究Spark如何正確地感知混合存儲系統(tǒng)底層存儲設(shè)備,提供更為靈活的持久化API.首先,將底層存儲設(shè)備的差異暴露給用戶,打破DISK_ONLY的屏蔽作用,并向用戶提供更為精確的持久化API,實(shí)現(xiàn)Spark應(yīng)用程序的按需持久化,具體實(shí)現(xiàn)如下.
如圖4所示,Spark持久化架構(gòu)的具體優(yōu)化方案如下:
Fig. 4 Persistence framework of optimized Spark圖4 優(yōu)化版Spark持久化框架
1) 增加“SSD”和“HDD”臨時文件目錄管理變量,將臨時文件目錄的混合管理方式改為由“SSD”和“HDD”分別管理指向SSD和HDD的臨時文件目錄;
2) 增加設(shè)備適配器DeviceAdapter模塊,接收用戶設(shè)置的數(shù)據(jù)持久化級別,同時讀取用戶配置的臨時文件目錄,實(shí)現(xiàn)持久化級別參數(shù)到SSD或HDD的精確映射;
3) 增加SSD_ONLY和HDD_ONLY兩個持久化級別,將混合存儲系統(tǒng)特征暴露給用戶.同時,擴(kuò)展StorageLevel的作用域,如圖3所示,StorageLevel僅作用于BlockManager,為用戶和BlockManager提供數(shù)據(jù)持久化級別.我們將StorageLevel作用域進(jìn)一步延伸至DeviceAdapter模塊.
其中,DeviceAdapter的算法設(shè)計如下所述.
輸入:數(shù)據(jù)持久化級別StorageLevel、用戶標(biāo)記的級別storageLevel、臨時文件目錄SSDLocation和HDDLocation;
輸出:數(shù)據(jù)持久化物理地址address.
procedure DeviceAdapter
callBlockManager.getFile;
Begin
switch(storageLevel)
address=SSDLocation;
address=HDDLocation;
End
End procedure.
在Spark2.0版本基礎(chǔ)上,依據(jù)第2節(jié)對Spark框架做的優(yōu)化,對Spark數(shù)據(jù)持久化功能模塊做了對應(yīng)的修改,向用戶提供了新的持久化API(SSD_ONLY和HDD_ONLY),并進(jìn)行了重新編譯和系統(tǒng)地部署.本節(jié)分別基于如圖2所示的MicroBench和開源的SparkBench[20](其中的機(jī)器學(xué)習(xí)和圖計算2類負(fù)載),針對原生Spark2.0和經(jīng)本方案優(yōu)化后的Spark進(jìn)行性能評估實(shí)驗(yàn),并對實(shí)驗(yàn)結(jié)果做充分地分析.
這里需要對SparkBench進(jìn)行如下修改:將源代碼中的cache()方法全部替換成persist()方法,并且對于機(jī)器學(xué)習(xí)類負(fù)載將初始RDD數(shù)據(jù)集按照隨機(jī)比例進(jìn)行分割,并且依據(jù)此比例將數(shù)據(jù)持久化到不同的存儲介質(zhì)中;而對于圖計算負(fù)載,則是針對頂點(diǎn)和邊訪問特征的不同選擇持久化介質(zhì).介質(zhì)的選擇是通過調(diào)用persist(SSD_ONLY)或persist(DISK_ONLY)接口來實(shí)現(xiàn)的.
實(shí)驗(yàn)環(huán)境如表1~3所示,其中表1說明了Spark集群的搭建和服務(wù)器配置信息,表2說明了SSD-HDD混合存儲系統(tǒng)的配置信息,表3說明了服務(wù)器上的相關(guān)軟件版本及安裝信息.
Table 1 Spark Cluster Configuration表1 Spark集群及服務(wù)器配置信息
Table 2 SSD-HDD Heterogeneous Storage Configuration表2 SSD-HDD混合存儲系統(tǒng)配置
Table 3 Related Software Information表3 相關(guān)軟件信息
我們分別進(jìn)行MicroBench和SparkBench實(shí)驗(yàn),驗(yàn)證優(yōu)化后的Spark可以實(shí)現(xiàn)RDD分區(qū)數(shù)據(jù)的SSD或HDD精確持久化,并在此基礎(chǔ)上通過不同的持久化方案可以有效地提升Spark性能.這里做如下說明,面向固態(tài)硬盤的Spark數(shù)據(jù)持久化方法設(shè)計,旨在充分利用混合存儲系統(tǒng)的大容量、高性能的特性,以提升Spark大數(shù)據(jù)計算效率.具體地,我們的目標(biāo)是在最小化SSD的使用量的前提下,最大限度地提升Spark大數(shù)據(jù)計算效率,以此減少SSD的擦除次數(shù),兼顧了實(shí)現(xiàn)綠色數(shù)據(jù)中心的目的.
3.1 MicroBench性能評估
本節(jié)通過MicroBench性能評估實(shí)驗(yàn),驗(yàn)證面向固態(tài)硬盤的Spark數(shù)據(jù)持久化方法設(shè)計的正確性和靈活性,即實(shí)現(xiàn)了面向固態(tài)硬盤的Spark數(shù)據(jù)持久化方法.按圖2所示設(shè)計方案,首先驗(yàn)證優(yōu)化后Spark可以做到RDD分區(qū)數(shù)據(jù)按需持久化.對RDD_e調(diào)用persist(SSD_ONLY)做持久化,而對RDD_a和RDD_b則調(diào)用persist(HDD_ONLY)做持久化,統(tǒng)計結(jié)果如表4所示.統(tǒng)計結(jié)果顯示,優(yōu)化后Spark的持久化結(jié)果完全按照程序員所調(diào)用的持久化API對分區(qū)數(shù)據(jù)進(jìn)行存儲,實(shí)現(xiàn)了Spark應(yīng)用程序中間數(shù)據(jù)面向固態(tài)硬盤的持久化,進(jìn)而提升了Spark持久化API的靈活性.
Table 4 Partitions Distribution of Different Schemes Using Optimized Spark
下面分別對優(yōu)化后的Spark和原生Spark,變化不同RDD的持久化介質(zhì)進(jìn)行更加深入的實(shí)驗(yàn)分析.
Fig. 5 Performance evaluation of each RDD圖5 針對每一個RDD的持久化方案比較
圖5顯示的結(jié)果為:依次分別針對每一個RDD調(diào)用2種不同的持久化方法,圖5所示的MicroBench的執(zhí)行時間,其中persist(DISK_ONLY)和+persist(SSD_ONLY)分別表示原生Spark和提供面向SSD的持久化接口的優(yōu)化Spark.根據(jù)結(jié)果可獲知,在支持混合存儲系統(tǒng)的平臺上,相比于默認(rèn)的按比例持久化方案,顯式調(diào)用面向SSD的接口進(jìn)行持久化可以獲得更好的性能提升,這是因?yàn)樵摻涌诳蓪DD的全部分區(qū)都存儲于SSD中,而不是原來的按比例在介質(zhì)間分配分區(qū).同時,性能提升的幅度也和RDD的訪問特征有著密切的關(guān)系.例如,根據(jù)圖2,RDD_e的依賴本來較多,但是由于它是利用filter操作生成的,使得其規(guī)模不大,因此即使不對其進(jìn)行持久化性能影響也并不大,這就是圖5中持久化RDD_e的性能收益并不顯著的原因.
圖6是從RDD的串并行關(guān)系和RDD的計算復(fù)雜度、RDD的熱度等多個角度考慮不同持久化方案的比較,探索將哪些RDD按需持久化到SSD或HDD可以最大限度地提升系統(tǒng)性能.綜合圖5和圖6,對RDD_(c,h)調(diào)用本文提供的接口做持久化性能提升得更加明顯,其原因在于這些RDD的計算更加復(fù)雜并且后續(xù)使用頻繁,將其全部分區(qū)都持久化到SSD可獲得更大的性能收益.實(shí)驗(yàn)結(jié)果表明,相對于原生Spark,本文所提持久化方案可以將性能平均提升2.7%,最大提升4.7%.
Fig. 6 Performance evaluation of schemes based on parallel and dependency圖6 基于并行和依賴關(guān)系的持久化方案比較
對已經(jīng)持久化到存儲系統(tǒng)層的RDD,再選擇持久化到SSD或HDD,能夠進(jìn)一步獲得的性能提升將與生成該RDD的計算復(fù)雜度以及該RDD后續(xù)被訪問的頻繁程度(熱度)有很大的關(guān)系,不妨將其稱之為依賴系數(shù)(RDD的依賴系數(shù)為該RDD的子RDD個數(shù)).由此,將高依賴系數(shù)的RDD分區(qū)數(shù)據(jù)持久化至SSD,相比于系統(tǒng)默認(rèn)的按分區(qū)比例的持久化方案將獲得更加明顯的性能提升.盡管MicroBench實(shí)驗(yàn)結(jié)果顯示,優(yōu)化后Spark性能提升幅度有限,但這是當(dāng)前使用的數(shù)據(jù)規(guī)模和應(yīng)用復(fù)雜度簡單所導(dǎo)致的,顯然可以構(gòu)造出效果更佳明顯的RDD訪問行為.
3.2 SparkBench性能評估
Spark作為目前流行的大數(shù)據(jù)計算框架,其十分擅長多次迭代計算任務(wù)(如機(jī)器學(xué)習(xí)、圖計算等).Spark應(yīng)用程序的迭代次數(shù)與RDD持久化性能提升具有密切聯(lián)系,顯然,對于迭代次數(shù)多的RDD,將其持久化到SSD對Spark性能提升的幫助更大.另外,數(shù)據(jù)規(guī)模是Spark讀、寫硬盤時間消耗的重要影響因素.本節(jié)我們基于SparkBench實(shí)現(xiàn)了若干機(jī)器學(xué)習(xí)和圖計算負(fù)載,從數(shù)據(jù)量和迭代計算角度比較原生Spark和優(yōu)化后Spark的性能.同時強(qiáng)調(diào)面向固態(tài)硬盤的Spark數(shù)據(jù)持久化方法的設(shè)計,旨在通過向Spark用戶提供顯示的面向固態(tài)硬盤的持久化接口,提升Spark數(shù)據(jù)持久化接口的靈活性和針對性,進(jìn)而使得程序員可以根據(jù)Spark應(yīng)用程序的數(shù)據(jù)特征,實(shí)現(xiàn)中間數(shù)據(jù)的按需持久化.結(jié)合SSD,HDD的各自特征與Spark應(yīng)用程序數(shù)據(jù)的冷熱特性,將依賴系數(shù)較高的RDD持久化到SSD,以提升中間數(shù)據(jù)重復(fù)利用的讀取效率,將依賴系數(shù)相對較低的RDD持久化到HDD,以減輕SSD因頻繁讀寫而引起擦除操作的壓力,同時擴(kuò)大了Spark應(yīng)用程序可利用的存儲空間.而具體RDD持久化接口的選擇則依賴于程序員對應(yīng)用程序的個人經(jīng)驗(yàn).如下為SparkBench性能評估實(shí)驗(yàn)結(jié)果的詳細(xì)分析.
圖7和圖8分別測試KMeans和Linear-Regre-ssion負(fù)載性能,通過改變數(shù)據(jù)規(guī)模評估原生Spark和優(yōu)化后Spark,實(shí)驗(yàn)結(jié)果顯示,系統(tǒng)性能平均提升19.72%,最大提升20.5%.同樣,針對機(jī)器學(xué)習(xí)算法,我們測試程序迭代次數(shù)對Spark性能的影響,圖9和圖10顯示結(jié)果為不同訓(xùn)練規(guī)模下,原生Spark和優(yōu)化后Spark的性能比較,優(yōu)化后Spark性能平均提升10.04%,最大提升13.95%.
Fig. 7 Performance evaluation of KMeans圖7 Kmeans性能評估
Fig. 8 Performance evaluation of LinearRegression圖8 LinearRegression性能評估
Fig. 9 Performance evaluation of DecisionTree圖9 DecisionTree性能評估
Fig. 10 Performance evaluation of LogististicRegression圖10 LogististicRegression性能評估
Spark GraphX是一個分布式圖處理框架,它是基于Spark平臺提供對圖計算和圖挖掘簡潔易用的而豐富的接口,極大地方便了對分布式圖處理的需求.圖11和圖12分別通過測試SparkBench的典型圖計算負(fù)載PageRank和ShortestPath進(jìn)行評估優(yōu)化后Spark性能的優(yōu)越性.隨著圖規(guī)模的不斷擴(kuò)大,圖的結(jié)構(gòu)不斷復(fù)雜化,即對Spark性能要求更高,實(shí)驗(yàn)結(jié)果表明,優(yōu)化后Spark性能平均提高11.79%,最大提高12.62%,且隨著圖的結(jié)構(gòu)越復(fù)雜,優(yōu)化后Spark的性能越顯著.
Fig. 11 Performance evaluation of PageRank圖11 PageRank性能評估
Fig. 12 Performance evaluation of ShortestPath圖12 ShortestPath性能評估
MicroBench和SparkBench性能評估結(jié)果說明,我們所提出并實(shí)現(xiàn)的按需持久化方案的性能明顯優(yōu)越于原生Spark,該方案實(shí)現(xiàn)了Spark用戶依據(jù)應(yīng)用程序特征,對RDD進(jìn)行按需持久化,進(jìn)一步提升了Spark大數(shù)據(jù)計算性能.經(jīng)過分析RDD的DAG圖可以給出一些使用新的編程接口的啟發(fā):對于自身計算復(fù)雜度較高并且后續(xù)使用比較頻繁的RDD,有針對性地將其持久化至SSD中,相比于Spark原有的處理方式將獲得更大的性能提升,當(dāng)然這需要用戶對所開發(fā)的應(yīng)用理解得更加深入,特別是不同RDD的訪問行為.
進(jìn)入“大數(shù)據(jù)”時代,大數(shù)據(jù)種類和數(shù)據(jù)量的激增以及其結(jié)構(gòu)的復(fù)雜化給數(shù)據(jù)分析帶來了巨大的挑戰(zhàn).如何快速、準(zhǔn)確地挖掘隱含在大數(shù)據(jù)內(nèi)部的高價值信息是目前研究的熱門問題,因此,人們研發(fā)出MapReduce,Spark等大數(shù)據(jù)計算框架.目前,國內(nèi)外關(guān)于Spark的研究工作層出不窮,較多國內(nèi)文獻(xiàn)利用Spark的高性能優(yōu)勢設(shè)計了出色的大數(shù)據(jù)分析算法[21].文獻(xiàn)[4]介紹了大數(shù)據(jù)挖掘的若干挑戰(zhàn)性問題,文獻(xiàn)[22]回顧了近年來有關(guān)大數(shù)據(jù)計算框架、存儲及數(shù)據(jù)分析等問題的發(fā)展.目前較為流行的大數(shù)據(jù)計算框架有Hadoop和Spark,其中Spark基于內(nèi)存計算且能夠持久化計算的中間結(jié)果,大幅提升了迭代計算任務(wù)的效率.MapReduce是目前已經(jīng)非常成熟的大數(shù)據(jù)并行計算框架,且得到了較為普遍的應(yīng)用.文獻(xiàn)[23-25]分別研究MapReduce應(yīng)用于快速大規(guī)模數(shù)據(jù)檢索、可擴(kuò)展的云數(shù)據(jù)匿名化方案和基于MapReduce模型實(shí)現(xiàn)了關(guān)鍵字感知的服務(wù)推薦系統(tǒng),有效地提升了互聯(lián)網(wǎng)大數(shù)據(jù)分析工作的效率.另外,文獻(xiàn)[26]提出并設(shè)計了Mammoth模型,該模型通過內(nèi)存調(diào)度算法實(shí)現(xiàn)內(nèi)存的全局管理,并設(shè)計啟發(fā)式算法來優(yōu)化執(zhí)行單元之間的資源分配,提高了MapReduce性能.
文獻(xiàn)[27-29]中,作者分別從不同的角度出發(fā)研究如何提升Spark性能.其中,文獻(xiàn)[28]提出自適應(yīng)調(diào)整策略,Spark在JVM的基礎(chǔ)上對內(nèi)存做了進(jìn)一步的管理,作者提出動態(tài)地調(diào)整Spark內(nèi)存分配方案,進(jìn)一步提升Spark數(shù)據(jù)處理效率.檢查點(diǎn)是Spark實(shí)現(xiàn)RDD容錯的一個重要概念,通過將某RDD設(shè)置為檢查點(diǎn)為快速恢復(fù)RDD提供了保障.文獻(xiàn)[29]提出了自動檢查點(diǎn)設(shè)置算法,以提升RDD的容錯性能、改進(jìn)Spark迭代計算任務(wù)的效率,從而實(shí)現(xiàn)提升Spark性能的目的.作者在文獻(xiàn)[27]中分析了Spark大數(shù)據(jù)處理過程中Shuffle的產(chǎn)生及其對Spark性能造成的影響,并介紹了基于排序的shuffle可以提升Spark性能并應(yīng)用到Spark1.1.0版本中.伴隨著人工智能產(chǎn)業(yè)的發(fā)展,機(jī)器學(xué)習(xí)成為當(dāng)今學(xué)術(shù)界和產(chǎn)業(yè)界共同的熱門話題,且基于機(jī)器學(xué)習(xí)的大數(shù)據(jù)分析技術(shù)得到快速發(fā)展.由于Spark是基于內(nèi)存的計算框架,且實(shí)現(xiàn)了計算中間結(jié)果的持久化功能,使得其在諸如機(jī)器學(xué)習(xí)、圖計算等多次迭代計算領(lǐng)域表現(xiàn)出色.作者在文獻(xiàn)[30]中介紹了Spark并行分布式機(jī)器學(xué)習(xí)庫,該庫基于數(shù)據(jù)和模型并行策略,實(shí)現(xiàn)對數(shù)據(jù)和模型存儲和相關(guān)操作.文獻(xiàn)[31]使用Spark更高效地利用大數(shù)據(jù)實(shí)現(xiàn)優(yōu)秀的推薦系統(tǒng)引擎.
目前,關(guān)于Spark性能提升研究集中于Spark內(nèi)存管理,通過調(diào)節(jié)JVM內(nèi)存利用率提升Spark性能.然而,內(nèi)存空間的不足限制了Spark通過內(nèi)存加速超大規(guī)模數(shù)據(jù)的計算,而持久化數(shù)據(jù)到硬盤打破了內(nèi)存容量不足對數(shù)據(jù)集規(guī)模的限制,使得Spark處理大數(shù)據(jù)游刃有余.本文首次基于混合存儲系統(tǒng)提出Spark性能優(yōu)化方案.通過優(yōu)化Spark的持久化框架,實(shí)現(xiàn)Spark數(shù)據(jù)的按需持久化.進(jìn)而,Spark可以根據(jù)程序特征,將高熱度RDD的分區(qū)數(shù)據(jù)持久化到SSD,利用存儲異構(gòu)數(shù)據(jù)中心的特征有效地提升Spark性能.
目前Spark無法精確持久化RDD分區(qū)數(shù)據(jù)到SSD或HDD,無法根據(jù)應(yīng)用程序特征進(jìn)行按需持久化,導(dǎo)致Spark無法充分利用混合存儲系統(tǒng)的彈性、高性能的優(yōu)勢以提升自身性能.針對該問題,本文探索了Spark數(shù)據(jù)持久化原理,進(jìn)而針對混合存儲系統(tǒng)對Spark的持久化框架進(jìn)行優(yōu)化,并向用戶提供了SSD_ONLY和HDD_ONLY持久化API,實(shí)現(xiàn)了Spark的顯示SSD和HDD持久化功能.本文通過分析HDD和SSD讀取性能并結(jié)合RDD讀取特征,理論論證了將RDD分區(qū)數(shù)據(jù)持久化到SSD或HDD以及混合存儲系統(tǒng)的性能差異.然后進(jìn)一步通過基準(zhǔn)性能評估實(shí)驗(yàn)驗(yàn)證了優(yōu)化后Spark對應(yīng)用程序性能提升明顯優(yōu)于原生Spark.未來將進(jìn)一步探索面向異構(gòu)存儲系統(tǒng)的隱式持久化方案,即數(shù)據(jù)持久化介質(zhì)的確定由Spark框架自動完成,對用戶是透明的.
[1]Labrinidis A, Jagadish H V. Challenges and opportunities with big data[J]. Proceedings of the VLDB Endowment, 2012, 5(12): 2032-2033
[2]Howe D, Costanzo M, Fey P, et al. Big data: The future of biocuration[J]. Nature, 2008, 455(7209): 47-50
[3]Kriegel H P, Borgwardt K M, Kr?ger P, et al. Future trends in data mining[J]. Data Mining and Knowledge Discovery, 2007, 15(1): 87-97
[4]Wu Xindong, Zhu Xingquan, Wu Gongqing, et al. Data mining with big data[J]. IEEE Trans on Knowledge and Data Engineering, 2014, 26(1): 97-107
[5]Zaharia M, Chowdhury M, Franklin M J, et al. Spark: Cluster computing with working sets[C/OL] //Proc of the 2nd USENIX Conf on Hot Topics in Cloud Computing (HotCloud). Berkeley, CA: USENIX Association, 2012[2017-01-18].http://static.usenix.org/legacy/events/hotcloud10/tech/full_papers/Zaharia.pdf
[6]Zaharia M, Chowdhury M, Das T, et al. Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing[C] //Proc of the 9th USENIX Conf on Networked Systems Design and Implementation. Berkeley, CA: USENIX Association, 2012: 15-28
[7]Jiang Zhipeng, Chen Haopeng, Zhou Huan, et al. An elastic data persisting solution with high performance for Spark[C] //Proc of the 2015 Int Conf on Smart City/SocialCom/SustainCom. Piscataway, NJ: IEEE, 2015: 656-661
[8]Rizvi S S, Chung T S. Flash SSD vs HDD: High performance oriented modern embedded and multimedia storage systems[C] //Proc of the 2nd Int Conf on Computer Engineering and Technology (ICCET). Piscataway, NJ: IEEE, 2010: 297-299
[9]Narayanan I, Wang Di, Jeon M, et al. SSD failures in datacenters: What, when and why?[C] //Proc of the 9th ACM SIGMETRICS Int Conf. New York: ACM, 2016: 407-408
[10]Meza J, Wu Qiang, Kumar S, et al. A large-scale study of flash memory failures in the field[C] //Proc of ACM Sigmetrics Performance Evaluation Review. New York: ACM, 2015: 177-190
[11]Ouyang Jian, Lin Shiding, Hou Zhenyu, et al. Active SSD design for energy-efficiency improvement of Web-scale data analysis[C] //Proc of the 2013 Int Symp on Low Power Electronics and Design. Piscataway, NJ: IEEE, 2013: 286-291
[12]Schroeder B, Lagisetty R, Merchant A. Flash reliability in production: The expected and the unexpected[C] //Proc of the 14th USENIX Conf on File and Storage Technologies (FAST’16). Berkeley, CA: USENIX Association, 2016: 67-80
[13]Gantz J, Reinsel D. Extracting value from chaos, IDC IVIEW[R/OL]. Hopkinton, MA: EMC Corporation, 2011[2017-01-18].https://www.emc.com/collateral/analyst-reports/idc-extracting-value-from-chaos-ar.pdf
[14]Canim M, Mihaila G A, Bhattacharjee B, et al. SSD bufferpool extensions for database systems[J]. Proceedings of the VLDB Endowment, 2010, 3(1/2): 1435-1446
[15]Kang W H, Lee S W, Moon B. Flash-based extended cache for higher throughput and faster recovery[J]. Proceedings of the VLDB Endowment, 2012, 5(11): 1615-1626
[16]Ni Yuanjiang, Jiang Ji, Jiang Dejun, et al. S-RAC: SSD friendly caching for data center workloads[C] //Proc of the 9th ACM Int on Systems and Storage Conf. New York: ACM, 2016: 8:1-8:12
[17]Awasthi A, Nandini A, Bhattacharya A, et al. Hybrid HBase: Leveraging flash SSDs to improve cost per throughput of HBase[C] //Proc of the 18th Int Conf on Management of Data. Mumbai, India: Computer Society of India, 2012: 68-79
[18]Luo Tian, Lee R, Mesnier M, et al. hStorage-DB: Heterogeneity-aware data management to exploit the full capability of hybrid storage systems[J]. Proceedings of the VLDB Endowment, 2012, 5(10): 1076-1087
[19]SAMSUNG. SAMSUNG GREEN SSD[R/OL]. Austin, Texas: SAMSUNG SEMICONDUCTOR, INC, 2010 [2017-01-18].http://www.samsung.com/us/business/oem-solutions/pdfs/SSI-green_ssd_v4.pdf
[20]Li Min, Tan Jian, Wang Yandong, et al. Sparkbench: A comprehensive benchmarking suite for in memory data analytic platform Spark[C] //Proc of the 12th ACM Int Conf on Computing Frontiers. New York: ACM, 2015: No.53
[21]Zhu Jizhao, Jia Yantao, Xu Jun, et al. SparkCRF: A parallel implementation of CRFs algorithm with Spark[J]. Journal of Computer Research and Development, 2016, 53(8): 1819-1828 (in Chinese)
(朱繼召, 賈巖濤, 徐君, 等. SparkCRF: 一種基于Spark的并行CRFs算法實(shí)現(xiàn)[J]. 計算機(jī)研究與發(fā)展, 2016, 53(8): 1819-1828)
[22]Bilal M, Oyedele L O, Qadir J, et al. Big data in the construction industry: A review of present status, opportunities, and future trends[J]. Advanced Engineering Informatics, 2016, 30(3): 500-521
[23]Doulkeridis C, N?rv?g K. A survey of large-scale analytical query processing in MapReduce[J]. The VLDB Journal, 2014, 23(3): 355-380
[24]Meng Shunmei, Dou Wanchun, Zhang Xuyun, et al. KASR: A keyword-aware service recommendation method on MapReduce for big data applications[J]. IEEE Trans on Parallel and Distributed Systems, 2014, 25(12): 3221-3231
[25]Zhang Xuyun, Yang L T, Liu Chang, et al. A scalable two-phase top-down specialization approach for data anonymization using MapReduce on cloud[J]. IEEE Trans on Parallel and Distributed Systems, 2014, 25(2): 363-373
[26]Shi Xuanhua, Chen Ming, He Ligang, et al. Mammoth: Gearing Hadoop towards memory-intensive MapReduce applications[J]. IEEE Trans on Parallel and Distributed Systems, 2015, 26(8): 2300-2315
[27]Rana N, Deshmukh S. Performance improvement in Apache Spark through shuffling[J]. International Journal of Science, Engineering and Technology Research, 2015, 4(3): 1636-1638
[28]Zhao Yao, Hu Fei, Chen Haopeng. An adaptive tuning strategy on Spark based on in-memory computation characteristics[C] //Proc of the 18th IEEE Int Conf on Advanced Communication Technology (ICACT). Piscataway, NJ: IEEE, 2016: 484-488
[29]Zhu Wei, Chen Haopeng, Hu Fei. ASC: Improving Spark driver performance with automatic Spark checkpoint[C] //Proc of the 18th IEEE Int Conf on Advanced Communication Technology (ICACT). Piscataway, NJ: IEEE, 2016: 607-611
[30]Meng Xiangrui, Bradley J, Yavuz B, et al. Mllib: Machine learning in Apache Spark[J]. Journal of Machine Learning Research, 2016, 17(1): 1235-1241
[31]Kulkarni S. A recommendation engine using Apache Spark[D]. San Jose, CA: The Faculty of the Department of Computer Science San Jose State University, 2015
Lu Kezhong, born in 1982. PhD, professor at Shenzhen University. His main research interests include big data theory, parallel and distributed computing, wireless sensor networks, design and analysis of algorithms and computational geometry.
Zhu Jinbin, born in 1989. Master candidate. His main research interests include computer system architecture and design and analysis of algorithms.
Li Zhengmin, born in 1984. PhD candidate. His main research interests include cloud computing, network and network virtualization.
Sui Xiufeng, born in 1982. PhD, associate professor of the Institute of Computing Technology, Chinese Academy of Sciences. His main research interests include high performance computer archi-tectures, system performance modeling and evaluation, and cloud computing (suixiufeng@ict.ac.cn).
Design of RDD Persistence Method in Spark for SSDs
Lu Kezhong1, Zhu Jinbin2,4, Li Zhengmin3, and Sui Xiufeng4,5
1(CollegeofComputerScience&SoftwareEngineering,ShenzhenUniversity,Shenzhen,Guangdong518060)2(SchoolofComputerScienceandTechnology,GuangdongUniversityofTechnology,Guangzhou511400)3(NationalComputerNetworkEmergencyResponseTechnicalTeamCoordinationCenterofChina,Beijing100029)4(StateKeyLaboratoryofComputerArchitecture(InstituteofComputingTechnology,ChineseAcademyofSciences),Beijing100190)5(StrategicStudiesCentre,ChineseAcademyofEngineering,Beijing100088)
SSD (solid-state drive) and HDD (hard disk drive) hybrid storage system has been widely used in big data computing datacenters. The workloads should be able to persist data of different characteristics to SSD or HDD on demand to improve the overall performance of the system. Spark is an industry-wide efficient data computing framework, especially for the applications with multiple iterations. The reason is that Spark can persist data in memory or hard disk, and persisting data to the hard disk can break the insufficient memory limits on the size of the data set. However, the current Spark implementation does not specifically provide an explicit SSD-oriented persistence interface, although data can be distributed proportionally to different storage mediums based on configuration information, and the user can not specify RDD’s persistence locations according to the data characteristics, and thus the lack of relevance and flexibility. This has not only become a bottleneck to further enhance the performance of Spark, but also seriously affected the played performance of hybrid storage system. This paper presents the data persistence strategy for SSD for the first time as we know. We explore the data persistence principle in Spark, and optimize the architecture based on hybrid storage system. Finally, users can specify RDD’s storage mediums explicitly and flexibly leveraging the persistence API we provided. Experimental results based on SparkBench shows that the performance can be improved by an average of 14.02%.
big data; hybrid storage; solid-state drive (SSD); Spark; persistence
2017-02-27;
2017-04-14
國家“八六三”高技術(shù)研究發(fā)展計劃基金項目(2015AA015305);廣東省自然科學(xué)基金項目(2014A030313553);廣東省省部產(chǎn)學(xué)研項目(2013B090500055);深圳市基礎(chǔ)研究學(xué)科布局項目(JCYJ20150529164656096) This work was supported by the National High Research and Development Program of China (863 Program) (2015AA015305), the Guangdong Natural Science Foundation of China (2014A030313553), the Guangdong Science and Technology Foundation (2013B090500055), and the Shenzhen Science and Technology Foundation (JCYJ20150529164656096).
李正民(lzm@cert.org.cn)
TP303