Spark SQL性能提升17.7倍是如何實(shí)現(xiàn)的?

摘要:在互聯(lián)網(wǎng)運(yùn)營(yíng)商等大規(guī)模、超大規(guī)模用戶中,Spark是最受歡迎的大數(shù)據(jù)系統(tǒng),Spark對(duì)于內(nèi)存依賴性很強(qiáng),所以當(dāng)負(fù)載提高時(shí),硬件平臺(tái)的內(nèi)存挑戰(zhàn)就會(huì)十分明顯,浪潮為國(guó)內(nèi)最大的語(yǔ)音識(shí)別服務(wù)提供商引入了Intel傲騰內(nèi)存,經(jīng)過(guò)整體優(yōu)化測(cè)試,整體性能提高了17.7倍。

挑戰(zhàn):內(nèi)存規(guī)模限制使 Spark 優(yōu)勢(shì)無(wú)法充分發(fā)揮

Apache Spark是專(zhuān)為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎,常用來(lái)構(gòu)建大型、低延遲的數(shù)據(jù)分析應(yīng)用程序。Spark一個(gè)主要特點(diǎn)在于,其能夠在內(nèi)存中進(jìn)行計(jì)算,這使得其數(shù)據(jù)分析效率往往高于其它計(jì)算引擎,但是,服務(wù)器內(nèi)存資源的限制也使得其性能的擴(kuò)展存在著一定的瓶頸,在超大規(guī)模負(fù)載中無(wú)法充分發(fā)揮其利用內(nèi)存進(jìn)行計(jì)算的性能優(yōu)勢(shì)。

某全球領(lǐng)先的語(yǔ)音識(shí)別服務(wù)提供商是最早將Spark應(yīng)用到生產(chǎn)環(huán)境的團(tuán)隊(duì)之一,該公司的語(yǔ)音云通過(guò)幾千臺(tái)服務(wù)器構(gòu)成的云計(jì)算平臺(tái)向用戶提供多樣的、實(shí)時(shí)語(yǔ)音處理能力,日均服務(wù)終端用戶超過(guò)15億,日增數(shù)據(jù)超過(guò)100TB。

2014年該公司基于Spark和AI技術(shù)構(gòu)建了DMP大數(shù)據(jù)平臺(tái)(用戶數(shù)據(jù)管理平臺(tái))。DMP平臺(tái)的主要功能就是收集、存儲(chǔ)、分析和挖掘龐大的用戶數(shù)據(jù),以實(shí)現(xiàn)廣告精準(zhǔn)投放。

Spark SQL性能提升17.7倍是如何實(shí)現(xiàn)的?

客戶業(yè)務(wù)邏輯結(jié)構(gòu)圖

Spark在該公司的大數(shù)據(jù)平臺(tái)中主要用于海量用戶數(shù)據(jù)分析,每天支撐穩(wěn)定運(yùn)行的Spark SQL統(tǒng)計(jì)分析指標(biāo)和SQL腳本有幾千個(gè)。但是在將Spark SQL用于海量用戶數(shù)據(jù)分析的過(guò)程中,仍然面臨著一些痛點(diǎn),這些都限制了該公司語(yǔ)音云的數(shù)據(jù)分析能力。

? Spark的性能不僅受到CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤(pán)等硬件設(shè)備的制約,而且Spark SQL目前還不支持索引,也嚴(yán)重影響了Spark SQL在進(jìn)行大規(guī)模數(shù)據(jù)分析時(shí)的性能,索引能夠提升數(shù)據(jù)檢索的效率,降低硬盤(pán)的IO瓶頸;

? 隨著數(shù)據(jù)量越來(lái)越大,即席分析的需求越來(lái)越強(qiáng)烈,即席查詢是用戶根據(jù)用戶自己的需求,靈活選擇查詢條件,系統(tǒng)能夠根據(jù)用戶的選擇生成響應(yīng)的統(tǒng)計(jì)報(bào)表和結(jié)果集;在數(shù)據(jù)倉(cāng)庫(kù)和大數(shù)據(jù)分析系統(tǒng)中,即席查詢使用的越多,對(duì)系統(tǒng)的性能要求也就越高,如果內(nèi)存能夠緩存更多的熱點(diǎn)數(shù)據(jù),能夠極大的提升即席查詢處理速度并降低響應(yīng)延遲;

? 數(shù)據(jù)既有隨機(jī)讀的需求(即席查詢-Ad-hoc),又有全表掃描的需求(機(jī)器學(xué)習(xí));機(jī)器學(xué)習(xí)就是通過(guò)特定算法從海量的歷史數(shù)據(jù)中學(xué)習(xí)規(guī)律,從而對(duì)新的樣本進(jìn)行分析并對(duì)未來(lái)做出預(yù)測(cè),在模型訓(xùn)練的過(guò)程中會(huì)產(chǎn)生大量的中間結(jié)果數(shù)據(jù),通常情況下需要將中間結(jié)果數(shù)據(jù)持久化到文件系統(tǒng)上,如果內(nèi)存能夠緩存更多的中間結(jié)果數(shù)據(jù),可以提升模型訓(xùn)練的速度;

