在 Spark AI Summit 的第一天会议中,数砖重磅发布了 Delta Engine。这个引擎 100% 兼容 Apache Spark 的向量化查询引擎,并且利用了现代化的 CPU 架构,优化了 Spark 3.0 的查询优化器和缓存功能。这些特性显著提高了 Delta Lake 的查询性能。当然,这个引擎目前只能在 Databricks Runtime 7.0 中使用。

数砖研发 Delta Engine 的目的

过去十年,存储的速度从 50MB/s(HDD)提升到 16GB/s(NvMe);网络的速度从 1Gbps 提升到 100Gbps;但是 CPU 的主频从 2010 年的 3GHz 到现在基本不变。

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

NVM Express(NVMe),或称非易失性内存主机控制器接口规范(英语:Non-Volatile Memory Host Controller Interface Specification,缩写:NVMHCIS),是一个逻辑设备接口规范。它是与 AHCI 类似的、基于装置逻辑接口的汇流排传输协定规范(相当于通讯协议中的应用层),用于访问通过 PCI Express(PCIe)总线附加的非挥发性记忆体介质(例如采用快闪记忆体的固态硬碟机),虽然理论上不一定要求 PCIe 汇流排协定。历史上,大多数 SSD 使用如 SATA、SAS 或光纤通道等接口与计算机接口的总线连接。随着固态硬盘在大众市场上的流行,SATA 已成为个人电脑中连接 SSD 的最典型方式;但是,SATA 的设计主要是作为机械硬盘驱动器(HDD)的接口,并随着时间的推移越来越难满足速度日益提高的 SSD。随着在大众市场的流行,许多固态硬盘的数据速率提升已经放缓。不同于机械硬盘,部分 SSD 已受到 SATA 最大吞吐量的限制。

在 NVMe 出现之前,高端 SSD 只得以采用 PCI Express 总线制造,但需使用非标准规范的接口。若使用标准化的 SSD 接口,操作系统只需要一个驱动程序就能使用符合规范的所有 SSD。这也意味着每个 SSD 制造商不必用额外的资源来设计特定接口的驱动程序。

摘抄自 https://zh.wikipedia.org/zh-hans/NVM_Express

从上图可以看出,CPU 主频是目前数据分析的重要瓶颈。

另外,随着业务速度的加快,数据团队用于正确建模数据的时间越来越少。为了更好的业务敏捷性而进行的较差的建模会导致较差的查询性能。比如

•大多数列没有定义 "NOT NULL";•String 时候起来很方便,所以很多人使用 String 来存储日期;•数据越来越不规范,而且数据还在不断的持续生成。

Delta Engine:高性能的查询引擎

为了解决上面的一些问题,数砖专门开发了 Delta Engine,这个引擎专门用于数据分析的加速以及灵活适应多种工作负载。从下图可以看出 Delta Engine 主要包括三个组件:改进的查询优化器、位于执行层和云对象存储之间的缓存层,以及用 C++ 编写的原生向量化执行引擎(Photon),这个引擎可以加速使用 SQL 和 DataFrame 分析 Delta Lake 的工作负载。

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

Delta Engine 的查询优化器扩展了 Spark 3.0 中已有的功能,包括基于成本的优化器(CBO)、自适应查询执行(adaptive query execution)和动态运行时过滤器(dynamic runtime filters),提供了更高级的统计信息,在星型模式工作负载中提供了高达18倍的性能提升。

Delta Engine 的缓存层自动选择要为用户缓存的输入数据,并以一种 CPU 高效的格式对其进行代码转换,以更好地利用 NVMe SSDs 提高的存储速度。这几乎为所有工作负载提供了高达5倍的扫描性能。值得注意的是,在计算引擎中引入缓存在很多产品都可以看到,比如 Snowflake 的数仓产品(参见论文《The Snowflake Elastic Data Warehouse》),在国内,比如阿里云的很多云产品也在往这方面发展,如阿里云的数据湖分析(DLA)。

Delta Engine 在解决数据团队面临的挑战方面最大的创新是原生执行引擎,这个引擎称为 Photon。这个引擎是完全重写的,目的是充分利用现代云硬件来最大化计算性能。这个引擎为所有类型的工作负载带来了性能改进,重要的是,这个引擎和开源的 Spark API 是完全兼容的。

