大数据和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

相关文章
|
11月前
|
数据采集 缓存 大数据
【赵渝强老师】大数据日志采集引擎Flume
Apache Flume 是一个分布式、可靠的数据采集系统,支持从多种数据源收集日志信息,并传输至指定目的地。其核心架构由Source、Channel、Sink三组件构成,通过Event封装数据,保障高效与可靠传输。
544 1
|
11月前
|
存储 人工智能 安全
拔俗AI临床大数据科研分析平台:让医学研究更智能、更高效
阿里云原生AI临床大数据科研平台,打通异构医疗数据壁垒,实现智能治理、可视化分析与多中心安全协作,助力医院科研提速增效,推动精准医疗发展。
1781 1
|
11月前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)
684 7
|
11月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
820 0
|
人工智能 大数据 安全
拔俗AI临床大数据科研分析平台:用智能技术加速医学研究新突破
AI临床大数据科研平台基于云原生架构,融合医疗NLP、联邦学习与智能分析技术,破解非结构化数据处理难、多源数据融合难、统计周期长等痛点,实现数据治理、智能分析与安全协作全链路升级,赋能医学科研高效、安全、智能化发展。
501 0
|
11月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
2444 96
|
12月前
|
人工智能 安全 中间件
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
9 月 26 日,2025 云栖大会 AI 中间件:AI 时代的中间件技术演进与创新实践论坛上,阿里云智能集团资深技术专家林清山发表主题演讲《未来已来:下一代 AI 中间件重磅发布,解锁 AI 应用架构新范式》,重磅发布阿里云 AI 中间件,提供面向分布式多 Agent 架构的基座,包括:AgentScope-Java(兼容 Spring AI Alibaba 生态),AI MQ(基于Apache RocketMQ 的 AI 能力升级),AI 网关 Higress,AI 注册与配置中心 Nacos,以及覆盖模型与算力的 AI 可观测体系。
1916 87
|
11月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
984 30