Apache Spark是專為大規模數據處理而設計的快速通用的計算引擎,常用來構建大型、低延遲的數據分析應用程序。Spark一個主要特點在于,其能夠在內存中進行計算,這使得其數據分析效率往往高于其它計算引擎,但是,服務器內存資源的限制也使得其性能的擴展存在著一定的瓶頸,在超大規模負載中無法充分發揮其利用內存進行計算的性能優勢。
某全球領先的語音識別服務提供商是最早將Spark應用到生產環境的團隊之一,該公司的語音云通過幾千臺服務器構成的云計算平臺向用戶提供多樣的、實時語音處理能力,日均服務終端用戶超過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)、云計算、企業市場以及電信業務應用等需求,基于全新一代英特爾®至強®可擴展處理器設計了一款2U 2路機架服務器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。
為了驗證傲騰內存在該公司語音云數據分析中的使用效果,我們在實際的方案部署中,選用了浪潮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的延時。更重要的是傲騰內存具有超高的隨機讀寫能力,使用傲騰內存用于緩存加速,可以為企業帶來巨大的性能提升,幫助企業更快速地獲得實時洞察,從而幫助企業創造新的機會,以推動和增強服務的交付能力。