Photon:原生向量化执行引擎

Delta Engine 中最重要的 Photon 是完全使用 C++ 实现的,其通过利用数据级并行和指令级并行大大提升计算能力,大大提升了 Delta Engine 上的 Spark SQL 查询,并且对结构化和非结构化的工作负载都有不同程度的优化。

尽管这么多年 CPU 的主频并没有什么变化,但是并行度却有不同程度的提升,主要包括 data-level 层面上的并行度和指令层面上的并行度。

比如我们的查询为 select sum(value) from table group by key,这个查询底层的实现变成下面的代码:

for(int32_t i = 0; i < batchSize; ++i) {
int32_t bucket = hash(keyCol[i]) % ht->size;if(ht[bucket].key == keyCol[i]) {ht[bucket].value  += valueCol[i];
}
}

上面的代码访问内存(ht[bucket])的指令与计算哈希码(int32_t bucket = hash(keyCol[i]) % ht->size;)、比较键(key == keyCol[i])和加法(ht[bucket].value += valueCol[i];)的指令混合在一起。而且上面的循环体非常大,导致 CPU 很少看到内存访问指令。解决上面的问题是将上面大的循环体修改成更小的循环体,如下:

for(int32_t i = 0; i < batchSize; ++i) {buckets[i] = hash(keyCol[i]) % ht->size;
}for(int32_t i = 0; i < batchSize; ++i) {keys[i] = ht[bucket].key;
}for(int32_t i = 0; i < batchSize; ++i) {
if(keys[i] == keyCol[i]) {ht[buckets[i]].value  += valueCol[i];
}
}

经过上面指令层面的修改,带有 Photon 的 Delta Engine 比传统的引擎提升很多性能,

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

在 TPC-DS 30TB 数据量的测试下的表现提升了 3.3 倍。

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

String 优化

另外,在 String 的处理 Photon 也做了大量的优化。比如在使用 C++ 实现执行引擎之后,String 的 UPPER 和 SUBSTRING 函数操作性能相对 JVM 的实现有了大幅提升,如下:

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

虽然 C++ 实现之后 string 的性能相对 JVM 的性能有所提升,但是数砖团队对这个进一步优化,结合 UTF-8 可变长度的编码和 ASCII 定长的编码,使得 Photon 引擎对字符串的操作进一步提升:

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

引用链接

1.https://databricks.com/blog/2020/06/24/introducing-delta-engine.html

2.https://zh.wikipedia.org/zh-hans/NVM_Express

3.https://www.iteblog.com/archives/9833.html

猜你喜欢

1、Apache Spark 3.0.0 正式版终于发布了,重要特性全面解析

2、来自 Facebook 的 Spark 大作业调优经验

3、Apache Spark 在eBay 的优化

4、Spark 3.0 自适应查询优化介绍,在运行时加速 Spark SQL 的执行性能

过往记忆大数据微信群,请添加微信:fangzhen0219,备注【进群】

