揭秘阿里云神龙团队拿下 TPCx-BB 排名第一的背后技术
一 背景介绍
近日,TPC Benchmark Express-BigBench(简称 TPCx-BB)公布了最新的世界排名,阿里云自主研发的神龙大数据加速引擎获得了 TPCx-BB SF3000 排名第一的成绩。
TPCx-BB 测试分为性能与性价比两个维度。其中,在性能维度,在本次排名中,阿里云领先第二名高达 41.6%,达到了 2187.42 BBQpm,性价比领先第二名 40%,降低到 346.53 USD/BBQpm。
(TPCx-BB SF3000 性能维度排行)
(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 云服务器运行大数据集群,将获得更高的性能和性价比。
图 1 MRACC 神龙大数据加速引擎架构
三 MRACC-Spark 介绍
Spark 自从 2010 年面世,到 2020 年已经经过十年的发展,现在已经发展为大数据批计算的首选引擎。针对大数据最常用的 Spark 引擎,MRACC 进行了重点优化。具体来说,针对大数据任务重 IO 特性,MRACC 在网络和存储方面结合云上的架构优势进行软硬件加速,包括软件的 SQL 引擎优化,使用缓存、文件裁剪、索引等优化手段,并尝试将压缩等运算卸载到异构器件;还使用 eRDMA 进行网络加速,将 shuffle 阶段的数据交换运行在 eRDMA 网络,使得延时降低、CPU 利用率大幅提升。
图 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 支持了数据的增删改操作。
图 3 MRACC-Spark 的 SQL 引擎优化
五 近网络 RDMA 优化
2021 年杭州云栖大会上,阿里云发布第四代神龙架构,提供业界首个大规模弹性 RDMA 加速能力。RDMA 是一种高性能网络传输技术,提供直接内存访问的方式,数据传输 bypass Kernel,从而能减少 CPU 的开销,提供低时延的高性能网络。在分布式计算中,shuffle 过程必不可少,且消耗较多的计算和网络资源,是大数据分布式计算的优化重点。针对 Spark 内存计算在 shuffle 阶段数据交换特点,可将 shuffle 数据交换变为 memory-network-memory 的模式,充分利用 RDMA 用户态内存直接交互、低延时、低 cpu 消耗的特点,最终在 tpcxhs 等端到端 benchmark 上获得了 30%的性能提升。
图 4 MRACC-Spark 的 eRDMA 近网络优化插件
六 性能优化结果
最终,在 TPCDS 10T 数据集上,相比最新的 Spark3.1 版本性能提升 2.19 倍。在 TPCx-BB 上相比第二名领先高达 41.6%。
图 5 TPCDS 及 TPCx-BB 的数据效果
七 展望
目前,所有这些优化,我们都封装成插件形式交付给客户,客户代码基本上不需要修改,方便客户直接使用。
未来我们将持续将我们软硬件一体化极致性能优化能力服务阿里云的大数据客户,此外我们将在软硬件一体化性能优化能力上持续迭代,构建性能更高、成本更低的 MRACC 神龙大数据加速服务能力提供给广大用户。
附:TPCx-BB 介绍
TPCx-BB 是由国际标准化测试权威组织(TPC)发布的基于零售业场景构建的端到端大数据测试基准,支持主流分布式大数据处理引擎,模拟了整个线上与线下业务流程,有 30 个查询语句,涉及到描述性过程型查询、数据挖掘以及机器学习的算法。TPCx-BB 的测试具有数据量大、特征复杂、来源复杂等特点,与真实业务场景较为接近,对各行业的基础设施选型有着重要参考意义。
TPCx-BB 的测试结果,可以全面准确的反映端到端的大数据系统的整体运行性能。测试涵盖了结构化、半结构化和非结构化数据,能够从客户实际场景角度更全面的评估大数据系统软硬件性能、性价比、服务和功耗等各个方面。
版权声明: 本文为 InfoQ 作者【阿里云弹性计算】的原创文章。
原文链接:【http://xie.infoq.cn/article/055ab54243669b8b40787b4f2】。文章转载请联系作者。
评论