本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種基于ssd和hdd的混合存儲系統(tǒng)的spark架構(gòu)優(yōu)化方法。
背景技術(shù):
在現(xiàn)有的大數(shù)據(jù)時代,面對海量數(shù)據(jù),如何在有效的時間內(nèi)管理、分析并提取有價值的信息,成為人們亟需解決的問題。然而,無論是規(guī)模、種類還是結(jié)構(gòu),大數(shù)據(jù)對人們駕馭數(shù)據(jù)的能力提出了巨大挑戰(zhàn)。
spark是目前高效且在產(chǎn)業(yè)界被廣泛使用的大數(shù)據(jù)計算架構(gòu),是通用、快速的大規(guī)模數(shù)據(jù)處理引擎。首先,spark提供了統(tǒng)一的解決方案,可以用于交互式查詢、實時流處理、機器學(xué)習(xí)等復(fù)雜任務(wù);其次,spark通過彈性分布式數(shù)據(jù)集(resilientdistributeddataset,簡稱rdd)劃分階段和任務(wù),通過高效的有向無環(huán)圖(directedacyclicgraph,簡稱dag)執(zhí)行引擎優(yōu)化子任務(wù)執(zhí)行順序,并通過基于內(nèi)存的計算大幅提升數(shù)據(jù)處理效率;第三,spark數(shù)據(jù)管理依賴于hdfs、hive等多種數(shù)據(jù)源,并且集群模式下的spark實現(xiàn)了橫向擴展,支持大規(guī)模數(shù)據(jù)的處理。rdd是spark區(qū)別于其他大數(shù)據(jù)計算架構(gòu)最重要的概念,它是一種具有高度容錯機制的、只讀的分布式數(shù)據(jù)集。spark應(yīng)用程序中,每一個rdd會被分成多個分區(qū),且spark以分區(qū)為單位對rdd進(jìn)行各種操作。持久化(persist)rdd分區(qū)數(shù)據(jù)到內(nèi)存或硬盤實現(xiàn)了對計算任務(wù)中間結(jié)果的緩存,以供后續(xù)迭代任務(wù)直接讀取中間結(jié)果,避免了重復(fù)計算,大幅提升了數(shù)據(jù)處理效率。另外,持久化數(shù)據(jù)到硬盤,打破了內(nèi)存容量不足對數(shù)據(jù)集規(guī)模的限制,使得spark處理大數(shù)據(jù)游刃有余。
但是目前的spark架構(gòu)無法感知混合存儲系統(tǒng)中底層存儲設(shè)備的組合結(jié)構(gòu),另外對ssd的存在無感知能力。
技術(shù)實現(xiàn)要素:
本發(fā)明旨在解決現(xiàn)有技術(shù)中spark架構(gòu)無法感知混合存儲系統(tǒng)中底層存儲設(shè)備的組合結(jié)構(gòu)的技術(shù)問題,提供一種基于ssd和hdd的混合存儲系統(tǒng)的spark架構(gòu)優(yōu)化方法。
本發(fā)明的實施例提供一種基于ssd和hdd的混合存儲系統(tǒng)的spark架構(gòu)優(yōu)化方法,所述方法包括:
設(shè)置ssd目錄管理變量和hdd目錄管理變量;
設(shè)置設(shè)備適配器以實現(xiàn)數(shù)據(jù)持久化級別和對應(yīng)臨時文件目錄之間的匹配;
設(shè)置兩個持久化級別ssd_only和和hdd_only以生成兩個持久化接口;
擴大兩個持久化級別的作用域的范圍至所述設(shè)備適配器。
本發(fā)明還提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,其特征在于,該程序被處理器執(zhí)行時實現(xiàn)上述方法的步驟。
本發(fā)明的技術(shù)方案與現(xiàn)有技術(shù)相比,有益效果在于:通過設(shè)置兩個持久化級別ssd_only和和hdd_only以生成兩個持久化接口,使得向用戶提供了ssd_only和hdd_only的兩個持久化api,使得底層存儲設(shè)備的組合結(jié)構(gòu)構(gòu)被展示出來,從而感知底層存儲設(shè)備的組合結(jié)構(gòu)。
附圖說明
圖1是本發(fā)明分布式計算系統(tǒng)一種實施例的結(jié)構(gòu)示意圖。
圖2是本發(fā)明分布式計算系統(tǒng)的數(shù)據(jù)處理方法一種實施例的流程圖。
圖3是本發(fā)明spark持久化架構(gòu)一種實施例的結(jié)構(gòu)示意圖。
圖4是本發(fā)明優(yōu)化后的spark持久化架構(gòu)一種實施例的結(jié)構(gòu)示意圖。
圖5是本發(fā)明一種基于ssd和hdd的混合存儲系統(tǒng)的spark架構(gòu)優(yōu)化方法一種實施例的流程圖。
圖6是本發(fā)明基于ssd和hdd混合存儲系統(tǒng)的rdd持久化方法一種實施例的流程圖。
具體實施方式
下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
具體的,固態(tài)硬盤(solid-statedrive,簡稱ssd)的出現(xiàn)為提升存儲系統(tǒng)性能帶來了新的機遇,ssd具有低功耗、低延遲、體積小等優(yōu)點。與傳統(tǒng)企業(yè)級硬盤(harddiskdrive,簡稱hdd)通過移動機械臂來尋址方式不同,ssd完全構(gòu)建于半導(dǎo)體芯片上,因此具有隨機訪問性能。然而,由于ssd容量成本過高、壽命有限等不足,完全使用ssd替換hdd會大幅提升產(chǎn)業(yè)成本。為了合理利用ssd的高性能和hdd的低廉價格等優(yōu)勢,基于ssd和hdd混合存儲的異構(gòu)數(shù)據(jù)中心得到人們普遍研究和應(yīng)用。
本發(fā)明一個實施例的分布式計算系統(tǒng),如圖1所示,包括spark平臺模塊1和混合存儲模塊2,所述混合存儲模塊2包括ssd單元21和與hdd單元22,所述spark平臺模塊1分別與所述ssd單元21和hdd單元22連接;
所述spark平臺模塊1利用大數(shù)據(jù)處理架構(gòu)spark作為計算引擎,將處理得到的數(shù)據(jù)送至所述ssd單元21或者所述hdd單元22進(jìn)行存儲,所述spark平臺模塊1還用于接收查詢指令,并從所述ssd單元21或者所述hdd單元22取與查詢指令對應(yīng)的數(shù)據(jù)后輸出。
通過所述spark平臺模塊分別與所述ssd單元和hdd單元連接,以使處理得到的數(shù)據(jù)送至所述ssd單元或者所述hdd單元進(jìn)行存儲,可以實現(xiàn)數(shù)據(jù)的精確映射和保存。
在具體實施中,所述spark平臺模塊1包括與所述ssd單元21對應(yīng)的第一api(applicationprogramminginterface,應(yīng)用程序編程接口)和與所述hdd單元對應(yīng)的第二api,所述spark平臺模塊1通過第一api與所述ssd單元21連接,所述spark平臺模塊1通過第二api與所述hdd單元22連接,以進(jìn)行數(shù)據(jù)傳輸。所述spark平臺模塊1通過第一api和第二api,可以將混合存儲系統(tǒng)的結(jié)構(gòu)特征展示給用戶。而存儲介質(zhì)的選擇是通過調(diào)用第一api或第二api接口來實現(xiàn),即選擇在所述ssd單元21或是所述hdd單元22中進(jìn)行存儲通過調(diào)用第一api或第二api接口來實現(xiàn)。
在具體實施中,所述ssd單元21作和所述hdd單元22為同層持久化存儲單元。所述處理得到的數(shù)據(jù)具體包括rdd分區(qū)數(shù)據(jù)。所述spark平臺模塊還用于根據(jù)預(yù)設(shè)的分區(qū)比例值將rdd分區(qū)數(shù)據(jù)持久化到所述ssd單元或所述hdd單元中。
在具體實施中,所述spark平臺模塊1還用于根據(jù)rdd分區(qū)數(shù)據(jù)的熱度將rdd分區(qū)數(shù)據(jù)持久化到所述ssd單元或所述hdd單元中。由于ssd的i/o帶寬和降低訪問延遲可以被有效地提升。而hdd仍然能為那些對存儲性能要求較低的數(shù)據(jù)提供大量的存儲效率。另外大量的數(shù)據(jù)被數(shù)據(jù)中心收集并捕獲后,并不經(jīng)常被訪問,稱之為冷數(shù)據(jù),約占全球數(shù)據(jù)的90%。而剩余的10%的數(shù)據(jù)被收集并捕獲后,會經(jīng)常性的被訪問,稱之為熱數(shù)據(jù)。顯然,將全部的數(shù)據(jù)都存儲在高性能、低延遲的存儲設(shè)備是不合理的,成本是極為昂貴的。因此,根據(jù)rdd分區(qū)數(shù)據(jù)的熱度,實現(xiàn)對ssd單元21和hdd單元22以合理的方式進(jìn)行組合,通過構(gòu)建混合存儲系統(tǒng)可以帶來性能的大幅提升,同時保障成本可控。
在具體實施中,所述分布式計算系統(tǒng)還包括連接所述混合存儲模塊的容量監(jiān)控模塊,所述容量監(jiān)控模塊用于對所述混合存儲模塊的剩余容量進(jìn)行監(jiān)控,并在剩余容量小于預(yù)設(shè)閾值時輸出報警信號。也就是說,分布式計算系統(tǒng)還可包括連接混合存儲模塊2的容量監(jiān)控模塊,容量監(jiān)控模塊用于對混合存儲模塊2的剩余容量進(jìn)行監(jiān)控,并在剩余容量小于預(yù)設(shè)閾值時輸出報警信息。預(yù)設(shè)閾值的具體取值可根據(jù)混合存儲模塊2的容量大小決定,輸出報警信息可以是控制揚聲器發(fā)聲或控制報警燈閃爍等。在混合存儲模塊2的剩余容量過低時進(jìn)行報警,提醒工作人員及時對存儲數(shù)據(jù)進(jìn)行轉(zhuǎn)移或更換存儲硬盤等,以提高數(shù)據(jù)存儲可靠性。
本發(fā)明還提供一種實施例的分布式計算系統(tǒng)的數(shù)據(jù)處理方法,如圖2所示,所述數(shù)據(jù)處理方法包括以下步驟:
步驟s21,所述spark平臺模塊通過大數(shù)據(jù)處理架構(gòu)spark作為計算引擎,將處理得到的數(shù)據(jù)送至所述ssd單元或者所述hdd單元進(jìn)行存儲;
步驟s22,所述spark平臺模塊接收查詢指令,并從所述ssd單元或者所述hdd單元獲取與查詢指令對應(yīng)的數(shù)據(jù)后輸出。
通過所述spark平臺模塊分別與所述ssd單元和hdd單元連接,以使處理得到的數(shù)據(jù)送至所述ssd單元或者所述hdd單元進(jìn)行存儲,可以實現(xiàn)數(shù)據(jù)的精確映射和保存。
在具體實施中,所述數(shù)據(jù)處理方法還包括以下步驟通過容量監(jiān)控模塊對所述混合存儲模塊的剩余容量進(jìn)行監(jiān)控,并在剩余容量小于預(yù)設(shè)閾值時輸出報警信息。預(yù)設(shè)閾值的具體取值可根據(jù)混合存儲模塊2的容量大小決定,輸出報警信息可以是控制揚聲器發(fā)聲或控制報警燈閃爍等。在混合存儲模塊2的剩余容量過低時進(jìn)行報警,提醒工作人員及時對存儲數(shù)據(jù)進(jìn)行轉(zhuǎn)移或更換存儲硬盤等,以提高數(shù)據(jù)存儲可靠性。
在具體實施中,所述spark平臺模塊1包括與所述ssd單元21對應(yīng)的第一api(applicationprogramminginterface,應(yīng)用程序編程接口)和與所述hdd單元對應(yīng)的第二api,所述spark平臺模塊1通過第一api與所述ssd單元21連接,所述spark平臺模塊1通過第二api與所述hdd單元22連接,以進(jìn)行數(shù)據(jù)傳輸。所述spark平臺模塊1通過第一api和第二api,可以將混合存儲系統(tǒng)的結(jié)構(gòu)特征展示給用戶。而存儲介質(zhì)的選擇是通過調(diào)用第一api或第二api接口來實現(xiàn),即選擇在所述ssd單元21或是所述hdd單元22中進(jìn)行存儲通過調(diào)用第一api或第二api接口來實現(xiàn)。
在具體實施中,所述ssd單元21作和所述hdd單元22為同層持久化存儲單元。所述處理得到的數(shù)據(jù)具體包括rdd分區(qū)數(shù)據(jù)。所述spark平臺模塊還用于根據(jù)預(yù)設(shè)的分區(qū)比例值將rdd分區(qū)數(shù)據(jù)持久化到所述ssd單元或所述hdd單元中。
在具體實施中,所述spark平臺模塊1還用于根據(jù)rdd分區(qū)數(shù)據(jù)的熱度將rdd分區(qū)數(shù)據(jù)持久化到所述ssd單元或所述hdd單元中。由于ssd的i/o帶寬和降低訪問延遲可以被有效地提升。而hdd仍然能為那些對存儲性能要求較低的數(shù)據(jù)提供大量的存儲效率。另外大量的數(shù)據(jù)被數(shù)據(jù)中心收集并捕獲后,并不經(jīng)常被訪問,稱之為冷數(shù)據(jù),約占全球數(shù)據(jù)的90%。而剩余的10%的數(shù)據(jù)被收集并捕獲后,會經(jīng)常性的被訪問,稱之為熱數(shù)據(jù)。顯然,將全部的數(shù)據(jù)都存儲在高性能、低延遲的存儲設(shè)備是不合理的,成本是極為昂貴的。因此,根據(jù)rdd分區(qū)數(shù)據(jù)的熱度,實現(xiàn)對ssd單元21和hdd單元22以合理的方式進(jìn)行組合,通過構(gòu)建混合存儲系統(tǒng)可以帶來性能的大幅提升,同時保障成本可控。
如圖3所示,spark數(shù)據(jù)持久化架構(gòu)對ssd的存在無感知能力的根本原因可歸納為:
(1)spark配置文件采用單一參數(shù)保存多個臨時文件目錄,將指向ssd和hdd的目錄進(jìn)行混合管理;
(2)nonnegativehash方法未有效地區(qū)分不同臨時文件目錄所在存儲介質(zhì)數(shù)據(jù)訪問性能的差異,等概率的選擇目錄;
(3)對不同的存儲介質(zhì),統(tǒng)一使用disk_only為上層應(yīng)用提供持久化接口,而此接口通過storagelevel反饋給用戶。
本發(fā)明提供一種實施例的基于ssd和hdd的混合存儲系統(tǒng)的spark架構(gòu)優(yōu)化方法,以得到如圖4所示的優(yōu)化后的spark數(shù)據(jù)持久化架構(gòu),如圖5所示,所述優(yōu)化方法包括:
步驟s51,設(shè)置ssd目錄管理變量和hdd目錄管理變量;
步驟s52,設(shè)置設(shè)備適配器以實現(xiàn)數(shù)據(jù)持久化級別和對應(yīng)臨時文件目錄之間的匹配;
步驟s53,設(shè)置兩個持久化級別ssd_only和和hdd_only以生成兩個持久化接口;
擴大兩個持久化級別的作用域的范圍至所述設(shè)備適配器。
在具體實施中,所述步驟s51包括:
增加ssd目錄管理變量和hdd目錄管理變量;
將ssd目錄管理變量指向ssd臨時文件目錄,以及將hdd目錄管理變量指向hdd臨時文件目錄。
在具體實施中,所述步驟s52包括:
增加設(shè)備適配器;
通過設(shè)備適配器接收數(shù)據(jù)的預(yù)設(shè)持久化級別,并根據(jù)數(shù)據(jù)的預(yù)設(shè)持久化級別讀取數(shù)據(jù)的預(yù)設(shè)持久化級別所對應(yīng)目錄管理變量中的臨時文件目錄;
通過設(shè)備適配器實現(xiàn)數(shù)據(jù)持久化級別和對應(yīng)臨時文件目錄之間的匹配。
在具體實施中,兩個持久化接口包括ssd接口和hdd接口。
在具體實施中,所述步驟s54包括:
將兩個持久化級別的作用域的范圍延伸至所述設(shè)備適配器;
或者包括:兩個持久化級別的作用域的范圍從spark架構(gòu)中的塊管理器經(jīng)過park架構(gòu)中的磁盤塊管理器至所述設(shè)備適配器。
具體的,spark持久化架構(gòu)的具體優(yōu)化方案如下:
(1)增加ssd臨時文件目錄管理變量和hdd臨時文件目錄管理變量,同時將臨時文件目錄的混合管理方式改為由ssd臨時文件目錄管理變量和hdd臨時文件目錄管理變量一一對應(yīng)指向ssd和hdd的臨時文件目錄;
(2)增加設(shè)備適配器deviceadaptor,接收用戶設(shè)置的數(shù)據(jù)持久化級別,同時讀取用戶配置的臨時文件目錄,實現(xiàn)持久化級別參數(shù)到ssd或hdd的精確映射;
(3)增加ssd_only和hdd_only兩個持久化級別,將混合存儲系統(tǒng)特征暴露給用戶。同時,擴展storagelevel的作用域,如圖4所示,storagelevel僅作用于塊管理器blockmanager,為用戶和塊管理器blockmanager提供數(shù)據(jù)持久化級別。在本發(fā)明中,將storagelevel作用域進(jìn)一步延伸至設(shè)備適配器deviceadapter,以此區(qū)分ssd單元和hdd單元。
通過設(shè)置兩個持久化級別ssd_only和和hdd_only以生成兩個持久化接口,實現(xiàn)對spark的持久化框架進(jìn)行優(yōu)化,并混合存儲系統(tǒng)向用戶提供了ssd_only和hdd_only的兩個持久化api,使得底層存儲設(shè)備的組合結(jié)構(gòu)被展示給用戶,從而打破disk_only的屏蔽作用,并向用戶提供更為精確的持久化api,實現(xiàn)spark應(yīng)用程序的按需持久化。
本發(fā)明還提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該程序被處理器執(zhí)行時實現(xiàn)上述圖5中方法的步驟。
通過設(shè)置兩個持久化級別ssd_only和和hdd_only以生成兩個持久化接口,實現(xiàn)對spark的持久化框架進(jìn)行優(yōu)化,并混合存儲系統(tǒng)向用戶提供了ssd_only和hdd_only的兩個持久化api,使得底層存儲設(shè)備的組合結(jié)構(gòu)被展示給用戶,從而打破disk_only的屏蔽作用,并向用戶提供更為精確的持久化api,實現(xiàn)spark應(yīng)用程序的按需持久化。
在具體實施中,通過調(diào)用rdd.persist(storagelevel.ssd_only)實現(xiàn)持久化該rdd分區(qū)數(shù)據(jù),同時設(shè)置分區(qū)數(shù)據(jù)的預(yù)設(shè)持久化級別為ssd_only。持久化該rdd的操作由rdd.iterator方法開啟,圖3所示內(nèi)容為rdd數(shù)據(jù)的持久化流程。另外,要持久化rdd分區(qū)數(shù)據(jù),需要具備兩個條件:分區(qū)數(shù)據(jù)+地址,分區(qū)數(shù)據(jù)已經(jīng)保存在rdd模塊中,而地址需要通過計算獲取,地址=路徑/文件名,路徑已經(jīng)保存到配置文件中,需要根據(jù)分區(qū)數(shù)據(jù)的預(yù)設(shè)持久化級別映射配置文件獲取,而文件名需要根據(jù)塊標(biāo)識生成。
本發(fā)明提供一種實施例的基于ssd和hdd混合存儲系統(tǒng)的rdd持久化方法,所述持久化方法是基于優(yōu)化后的spark架構(gòu)以實現(xiàn)對rdd分區(qū)數(shù)據(jù)的持久化,所述持久化方法包括以下步驟:
rdd模塊將rdd模塊中的塊標(biāo)識和rdd模塊中數(shù)據(jù)的預(yù)設(shè)持久化級別傳遞給塊管理器;
所述塊管理器將所述塊標(biāo)識和預(yù)設(shè)持久化級別傳遞給磁盤塊管理器;
所述磁盤塊管理器將所述預(yù)設(shè)持久化級別傳遞給設(shè)備適配器;
所述設(shè)備適配器接收數(shù)據(jù)的預(yù)設(shè)持久化級別和讀取配置文件中兩個目錄管理變量,根據(jù)數(shù)據(jù)的預(yù)設(shè)持久化級別進(jìn)行預(yù)設(shè)持久化級別和對應(yīng)目錄管理變量中臨時文件目錄匹配,并將匹配得到的臨時文件目錄返回給所述磁盤塊管理器;
所述磁盤塊管理器根據(jù)所述塊標(biāo)識得到文件名,并根據(jù)匹配得到的臨時文件目錄和所述文件名得到數(shù)據(jù)存儲地址,并將所述數(shù)據(jù)存儲地址返回至所述塊管理器;
所述塊管理器根據(jù)所述數(shù)據(jù)存儲地址對rdd模塊中的數(shù)據(jù)在ssd或hdd中進(jìn)行存儲。
具體的,如圖6所示,所述持久化方法的步驟如下:
步驟1,所述rdd模塊通過iterator方法調(diào)用塊管理器blockmanager的doputiterator方法將rdd模塊中的塊標(biāo)識blockid和rdd模塊中數(shù)據(jù)的預(yù)設(shè)持久化級別傳遞給塊管理器blockmanager;
步驟2,所述塊管理器blockmanager的doputiterator方法調(diào)用磁盤塊管理器的getfile方法,將rdd模塊中的塊標(biāo)識blockid和rdd模塊中數(shù)據(jù)的預(yù)設(shè)持久化級別傳遞給磁盤塊管理器diskblockmanager;
步驟3,所述磁盤塊管理器diskblockmanager的getfile方法調(diào)用設(shè)備適配器的getaccuratedir方法將所述預(yù)設(shè)持久化級別傳遞給設(shè)備適配器deviceadapter;
步驟4,所述設(shè)備適配器deviceadapter讀取配置文件中兩個目錄管理變量,具體的,所述兩個目錄管理變量包括ssd目錄管理變量和hdd目錄管理變量;
步驟5,所述設(shè)備適配器deviceadapter根據(jù)數(shù)據(jù)的預(yù)設(shè)持久化級別進(jìn)行預(yù)設(shè)持久化級別和對應(yīng)目錄管理變量中臨時文件目錄匹配,也就是說所述設(shè)備適配器deviceadapter可以從上層獲取預(yù)設(shè)持久化級別,可以從下層獲取配置文件比如ssd目錄管理變量和hdd目錄管理變量,可以完成預(yù)設(shè)持久化級別與臨時文件目錄,也就是說,getaccuratedir方法讀取配置文件,其中配置文件包括兩個變量為ssd目錄管理變量和hdd目錄管理變量,然后根據(jù)接收到的預(yù)設(shè)持久化級別匹配上述兩個變量。如果預(yù)設(shè)持久化級別是ssd_only,則匹配ssd目錄管理變量;如果預(yù)設(shè)持久化級別是hdd_only,則匹配hdd目錄管理變量,此時得到了rdd數(shù)據(jù)持久化的具體存儲地址,然后將該地址返回給所述磁盤塊管理器diskblockmanager;
步驟6,將匹配得到的臨時文件目錄返回給所述磁盤塊管理器diskblockmanager,也就是說,匹配得到的臨時文件目錄中包含具體存儲地址,然后將該地址返回給所述磁盤塊管理器diskblockmanager;
步驟7,所述磁盤塊管理器diskblockmanager根據(jù)所述塊標(biāo)識blockid得到文件名filename,并根據(jù)匹配得到的臨時文件目錄和所述文件名得到數(shù)據(jù)存儲地址,也就是說,具體地址+filename就是rdd數(shù)據(jù)存儲到磁盤的完整地址即數(shù)據(jù)存儲地址,其中filename=“rdd_”+index,index是一個數(shù)字索引,按照順序遞增,而數(shù)據(jù)存儲地址=目錄/文件名,另外臨時文件目錄也就是保存路徑;
步驟8,所述磁盤塊管理器diskblockmanager將所述數(shù)據(jù)存儲地址返回至所述塊管理器blockmanager;
步驟9,所述塊管理器blockmanager獲得rdd的數(shù)據(jù)存儲地址后,調(diào)用塊存儲模塊diskstore的writefunc方法,完成數(shù)據(jù)的存儲任務(wù)。
在具體實施中,所述rdd持久化方法還包括以下步驟;
判斷rdd模塊中數(shù)據(jù)的熱度是否大于第一預(yù)設(shè)值;
如果是,所述rdd模塊中數(shù)據(jù)的預(yù)設(shè)持久化級別為ssd_only;
如果否,所述rdd模塊中數(shù)據(jù)的預(yù)設(shè)持久化級別為hdd_only。
即根據(jù)rdd分區(qū)中數(shù)據(jù)的熱度,進(jìn)行數(shù)據(jù)的預(yù)設(shè)持久化級別的設(shè)置以實現(xiàn)對ssd單元21和hdd單元22以合理的方式進(jìn)行組合,通過構(gòu)建混合存儲系統(tǒng)可以帶來性能的大幅提升,同時保障成本可控。
也就是說,通過優(yōu)化的spark持久化架構(gòu),實現(xiàn)spark數(shù)據(jù)的按需持久化。進(jìn)而,用戶可調(diào)用優(yōu)化后的spark架構(gòu)所提供的面向ssd持久化的api將高熱度rdd的分區(qū)數(shù)據(jù)持久化到ssd中,由此有效地提升spark性能。
本發(fā)明還提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該程序被處理器執(zhí)行時實現(xiàn)上述圖6中方法的步驟。
在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任一個或多個實施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進(jìn)行結(jié)合和組合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對上述實施例進(jìn)行變化、修改、替換和變型。