全方位解读数砖的 Delta Engine相关推荐

  1. 全面介绍数砖开发 Delta Lake 的第一篇论文

    今年八月,Delta Lake 的第一篇论文发布了,我当时写了个总体介绍:Delta Lake 第一篇论文发布了,感兴趣的朋友可以先看总体介绍,再来详细了解一下本篇论文.因为篇幅较长,全文超3万字,建 ...

  2. kodi 解码器 android,智能电视最强播放器—KODI常见使用技巧全方位解读

    智能电视最强播放器-KODI常见使用技巧全方位解读 2019-10-10 15:19:22 880点赞 9854收藏 510评论 现在智能电视/盒子应该是各家各户的标配,其实智能电视本身在配置和解码能 ...

  3. 从数据预处理到排序算法,全方位解读 Uber AI客服系统 COTA

    文章来源:ATYUN AI平台 Uber利用基于NLP和机器学习构建的COTA客服系统,可以快速高效地解决90%以上的客服问题. 为了打造最佳用户体验,Uber持续优化客户支持流程,让客户支持服务更易 ...

  4. 【免费获取】80+页PPT全方位解读半导体行业

    来源:新材料在线 概要:全方位解读半导体行业

  5. 阿里云实时数仓Hologres年度发布,解读数仓新趋势

    简介:阿里云实时数仓Hologres年度发布,解读数仓新趋势. 1月7日,阿里云实时数仓Hologres发布最新版本,在成本.可用性.在线高可用等多方面进行了能力升级,行存吞吐提升100%,列存吞吐提 ...

  6. 梦幻手游服务器总维护,梦幻西游手游今日维护内容全方位解读

    梦幻西游手游今日维护内容全方位解读,这是职业大神老夏权威分析.因为这位大神对梦幻可以用了如指掌来形容,所以有不懂这次维护是什么意思的玩家,就快来看看这篇文章吧. 解读目录: 1摆摊可指定交易对象:妈妈 ...

  7. 【无标题】AP计算机全方位解读

    内容导读 1 为什么要学习AP计算机科学? 2 学习AP计算机科学需要好的的数学基础吗? 3 AP计算机科学的学习内容 4 AP计算机科学如何考试? 5 学习规划及课程设置 6 AP计算机教材推荐 7 ...

  8. topik怎么读_TOPIK韩语等级考试难不难?过来人全方位解读

    10月21号,笔者参加了60届TOPIK考试,通过沪江韩语对了答案之后,给自己大致估了个分,5级肯定是有的,至于能不能上6级,就要看写作部分阅卷老师了.很多朋友问我这次考试题目如何,下面就把跟这次考试 ...

  9. 阿里研究员、饿了么CTO等10位技术大咖倾囊相授:全方位解读研发效能提升之道!...

    千呼万唤,翘首以待的程序盛宴--第二届研发效能嘉年华如期而至,十位技术大咖现身讲解,狂撒干货:天猫.饿了么.飞猪等创新创业企业带你翱翔高效研发的的海洋.干货满满,等你来听. 第二届研发效能嘉年华是由W ...

最新文章

  1. 机器模拟共情,情感AI正踏足诸多行业
  2. 单链表-单链表A拆分为A(偶)和C(奇) (尾插法建表)
  3. 重写了博客上的代码着色脚本
  4. H5 canvas的 width、height 与style中宽高的区别
  5. php 接口的定义与实现,PHP接口定义与用法示例
  6. Oracle Exception
  7. 云炬VB开发笔记 1初始Visual Basic基础
  8. 尝试使用iReport4.7(基于Ubuntu Desktop 12.04 LTS)
  9. [UVA-1218] Perfect Service(树的最小支配集)
  10. 盘点前 10 名的免费跨浏览器测试工具
  11. 就业管理系统【软件建模与分析UML课设】
  12. 解决Windows10更新后点击左下角开始图标无反应【报错0x800f081f】或点击个性化提示【ms-settings:personalisation-background】错误
  13. 三级等保 MySQL8.0.24审计日志功能开启
  14. 今日头条一个身份证可以注册几个头条号
  15. Codeforces Round #829 cf1753A Cowardly Rooks
  16. 计算机硬件技术基础 徐林,水平定向钻机虚拟现实实训系统硬件研发.ppt
  17. Android文字广告(Textview上下滚动),使用TextSwitcher控件的完整实现
  18. 生物医学数据统计分析-相关性分析
  19. 数据库导入导出方法以及注意事项
  20. Linux中 shell 脚本获取当前工作目录的方法

热门文章

  1. CSS基础笔记——边框样式
  2. python与html网页websocket视频通信,上硬货了
  3. Android学习笔记 二三 多页显示 Flipper的使用
  4. 无人驾驶的劳斯莱斯轿车_劳斯莱斯的第一款无人驾驶概念车,奢华大气还是丑?...
  5. 全差分运放阻抗匹配计算(二)
  6. [股票预测]获取股票K线数据
  7. 服务营销:在老客户身上掘金
  8. VLOOKUP 函数出现 #N/A 错误的 4 种情况(附解决方法)
  9. 删,删,删,就知道删!
  10. 用Python从文件中读取学生成绩,并计算最高分/最低分/平均分