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

相关文章
|
2月前
|
人工智能 API 开发工具
AskTable:可嵌入任何系统的 AI 数据智能体引擎
AskTable 是一款以 Table 为核心的数据 AI 基础设施。它通过标准化 API、SDK、iFrame 与智能体协议(MCP),让 AI 能直接理解、查询和分析表格数据,轻松嵌入企业现有系统。 AskTable 提供从数据接入、语义分析到可视化生成的完整能力,可无缝集成至网页、移动端、钉钉、企业微信或 Dify/HiAgent 等智能体平台。
492 157
|
2月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
|
2月前
|
存储 人工智能 安全
拔俗AI临床大数据科研分析平台:让医学研究更智能、更高效
阿里云原生AI临床大数据科研平台,打通异构医疗数据壁垒,实现智能治理、可视化分析与多中心安全协作,助力医院科研提速增效,推动精准医疗发展。
|
2月前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)
|
2月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
|
2月前
|
存储 人工智能 搜索推荐
拔俗AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教融合大语言模型、教育知识图谱、多模态感知与智能体技术,重构“教、学、评、辅”全链路。通过微调LLM、精准诊断错因、多模态交互与自主任务规划,实现个性化教学。轻量化部署与隐私保护设计保障落地安全,未来将向情感感知与教育深度协同演进。(238字)
|
2月前
|
机器学习/深度学习 人工智能 搜索推荐
拔俗AI学伴智能体系统:基于大模型与智能体架构的下一代个性化学习引擎
AI学伴智能体系统融合大模型、多模态理解与自主决策,打造具备思考能力的个性化学习伙伴。通过动态推理、长期记忆、任务规划与教学逻辑优化,实现千人千面的自适应教育,助力因材施教落地,推动教育公平与效率双提升。(238字)
|
人工智能 大数据 安全
拔俗AI临床大数据科研分析平台:用智能技术加速医学研究新突破
AI临床大数据科研平台基于云原生架构,融合医疗NLP、联邦学习与智能分析技术,破解非结构化数据处理难、多源数据融合难、统计周期长等痛点,实现数据治理、智能分析与安全协作全链路升级,赋能医学科研高效、安全、智能化发展。
|
人工智能 大数据 Apache
大数据&AI的16种可能,2020阿里云客户最佳实践合集下载
2020年9月18日下午13:00云栖大会正式发布 《大数据&AI的16种可能,2020阿里云客户最佳实践合集》
73868 4
大数据&AI的16种可能,2020阿里云客户最佳实践合集下载