Spark SQL效能提公升17 7倍是如何實現的?

2022-10-01 08:39:12 字數 3253 閱讀 3300

摘要:在網際網路運營商等大規模、超大規模使用者中,spark是最受歡迎的大資料系統,spark對於記憶體依賴性很強,所以當負載提高時,硬體平台的記憶體挑戰就會十分明顯,浪潮為國內最大的語音識別服務提供商引入了intel傲騰記憶體,經過整體優化測試,整體效能提高了17. 7 倍。

挑戰:記憶體規模限制使 spark 優勢無法充分發揮

apache spark是專為大規模資料處理而設計的快速通用的計算引擎,常用來構建大型、低延遲的資料分析應用程式。spark乙個主要特點在於,其能夠在記憶體中進行計算,這使得其資料分析效率往往高於其它計算引擎,但是,伺服器記憶體資源的限制也使得其效能的擴充套件存在著一定的瓶頸,在超大規模負載中無法充分發揮其利用記憶體進行計算的效能優勢。

某全球領先的語音識別服務提供商是最早將spark應用到生產環境的團隊之一,該公司的語音雲通過幾千臺伺服器構成的雲www.cppcns.com計算平台向使用者提供多樣的、實時語音處理能力,日均服務終端使用者超過 15 億,日增資料超過100tb。

2014 年該公司基於spark和ai技術構建了dmp大資料平台(使用者資料管理平台)。dmp平台的主要功能就是收集、儲存、分析和挖掘龐大的使用者資料,以實現廣告精準投放。

客戶業務邏輯結構圖

spark在該公司的大資料平台中主要用於海量使用者資料分析,每天支撐穩定執行的spark sql統計分析指標和sql指令碼有幾千個。但是在將spark sql用於海量使用者資料分析的過程中,仍然面臨著一些痛點,這些都限制了該公司語音雲的資料分析能力。

spark的效能不僅受到cpu、記憶體、網路、磁碟等硬體裝置的制約,而且spark sql目前還不支援索引,也嚴重影響了spark sql在進行大規模資料分析時的效能,索引能夠提公升資料檢索的效率,降低硬碟的io瓶頸;

隨著資料量越來越大,即席分析的需求越來越強烈,即席查詢是使用者根據使用者自己的需求,靈活選擇查詢條件,系統能夠根據使用者的選擇生成響應的統計報表和結果集;在資料倉儲和大資料分析系統中,即席查詢使用的越多,對系統的效能要求也就越高,如果記憶體能夠快取更多的熱點資料,能夠極大的提公升即席查詢處理速度並降低響應延遲;

資料既有隨機讀的需求(即席查詢-ad-hoc),又有全表掃程式設計客棧描的需求(機器學習);機器學習就是通過特定演算法從海量的歷史資料中學習規律,從而對新的樣本進行分析並對未來做出**,在模型訓練的過程中會產生大量的中間結果資料,通常情況下需要將中間結果資料持久化到檔案系統上,如果記憶體能夠快取更多的中間結果資料,可以提公升模型訓練的速度;

案例分析:浪潮助力語音雲分析能力

隨著大資料的技術的逐漸成熟已經資料量的爆發,使得資料分析顯得更為重要,網際網路使用者需要強大的計算效能。作為英特爾的重要戰略合作夥伴,浪潮為使用者針對網際網路、idc(internet data center)、雲計算、企業市場以及電信業務應用等需求,基於全新一代英特爾至強可擴充套件處理器設計了一款2u2 路機架伺服器nf5280m5 伺服器。該產品滿足更多業務對網路頻寬、高計算效能、大記憶體容量的要求,同時對密度和計算效能有較高需求並對儲存有一定要求的客戶提供了很好的解決方案。

與全新一代英特爾至強可擴充套件處理器cascadelake一同上市的英特爾傲騰 資料中心級持久記憶體,可能會很好的解決這個問題,傲騰記憶體的單裝置最大容量達到512gb ,遠超dram 記憶體的128gb,這使得其可以將系統記憶體最大擴充套件至6tb(不包括系統自身記憶體)。而且,傲騰記憶體的單位容量**要遠低於dram 記憶體,這些特性支援企業在資料中心部署更大、更經濟的資料集,在大型記憶體池中獲得新的洞察。

為了解決語音雲在spark sql資料分析過程中面臨的痛點,該公司採用浪潮nf5280m5 與傲騰記憶體,並輔以英特爾oap軟體—優化分析包。oap旨在為spark sql加速ad-hoc查詢。oap定義了一種新的類parquet檔案列資料儲存格式,可以在記憶體以及傲騰記憶體中以fiber為單位提供細粒度的分層快取機制。更重要的,oap擴充套件了spark sql ddl,允許使用者根據關係定義自定義索引。oap通過將資料快取到executor的堆外記憶體(傲騰記憶體)中,加速ad-hoc。

