客戶業(yè)務(wù)邏輯結(jié)構(gòu)圖
Spark在該公司的大數(shù)據(jù)平臺中主要用于海量用戶數(shù)據(jù)分析,每天支撐穩(wěn)定運行的Spark SQL統(tǒng)計分析指標(biāo)和SQL腳本有幾千個。但是在將Spark SQL用于海量用戶數(shù)據(jù)分析的過程中,仍然面臨著一些痛點,這些都限制了該公司語音云的數(shù)據(jù)分析能力。
? Spark的性能不僅受到CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤等硬件設(shè)備的制約,而且Spark SQL目前還不支持索引,也嚴(yán)重影響了Spark SQL在進行大規(guī)模數(shù)據(jù)分析時的性能,索引能夠提升數(shù)據(jù)檢索的效率,降低硬盤的IO瓶頸;
? 隨著數(shù)據(jù)量越來越大,即席分析的需求越來越強烈,即席查詢是用戶根據(jù)用戶自己的需求,靈活選擇查詢條件,系統(tǒng)能夠根據(jù)用戶的選擇生成響應(yīng)的統(tǒng)計報表和結(jié)果集;在數(shù)據(jù)倉庫和大數(shù)據(jù)分析系統(tǒng)中,即席查詢使用的越多,對系統(tǒng)的性能要求也就越高,如果內(nèi)存能夠緩存更多的熱點數(shù)據(jù),能夠極大的提升即席查詢處理速度并降低響應(yīng)延遲;
? 數(shù)據(jù)既有隨機讀的需求(即席查詢-Ad-hoc),又有全表掃描的需求(機器學(xué)習(xí));機器學(xué)習(xí)就是通過特定算法從海量的歷史數(shù)據(jù)中學(xué)習(xí)規(guī)律,從而對新的樣本進行分析并對未來做出預(yù)測,在模型訓(xùn)練的過程中會產(chǎn)生大量的中間結(jié)果數(shù)據(jù),通常情況下需要將中間結(jié)果數(shù)據(jù)持久化到文件系統(tǒng)上,如果內(nèi)存能夠緩存更多的中間結(jié)果數(shù)據(jù),可以提升模型訓(xùn)練的速度;
案例分析:浪潮助力語音云分析能力
隨著大數(shù)據(jù)的技術(shù)的逐漸成熟已經(jīng)數(shù)據(jù)量的爆發(fā),使得數(shù)據(jù)分析顯得更為重要,互聯(lián)網(wǎng)用戶需要強大的計算性能。作為英特爾的重要戰(zhàn)略合作伙伴,浪潮為用戶針對互聯(lián)網(wǎng)、IDC(Internet Data Center)、云計算、企業(yè)市場以及電信業(yè)務(wù)應(yīng)用等需求,基于全新一代英特爾?至強?可擴展處理器設(shè)計了一款2U 2路機架服務(wù)器NF5280M5服務(wù)器。該產(chǎn)品滿足更多業(yè)務(wù)對網(wǎng)絡(luò)帶寬、高計算性能、大內(nèi)存容量的要求,同時對密度和計算性能有較高需求并對存儲有一定要求的客戶提供了很好的解決方案。
與全新一代英特爾?至強?可擴展處理器CascadeLake一同上市的英特爾?傲騰? 數(shù)據(jù)中心級持久內(nèi)存,可能會很好的解決這個問題,傲騰內(nèi)存的單設(shè)備最大容量達到512GB ,遠(yuǎn)超DRAM 內(nèi)存的128GB,這使得其可以將系統(tǒng)內(nèi)存最大擴展至6TB(不包括系統(tǒng)自身內(nèi)存)。而且,傲騰內(nèi)存的單位容量價格要遠(yuǎn)低于DRAM 內(nèi)存,這些特性支持企業(yè)在數(shù)據(jù)中心部署更大、更經(jīng)濟的數(shù)據(jù)集,在大型內(nèi)存池中獲得新的洞察。
為了解決語音云在Spark SQL數(shù)據(jù)分析過程中面臨的痛點,該公司采用浪潮NF5280M5與傲騰內(nèi)存,并輔以英特爾OAP軟件—優(yōu)化分析包。OAP旨在為Spark SQL加速Ad-hoc查詢。OAP定義了一種新的類Parquet文件列數(shù)據(jù)存儲格式,可以在內(nèi)存以及傲騰內(nèi)存中以Fiber為單位提供細(xì)粒度的分層緩存機制。更重要的,OAP擴展了Spark SQL DDL,允許用戶根據(jù)關(guān)系定義自定義索引。OAP通過將數(shù)據(jù)緩存到Executor的堆外內(nèi)存(傲騰內(nèi)存)中,加速Ad-hoc。
為了驗證傲騰內(nèi)存在該公司語音云數(shù)據(jù)分析中的使用效果,我們在實際的方案部署中,選用了浪潮5280M5與傲騰內(nèi)存的強強組合,分別測試基于傲騰內(nèi)存/ DRAM 內(nèi)存兩種配置下的性能對比。我們部署了5臺浪潮NF5280M5服務(wù)器,其中1臺用于Spark的Master節(jié)點,另外4臺用于Spark的worker節(jié)點,每個worker節(jié)點部署4根128GB傲騰內(nèi)存。部署架構(gòu)如下:
測試方案架構(gòu)圖
TPC-DS是TPC(事務(wù)處理性能委員會)組織發(fā)布的一套決策支持系統(tǒng)的性能測試基準(zhǔn),這個基準(zhǔn)用于評估服務(wù)器的性能。TPC-DS包含一套零售行業(yè)的數(shù)據(jù)模型,采用星型、雪花型等多維數(shù)據(jù)模型。包含7張事實表,17張維度表,以及99個標(biāo)準(zhǔn)SQL測試案例,每個測試案例幾乎都有很高的IO負(fù)載或者CPU計算負(fù)載,是專門用于評測數(shù)據(jù)倉庫、大數(shù)據(jù)分析等OLAP系統(tǒng)的基準(zhǔn)測試工具之一。該測試集包含了針對大數(shù)據(jù)集的數(shù)據(jù)統(tǒng)計、報表生成、聯(lián)機查詢、數(shù)據(jù)挖掘等復(fù)雜的應(yīng)用,測試數(shù)據(jù)與真實的商業(yè)數(shù)據(jù)高度相似,可以說TPC-DS是與真實場景非常接近的性能測試基準(zhǔn)數(shù)據(jù)集。目前TPC-DS已經(jīng)通過了最大100TB數(shù)據(jù)集規(guī)模的性能基準(zhǔn)測試。
因此我們選用了TPC-DS大數(shù)據(jù)基準(zhǔn)測試工具,采用了3.5TB的測試數(shù)據(jù)集,并精選了TPC-DS基準(zhǔn)測試工具中與該公司業(yè)務(wù)場景類似的9個IO密集型SQL測試案例進行評測。測試中浪潮與Intel的工程師在硬件和軟件層面進行了大量的優(yōu)化工作,包括BIOS、操作系統(tǒng)內(nèi)核、Spark參數(shù)的優(yōu)化;同時Intel工程師針對該公司的實際需求,對OAP軟件進行了進一步的優(yōu)化,以提升Spark在大容量的Parquet文件上創(chuàng)建索引的效率。
兩輪測試結(jié)果對比圖
從上圖中我們看到有兩組結(jié)果的對比,其實是在我們的測試中進行了兩輪測試。第一輪測試模擬DRAM內(nèi)存和傲騰內(nèi)存沒有緩存任何數(shù)據(jù)的情況。第二輪測試模擬傲騰內(nèi)存已經(jīng)緩存了全部的數(shù)據(jù),而DRAM內(nèi)存因為容量有限只緩存了部分?jǐn)?shù)據(jù)的情況。第一輪測試中,因為傲騰內(nèi)存提供了更大的緩存池,性能有了6倍的提升,在第二輪測試中性能提升更加明顯,傲騰內(nèi)存表現(xiàn)出了17.7X的性能提升(=3452.6/194.28) 。
收益分析:
毫無疑問,在浪潮NF5280M5服務(wù)器和傲騰內(nèi)存的共同作用下,內(nèi)存分析技術(shù)無疑給企業(yè)和云服務(wù)廠商帶來了一系列的優(yōu)勢。首先傲騰內(nèi)存具有大容量、低成本、和持久性存儲的特點,可以為企業(yè)和云服務(wù)廠商降低IT成本、簡化基礎(chǔ)設(shè)施、延長系統(tǒng)和應(yīng)用的運行時間;同時傲騰內(nèi)存更靠近CPU,可以與CPU通過內(nèi)存通道直接進行數(shù)據(jù)交互,具有高達6.8GB/s的IO帶寬和<1us的延時。更重要的是傲騰內(nèi)存具有超高的隨機讀寫能力,使用傲騰內(nèi)存用于緩存加速,可以為企業(yè)帶來巨大的性能提升,幫助企業(yè)更快速地獲得實時洞察,從而幫助企業(yè)創(chuàng)造新的機會,以推動和增強服務(wù)的交付能力。