大数据和AI | 基于Spark的高性能向量化查询引擎

简介: 由阿里云策划并成功举办的BigData和AI 见面会2020第二季在上海落下帷幕。在此次见面会上,几位业界大咖分别分享了有关大数据和AI的见解、洞察和领先技术等内容。本篇内容是由开源界知名的Databricks公司的技术主管范文臣分享的关于《基于Spark的高性能向量化查询引擎》。

嘉宾:范文臣
Databricks 开源组技术主管,Apache Spark Committer、PMC成员,Spark开源社区核心开发之一。

视频地址:https://developer.aliyun.com/live/245461
正文:
Databricks最新开发的一款基于Spark的高性能向量化查询引擎——Delta,是基于ApacheSpark 3.0构建、完全兼容Spark API,并且能够通过以下方式加快SQL和DataFrame工作负载:
1、改进的查询优化器
2、本机矢量化执行引擎
3、缓存

一、优化器

优化器是基于Spark的CPU和实时运行动态优化打造的。Databricks内部利用更加高级的统计信息来提升性能,例如star schema workload可以达到最高18倍的性能提升。
image.png

二、缓存层

缓存层可以自动帮用户缓存积累的数据,它是基于MVMe SSDs打造的,可以把数据转化成内存优化的格式放在SSD中,然后可以更快的加速CPU性能,这个特点可以让workload有5倍性能提升。

image.png

三、本地化执行引擎

Databricks近几年一直在致力于提升引擎性能,要达到这样的目的,可以从两个层面来看。
第一是硬件趋势,这是做性能优化的基础;第二是用户场景,这是性能优化的目标,有效的性能优化是可以给客户带来收益的。

第一、硬件趋势
2015年基于Spark Summit调研显示(如下图),2010年硬件的基本情况是存
50+MB/s(HDD),网络是1Gpbs,CPU是~3GHz;五年后,存储和网络都有了10倍以上的提升,但是CPU却并没有什么变化。
image.png

基于这样的调研结果,Databricks推出了钨丝计划,目标就是让引擎加速CPU,充分调动CPU性能。CPU有自己的缓存,CPU访问缓存和内存中间有巨大的性能鸿沟,所以充分调动CPU性能就是,如何设置数据结构让内存数据进到CUP缓存更加高效。要达到这样的目的,可以让代码生成得更加精简。另外一个方法就是以do one来降低局势的消耗。

2020年,硬件的变化让io性能有了进一步提升。SSD有了NVMe接口,同时有了超高速网络,但CPU仍然是3赫兹。那么当下我们的挑战是在这样的硬件条件下,如何最大化CPU性能。

image.png

第二、用户场景趋势
当下企业越来越强调敏捷性,业务需要适用市场变化而不停的变化。在这种用户场景下,数据模型就没有精力和时间去仔细打磨,往往会造成刚刚设计好的数据模型,因为业务的变化而全部推翻了。同时,数据限制也没有设置,更为灵活的字符串类型受到追捧。

在这种情况下,当数据越来越多,中间还夹杂着半结构化和非结构化,如何在保证敏捷性的前提下提升性能呢?Photon,即本地化执行引擎,就是解决上面问题的产品。

Photon是Datastricks用C++写的引擎,利用了向量化技术在技术层面和指令层面实现向量化;也会针对用户的敏捷需求,在半结构化和非结构化的前提下对数据做优化。
image.png

如何用CPU数据并行的特性改写执行引擎?
image.png

首先如下图所示,列式存储更高效,它的优势是:其一因为每一列的数据式一个类型,可以直接被压缩为存储;其次内存访问顺序是线性的,这样CPU就可以预估即将要访问的数据并提前加载到缓存里,从而达到提升性能目的。

另外当对不同列进行操作时候,所使用的简单的代码也更容易被反编译为机器码,也就是可以用CPU特性去执行代码。
image.png

如何利用指令并行改写执行引擎?
image.png

Hash Table是一个在SQL引擎中非常重要的数据结构。如下图举例,假设有group by这样的query,它是怎么实现的呢?首先构建一个Hash Table,然后用for循环去访问数据,并对每个数据算出Hash值,并确定在Hash Table的哪个位置存数据。然后比较数据是否正确,如果没问题就可以加起来。
image.png

上图简单的代码瓶颈在绿色部分,即访问数组。因为每个数据的Hash值是随机的,每次算出来都不一样,这种访问方式是非常低效的。其实在这期间大部分CPU的时间都在等待数据从内存进到CPU缓存,这个转换时间占了2/3,这对于Group by的操作是非常浪费的事情。