案例分析:浪潮助力語(yǔ)音云分析能力

隨著大數(shù)據(jù)的技術(shù)的逐漸成熟已經(jīng)數(shù)據(jù)量的爆發(fā),使得數(shù)據(jù)分析顯得更為重要,互聯(lián)網(wǎng)用戶需要強(qiáng)大的計(jì)算性能。作為英特爾的重要戰(zhàn)略合作伙伴,浪潮為用戶針對(duì)互聯(lián)網(wǎng)、IDC(Internet Data Center)、云計(jì)算、企業(yè)市場(chǎng)以及電信業(yè)務(wù)應(yīng)用等需求,基于全新一代英特爾®至強(qiáng)®可擴(kuò)展處理器設(shè)計(jì)了一款2U 2路機(jī)架服務(wù)器NF5280M5服務(wù)器。該產(chǎn)品滿足更多業(yè)務(wù)對(duì)網(wǎng)絡(luò)帶寬、高計(jì)算性能、大內(nèi)存容量的要求,同時(shí)對(duì)密度和計(jì)算性能有較高需求并對(duì)存儲(chǔ)有一定要求的客戶提供了很好的解決方案。

與全新一代英特爾®至強(qiáng)®可擴(kuò)展處理器CascadeLake一同上市的英特爾®傲騰™ 數(shù)據(jù)中心級(jí)持久內(nèi)存,可能會(huì)很好的解決這個(gè)問(wèn)題,傲騰內(nèi)存的單設(shè)備最大容量達(dá)到512GB ,遠(yuǎn)超DRAM 內(nèi)存的128GB,這使得其可以將系統(tǒng)內(nèi)存最大擴(kuò)展至6TB(不包括系統(tǒng)自身內(nèi)存)。而且,傲騰內(nèi)存的單位容量?jī)r(jià)格要遠(yuǎn)低于DRAM 內(nèi)存,這些特性支持企業(yè)在數(shù)據(jù)中心部署更大、更經(jīng)濟(jì)的數(shù)據(jù)集,在大型內(nèi)存池中獲得新的洞察。

為了解決語(yǔ)音云在Spark SQL數(shù)據(jù)分析過(guò)程中面臨的痛點(diǎn),該公司采用浪潮NF5280M5與傲騰內(nèi)存,并輔以英特爾OAP軟件—優(yōu)化分析包。OAP旨在為Spark SQL加速Ad-hoc查詢。OAP定義了一種新的類(lèi)Parquet文件列數(shù)據(jù)存儲(chǔ)格式,可以在內(nèi)存以及傲騰內(nèi)存中以Fiber為單位提供細(xì)粒度的分層緩存機(jī)制。更重要的,OAP擴(kuò)展了Spark SQL DDL,允許用戶根據(jù)關(guān)系定義自定義索引。OAP通過(guò)將數(shù)據(jù)緩存到Executor的堆外內(nèi)存(傲騰內(nèi)存)中,加速Ad-hoc。

為了驗(yàn)證傲騰內(nèi)存在該公司語(yǔ)音云數(shù)據(jù)分析中的使用效果,我們?cè)趯?shí)際的方案部署中,選用了浪潮5280M5與傲騰內(nèi)存的強(qiáng)強(qiáng)組合,分別測(cè)試基于傲騰內(nèi)存/ DRAM 內(nèi)存兩種配置下的性能對(duì)比。我們部署了5臺(tái)浪潮NF5280M5服務(wù)器,其中1臺(tái)用于Spark的Master節(jié)點(diǎn),另外4臺(tái)用于Spark的worker節(jié)點(diǎn),每個(gè)worker節(jié)點(diǎn)部署4根128GB傲騰內(nèi)存。部署架構(gòu)如下:

Spark SQL性能提升17.7倍是如何實(shí)現(xiàn)的?

測(cè)試方案架構(gòu)圖

