【Gluten】Spark 的向量化执行引擎框架 Gluten
创始人
2025-01-09 11:06:20
0

Gluten 项目主要用于“粘合” Apache Spark 和作为 Backend 的 Native Vectorized Engine。Backend 的选项有很多,目前在 Gluten 项目中已经明确开始支持的有 Velox、Clickhouse 和 Apache Arrow。通过使用Native backend 执行计算,加速 Spark 执行速度,目前在TPCH 测试中使用 velox backend 得到了最多3.6倍加速。下图为 Gluten 整体架构
在这里插入图片描述

plan conversion

spark physical plan 作为输入,使用 substrait 将其转换为 substrait plan,substrait plan作为一个统一的执行计划传递给不同的 native library,在不同的 library 中执行相同的的 pipeline,使用 library自己的算子执行 pipeline
在这里插入图片描述

buffer passing & sharing

gluten 提供两种方法来进行 spark JVM 和 native engine 之间的数据传输,如下图所示

  1. 下图中的绿线。使用 apache arrow 作为内存数据格式,将 velox 中的 velox 格式数据转换为 arrow 格式,使用 arrowColumnarVector 和 spark API 通信。
  2. 第二种方法对第三方数据格式进行了支持,如下图中的红线。对于 clickhouse 数据格式创建了clickhouseVector,使用 clickhouseVector和 spark API 通信。这种方式性能更好,gluten 还在实现下图蓝线使得 velox 性能更好

Fallback Processing

有一个 validate phase 来检验 stage 中的算子是否被 native engine 支持,如果支持则将物理计划的节点替换为 transformer,不支持则仍使用原生 spark的算子,并在算子的前后加上 columnTorow和 rowTocolumn 算子进行格式转换,这两个算子都是用 native library实现的,这会带来额外的开销影响性能

在这里插入图片描述

gluten shuffle

为了针对列式数据进行 shuffle ,gluten 实现了面向列式数据的 shuffle operator(重用了 gluten 前身 gazelle 的代码)

memory management

由 spark 来控制 JVM 和 native library 使用的内存,velox 同时也支持在内存不足时将数据 spill 到磁盘。由于 Native 代码和 Spark Java 代码在同一个进程中运行,因此 Gluten 具备了统一管理 Native 空间和 JVM 空间内存的条件。在 Gluten 中,Native 空间的代码在申请内存的时候,会先向本地的 Memory Pool 申请内存,如果内存不足,会进一步向 JVM 中 Task Memory Manager 申请内存配额,得到相应配额后才会在 Native 空间成功申请下内存。通过这种方式,Native 空间的内存申请也受到 Task Memory Manager 的统一管理。当发生内存不足的现象时,Task Memory Manager 会触发 spill,不管是 Native 还是 JVM 中的 operator 在收到 spill 通知时都会释放内存。

在这里插入图片描述

debug

如果问题来自spark需要运行spark和native library来debug(阴影部分)。如果问题出在 native library,可以将数据和substrait plan dump 下来,只使用 native library 进行复现问题

参考

https://www.youtube.com/watch?v=0Q6gHT_N-1U
https://gluten.apache.org/

相关内容

热门资讯

今日!丫丫老陕游戏辅助(辅助)... 今日!丫丫老陕游戏辅助(辅助)竟然是真的辅助平台(真是有挂)-哔哩哔哩;1、不需要AI权限,帮助你快...
相较于以往!微信江苏小程序游戏... 相较于以往!微信江苏小程序游戏破解器下载(辅助)一贯是有辅助工具(有挂详细)-哔哩哔哩;在进入微信江...
网友热议!顺欣茶楼有没有辅助(... 网友热议!顺欣茶楼有没有辅助(辅助)确实是有辅助器(有挂解密)-哔哩哔哩;1、网友热议!顺欣茶楼有没...
据相关数据显示!聚财app辅助... 据相关数据显示!聚财app辅助(辅助)果然存在有辅助app(有挂攻略)-哔哩哔哩1、每一步都需要思考...
此事引发网友热议!微信小程序微... 此事引发网友热议!微信小程序微乐破解器(辅助)好像真的有辅助app(有挂方式)-哔哩哔哩1、微信小程...
有了最新消息!一起宁德钓蟹作比... 有了最新消息!一起宁德钓蟹作比弊(辅助)切实是真的辅助修改器(的确有挂)-哔哩哔哩一起宁德钓蟹作比弊...
更值得关注的是!新青鸟辅助(辅... 更值得关注的是!新青鸟辅助(辅助)一直是有辅助下载(有挂实锤)-哔哩哔哩1、玩家可以在新青鸟辅助透视...
出乎意料的是!边锋辅助(辅助)... 出乎意料的是!边锋辅助(辅助)一直真的有辅助挂(有挂总结)-哔哩哔哩1、上手简单,内置详细流程视频教...
此事备受玩家关注!广东雀神智能... 此事备受玩家关注!广东雀神智能插件是真有挂(辅助)一直真的是有辅助app(有挂方法)-哔哩哔哩1、下...
刚刚!老友十三辅助(辅助)一贯... 刚刚!老友十三辅助(辅助)一贯真的是有辅助平台(有挂方法)-哔哩哔哩1、老友十三辅助脚本辅助下载、老...