揭祕阿里雲神龍團隊拿下TPCx-BB排名第一的背後技術

簡介:近日,TPC Benchmark Express-BigBench(簡稱TPCx-BB)公佈了最新的世界排名,阿里雲自主研發的神龍大數據加速引擎獲得了TPCx-BB SF3000排名第一的成績。TPCx-BB測試分爲性能與性價比兩個維度。其中,在性能維度,在本次排名中,阿里雲領先第二名高達41.6%,達到了2187.42 BBQpm,性價比領先第二名40%,降低到346.53 USD/BBQpm。

image.png

作者 | 神龍加速計算團隊
來源 | 阿里技術公衆號

一 背景介紹

近日,TPC Benchmark Express-BigBench(簡稱TPCx-BB)公佈了最新的世界排名,阿里雲自主研發的神龍大數據加速引擎獲得了TPCx-BB SF3000排名第一的成績。

TPCx-BB測試分爲性能與性價比兩個維度。其中,在性能維度,在本次排名中,阿里雲領先第二名高達41.6%,達到了2187.42 BBQpm,性價比領先第二名40%,降低到346.53 USD/BBQpm。

image.png

(TPCx-BB SF3000性能維度排行)

image.png

(TPCx-BB SF3000性價比維度排行)

借這個機會跟大家分享一下這個第一背後的技術歷程。

二 神龍大數據加速引擎MRACC概述

阿里雲自研的神龍大數據加速引擎MRACC(Apasara Compute MapReduce Accelerator)是這次取得優異成績的殺手鐗。

在數據處理需求激增的今天,許多企業會使用開源Spark、Hadoop組件或HDP、CDH等常用套件,自建開源大數據集羣,處理數據量從TB到PB級,集羣規模從幾臺到幾千臺。MRACC神龍大數據加速引擎,針對客戶自建場景,依託神龍底座,提供常用組件加速能力,如Spark、Hadoop、Alluxio等。

結合阿里雲神龍架構的特性,MRACC進行了軟硬一體化優化,形成獨一無二的性能優勢,最終,使複雜SQL查詢場景性能相比社區版Spark提升2-3倍,使用eRDMA加速Spark性能提升30%。在神龍大數據加速引擎的加持下,企業使用阿里雲ECS雲服務器運行大數據集羣,將獲得更高的性能和性價比。

image.png

圖1 MRACC神龍大數據加速引擎架構

三 MRACC-Spark介紹

Spark自從2010年面世,到2020年已經經過十年的發展,現在已經發展爲大數據批計算的首選引擎。針對大數據最常用的Spark引擎,MRACC進行了重點優化。具體來說,針對大數據任務重IO特性,MRACC在網絡和存儲方面結合雲上的架構優勢進行軟硬件加速,包括軟件的SQL引擎優化,使用緩存、文件裁剪、索引等優化手段,並嘗試將壓縮等運算卸載到異構器件;還使用eRDMA進行網絡加速,將shuffle階段的數據交換運行在eRDMA網絡,使得延時降低、CPU利用率大幅提升。

image.png

圖2 MRACC-Spark架構

四 Spark SQL引擎優化

從Spark2以後,Spark SQL, DataFrames and Datasets接口逐漸取代基礎RDD API成爲Spark的主流編程模型。社區對Spark SQL進行了大量投入,據統計Spark3.0版本發佈將其中接近一半的優化都集中在Spark SQL上。使用 SparkSQL 替代 Hive 執行離線任務已成爲不少企業的主流選擇。

針對SQL引擎的anlyzer、optimizer、planner、Query execution幾個階段,我們都做了一些優化。Spark3.0對SQL引擎進行了大刀闊斧的改造和優化,其中AQE和DP機制廣受關注。但目前開源Spark的AE機制目前僅支持分區裁剪,對於非分區鍵和subquery裁剪不支持,我們針對這塊做了優化,支持subquery的動態數據裁剪,能大幅減少參與計算的數據量。

在物理計劃執行階段,我們支持了window topn排序,使得包含limit的sql語句性能大幅提升,並支持了parquet rowgroup裁剪、bloom filter join等高級特性。SPAKR SQL的CBO機制能較好的提高SQL執行效率,但是在cbo階段,join table過多會導致的cbo搜索開銷暴增,我們支持了遺傳算法搜索,解決了 join table過多導致的開銷暴增的情況。
此外,還支持了去重下推、join外鍵消除、完整性約束等功能,並結合deltalake支持了數據的增刪改操作。

image.png

圖3 MRACC-Spark的SQL引擎優化

五 近網絡RDMA優化

2021年杭州雲棲大會上,阿里雲發佈第四代神龍架構,提供業界首個大規模彈性RDMA加速能力。RDMA是一種高性能網絡傳輸技術,提供直接內存訪問的方式,數據傳輸bypass Kernel,從而能減少CPU的開銷,提供低時延的高性能網絡。在分佈式計算中,shuffle過程必不可少,且消耗較多的計算和網絡資源,是大數據分佈式計算的優化重點。針對Spark 內存計算在shuffle階段數據交換特點,可將shuffle數據交換變爲memory-network-memory的模式,充分利用RDMA用戶態內存直接交互、低延時、低cpu消耗的特點,最終在tpcxhs等端到端benchmark上獲得了30%的性能提升。

image.png

圖4 MRACC-Spark的eRDMA近網絡優化插件

六 性能優化結果

最終,在TPCDS 10T數據集上,相比最新的Spark3.1版本性能提升2.19倍。在TPCx-BB上相比第二名領先高達41.6%。

image.png

image.png

圖5 TPCDS及TPCx-BB的數據效果

七 展望

目前,所有這些優化,我們都封裝成插件形式交付給客戶,客戶代碼基本上不需要修改,方便客戶直接使用。

未來我們將持續將我們軟硬件一體化極致性能優化能力服務阿里雲的大數據客戶,此外我們將在軟硬件一體化性能優化能力上持續迭代,構建性能更高、成本更低的MRACC神龍大數據加速服務能力提供給廣大用戶。

附:TPCx-BB介紹

TPCx-BB是由國際標準化測試權威組織(TPC)發佈的基於零售業場景構建的端到端大數據測試基準,支持主流分佈式大數據處理引擎,模擬了整個線上與線下業務流程,有30個查詢語句,涉及到描述性過程型查詢、數據挖掘以及機器學習的算法。TPCx-BB的測試具有數據量大、特徵複雜、來源複雜等特點,與真實業務場景較爲接近,對各行業的基礎設施選型有着重要參考意義。

TPCx-BB的測試結果,可以全面準確的反映端到端的大數據系統的整體運行性能。測試涵蓋了結構化、半結構化和非結構化數據,能夠從客戶實際場景角度更全面的評估大數據系統軟硬件性能、性價比、服務和功耗等各個方面。

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章