為了驗證傲騰內存在該公司語音www.cppcns.com雲資料分析中的使用效果,我們在實際的方案部署中,選用了浪潮5280m5 與傲騰記憶體的強強組合,分別測試基於傲騰記憶體/ dram 記憶體兩種配置下的效能對比。我們部署了 5 臺浪潮nf5280m5 伺服器,其中 1 臺用於spark的master節點,另外 4 臺用於spark的worker節點,每個worker節點部署 4 根128gb傲騰記憶體。部署架構如下:

測試方案架構圖

tpc-ds是tpc(事務處理效能委員會)組織發布的一套決策支援系統的效能測試基準,這個基準用於評估伺服器的效能。tpc-ds包含一套零售行業的資料模型,採用星型、雪花型等多維資料模型。包含 7 張事實表, 17 張維度表,以及 99 個標準sql測試案例,每個測試案例幾乎都有很高的io負載或者cpu計算負載,是專門用於評測資料倉儲、大資料分析等olap系統的基準測試工具之一。該測試集包含了針對大資料集的資料統計、報表生成、聯機查詢、資料探勘等複雜的應用,測試資料與真實的商業資料高度相似,可以說tpc-ds是與真實場景非常接近的效能測試基準資料集。目前tpc-ds已經通過了最大100tb資料集規模的效能基準測試。

因此我們選用了tpc-ds大資料基準測試工具,採用了3.5tb的測試資料集,並精選了tpc-ds基準測試工具中與該公司業務場景類似的 9 個io密集型sql測試案例進行評測。測試中浪潮與intel的工程師在硬體和軟體層面進行了大量的優化程式設計客棧工作,包括bios、作業系統核心、spark引數的優化;同時intel工程師針對該公司的實際需求,對oap軟體進行了進一步的優化,以提公升spark在大容量的parquet檔案上建立索引的效率。

兩輪測試結果對比圖

從上圖中我們看到有兩組結果的對比,其實是在我們的測試中進行了兩輪測試。第一輪測試模擬dram記憶體和傲騰記憶體沒有快取任何資料的情況。第二輪測試模擬傲騰記憶體已經快取了全部的資料,而dram記憶體因為容量有限只快取了部分資料的情況。第一輪測試中,因為傲騰記憶體提供了更大的快取池,效能有了 6 倍的提公升,在第二輪測試中效能提公升更加明顯,傲騰記憶體表現出了17.7x的效能提公升(=3452.6/194.28) 。

收益分析:

毫無疑問,在浪潮nf5280m5 伺服器和傲騰記憶體的共同作用下,記憶體分析技術無疑給企業和雲服務廠商帶來了一系列的優勢。首先傲騰記憶體具有大容量、低成本、和永續性儲存的特點,可以為企業和雲服務廠商降低it成本、簡化基礎設施、延長系統和應用的執行時間;同時傲騰記憶體更靠近cpu,可以與cpu通過記憶體通道直接進行資料互動,具有高達6.8gb/s的io頻寬和<1us的延時。更重要的是傲騰記憶體具有超高的隨機讀寫能力,使用傲騰記憶體用於快取加速,可以為企業帶來巨大的效能提公升,幫助企業更快速地獲得實時洞察,從而幫助企業創造新的機會,以推動和增強服務的交付能力。

www.cppcns.com

本文標題: spark sql效能提公升17.7倍是如何實現的?

本文位址:

SparkSQL常用效能優化

一 優化 1.在資料統計的時候選擇高效能計算元。例如dataframe使用foreachpartitions將資料寫入資料庫,不要每個record都去拿一次資料庫連線。通常寫法是每個partition拿一次資料庫連線。將統計結果寫入mysql中 優化 在進行資料庫操作的時候,不要每個record都去...

十六 SparkSQL常用效能優化

1.在資料統計的時候選擇高效能計算元。例如dataframe使用foreachpartitions將資料寫入資料庫,不要每個record都去拿一次資料庫連線。通常寫法是每個partition拿一次資料庫連線。將統計結果寫入mysql中 優化 在進行資料庫操作的時候,不要每個record都去操作一次資...

提公升軟體效能

提高系統的安全性和健壯性,資料庫伺服器和應用伺服器,就要考慮冗餘設計。保證系統的高可用和高可靠以及高併發。保證系統在出現故障時,及時切換正常工作,使用雙機熱備份。使用redis快取伺服器提高系統的效能。使用讀寫分離技術減輕資料訪問的壓力,提公升系統的使用者體驗。在資料庫的設計上來使用分庫 分表 分割...