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

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

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

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

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

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

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

客戶業(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è)備最大容量達(dá)到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)如下:

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

測試方案架構(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)建索引的效率。

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

兩輪測試結(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) 。

收益分析:

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

毫無疑問,在浪潮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ù)交互,具有高達(dá)6.8GB/s的IO帶寬和<1us的延時。更重要的是傲騰內(nèi)存具有超高的隨機讀寫能力,使用傲騰內(nèi)存用于緩存加速,可以為企業(yè)帶來巨大的性能提升,幫助企業(yè)更快速地獲得實時洞察,從而幫助企業(yè)創(chuàng)造新的機會,以推動和增強服務(wù)的交付能力。

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

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

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

長按掃碼 閱讀全文