基于这样的情况,如何优化呢?

image.png

由上图可以看出,这段代码分做了四件事情。第一是算Hash值,第二是访问内存拿到Key,第三是把Key做比较,第四是做加法。最慢的是访问Key,而且整个循环体也非常大,会导致CPU比较难优化。基于这种情况,实现优化的方法就是可以将循环变得简单些。

如下图可以将一个循环拆成3个循环,反而能够让这个过程变得更快。原因是,将上文提到的绿色代码瓶颈做成一个循环,就可以完成CPU的优化。
image.png

上述简单的操作完成后,内存诊断时间可以降低1/4,同时内存时间也降低了。

image.png

这样调整后,通过测试可以发现系统优化后整体性能可以提升3倍。

image.png

关于如何优化结构化和半结构化数据,主要展开介绍下如何针对String类型优化。
image.png

第一个方法是用C++将自定义函数全部重写一遍,性能可以提高1-2两倍,但是这样的提升不大;
在将第二个方法前,先介绍一下背景知识。当下主流的字符串是编码格式,这种编码格式的特点是变长,比如字母是一个字符,中文是三个字符。这样的编码方式不浪费空间,空间利用高效,但是计算比较低效。
image.png

假设用户数据中大部分是英文字符,掺杂着中文字符或其他字符,这种场景如何优化呢?可以将String优化分为两步。
image.png

第一步,确认String是不是ASCII编码;通过String优化后,可以达到60GB/s/核的处理性能。
第二步,如果不是ASCII编码,那么可以按照C++编码格式一个个处理。

通过以上的处理,性能提升会非常明显。

image.png
image.png

总结

 Photon是用本地语言写的向量化执行引擎,它主要利用了数据向量化技术;并且能够针对用户敏捷需求做业务场景优化;
 Engine产品结果主要包括优化基层、存储缓存层和本地化执行层;其中本地化执行层还在内测阶段,用户需要跟销售联系才能拿到内测资格,其他资源都是公开的,可以通过阿里云获取,在阿里云上叫DDI(阿里云批流一体大数据分析引擎)

image.png

关于Databricks
Databricks是属于 Spark 的商业化公司,由美国伯克利大学 AMP 实验室的 Spark 大数据处理系统多位创始人联合创立。Databricks 致力于提供基于 Spark 的云服务,可用于数据集成和数据管道等任务。

欢迎交流
对阿里云E-MapReduce感兴趣的朋友可以申请加群交流,加入钉钉群(如下)@扬流
image.png

相关文章
|
5月前
|
SQL 人工智能 分布式计算
ODPS十五周年实录|构建 AI 时代的大数据基础设施
本文根据 ODPS 十五周年·年度升级发布实录整理而成,演讲信息如下: 张治国:阿里云智能集团技术研究员、阿里云智能计算平台事业部 ODPS-MaxCompute 负责人 活动:【数据进化·AI 启航】ODPS 年度升级发布
245 9
|
6月前
|
人工智能 分布式计算 DataWorks
大数据AI产品月刊-2025年7月
大数据& AI 产品技术月刊【2025年7月】,涵盖7月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
|
7月前
|
数据采集 人工智能 大数据
10倍处理效率提升!阿里云大数据AI平台发布智能驾驶数据预处理解决方案
阿里云大数据AI平台推出智能驾驶数据预处理解决方案,助力车企构建高效稳定的数据处理流程。相比自建方案,数据包处理效率提升10倍以上,推理任务提速超1倍,产能翻番,显著提高自动驾驶模型产出效率。该方案已服务80%以上中国车企,支持多模态数据处理与百万级任务调度,全面赋能智驾技术落地。
988 0
|
8月前
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
417 0
|
4月前
|
存储 人工智能 安全
拔俗AI临床大数据科研分析平台:让医学研究更智能、更高效
阿里云原生AI临床大数据科研平台,打通异构医疗数据壁垒,实现智能治理、可视化分析与多中心安全协作,助力医院科研提速增效,推动精准医疗发展。
748 1
|
4月前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)
295 7
|
5月前
|
人工智能 关系型数据库 数据库
公募REITs专属AI多智能体查询分析项目
公募REITs专属AI多智能体查询分析项目。本项目是基于 OpenAI Agent 框架的多智能体项目,提供二级市场数据查询分析、招募说明书内容检索、公告信息检索、政策检索等多板块查询服务。支持图标绘制、文件生成。
公募REITs专属AI多智能体查询分析项目