TPC-DS是TPC(事務(wù)處理性能委員會(huì))組織發(fā)布的一套決策支持系統(tǒng)的性能測(cè)試基準(zhǔn),這個(gè)基準(zhǔn)用于評(píng)估服務(wù)器的性能。TPC-DS包含一套零售行業(yè)的數(shù)據(jù)模型,采用星型、雪花型等多維數(shù)據(jù)模型。包含7張事實(shí)表,17張維度表,以及99個(gè)標(biāo)準(zhǔn)SQL測(cè)試案例,每個(gè)測(cè)試案例幾乎都有很高的IO負(fù)載或者CPU計(jì)算負(fù)載,是專(zhuān)門(mén)用于評(píng)測(cè)數(shù)據(jù)倉(cāng)庫(kù)、大數(shù)據(jù)分析等OLAP系統(tǒng)的基準(zhǔn)測(cè)試工具之一。該測(cè)試集包含了針對(duì)大數(shù)據(jù)集的數(shù)據(jù)統(tǒng)計(jì)、報(bào)表生成、聯(lián)機(jī)查詢、數(shù)據(jù)挖掘等復(fù)雜的應(yīng)用,測(cè)試數(shù)據(jù)與真實(shí)的商業(yè)數(shù)據(jù)高度相似,可以說(shuō)TPC-DS是與真實(shí)場(chǎng)景非常接近的性能測(cè)試基準(zhǔn)數(shù)據(jù)集。目前TPC-DS已經(jīng)通過(guò)了最大100TB數(shù)據(jù)集規(guī)模的性能基準(zhǔn)測(cè)試。

因此我們選用了TPC-DS大數(shù)據(jù)基準(zhǔn)測(cè)試工具,采用了3.5TB的測(cè)試數(shù)據(jù)集,并精選了TPC-DS基準(zhǔn)測(cè)試工具中與該公司業(yè)務(wù)場(chǎng)景類(lèi)似的9個(gè)IO密集型SQL測(cè)試案例進(jìn)行評(píng)測(cè)。測(cè)試中浪潮與Intel的工程師在硬件和軟件層面進(jìn)行了大量的優(yōu)化工作,包括BIOS、操作系統(tǒng)內(nèi)核、Spark參數(shù)的優(yōu)化;同時(shí)Intel工程師針對(duì)該公司的實(shí)際需求,對(duì)OAP軟件進(jìn)行了進(jìn)一步的優(yōu)化,以提升Spark在大容量的Parquet文件上創(chuàng)建索引的效率。

Spark SQL性能提升17.7倍是如何實(shí)現(xiàn)的?

兩輪測(cè)試結(jié)果對(duì)比圖

從上圖中我們看到有兩組結(jié)果的對(duì)比,其實(shí)是在我們的測(cè)試中進(jìn)行了兩輪測(cè)試。第一輪測(cè)試模擬DRAM內(nèi)存和傲騰內(nèi)存沒(méi)有緩存任何數(shù)據(jù)的情況。第二輪測(cè)試模擬傲騰內(nèi)存已經(jīng)緩存了全部的數(shù)據(jù),而DRAM內(nèi)存因?yàn)槿萘坑邢拗痪彺媪瞬糠謹(jǐn)?shù)據(jù)的情況。第一輪測(cè)試中,因?yàn)榘硫v內(nèi)存提供了更大的緩存池,性能有了6倍的提升,在第二輪測(cè)試中性能提升更加明顯,傲騰內(nèi)存表現(xiàn)出了17.7X的性能提升(=3452.6/194.28) 。

收益分析:

Spark SQL性能提升17.7倍是如何實(shí)現(xiàn)的?

毫無(wú)疑問(wèn),在浪潮NF5280M5服務(wù)器和傲騰內(nèi)存的共同作用下,內(nèi)存分析技術(shù)無(wú)疑給企業(yè)和云服務(wù)廠商帶來(lái)了一系列的優(yōu)勢(shì)。首先傲騰內(nèi)存具有大容量、低成本、和持久性存儲(chǔ)的特點(diǎn),可以為企業(yè)和云服務(wù)廠商降低IT成本、簡(jiǎn)化基礎(chǔ)設(shè)施、延長(zhǎng)系統(tǒng)和應(yīng)用的運(yùn)行時(shí)間;同時(shí)傲騰內(nèi)存更靠近CPU,可以與CPU通過(guò)內(nèi)存通道直接進(jìn)行數(shù)據(jù)交互,具有高達(dá)6.8GB/s的IO帶寬和<1us的延時(shí)。更重要的是傲騰內(nèi)存具有超高的隨機(jī)讀寫(xiě)能力,使用傲騰內(nèi)存用于緩存加速,可以為企業(yè)帶來(lái)巨大的性能提升,幫助企業(yè)更快速地獲得實(shí)時(shí)洞察,從而幫助企業(yè)創(chuàng)造新的機(jī)會(huì),以推動(dòng)和增強(qiáng)服務(wù)的交付能力。

極客網(wǎng)企業(yè)會(huì)員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。

2019-11-13
Spark SQL性能提升17.7倍是如何實(shí)現(xiàn)的?
摘要:在互聯(lián)網(wǎng)運(yùn)營(yíng)商等大規(guī)模、超大規(guī)模用戶中,Spark是最受歡迎的大數(shù)據(jù)系統(tǒng),Spark對(duì)于內(nèi)存依賴性很強(qiáng),所以當(dāng)負(fù)載提高時(shí),硬件平臺(tái)的內(nèi)存挑戰(zhàn)就會(huì)十分明顯,

長(zhǎng)按掃碼 閱讀全文