【Gluten】Spark 的向量化执行引擎框架 Gluten

这篇具有很好参考价值的文章主要介绍了【Gluten】Spark 的向量化执行引擎框架 Gluten。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Gluten 项目主要用于“粘合” Apache Spark 和作为 Backend 的 Native Vectorized Engine。Backend 的选项有很多,目前在 Gluten 项目中已经明确开始支持的有 Velox、Clickhouse 和 Apache Arrow。通过使用Native backend 执行计算,加速 Spark 执行速度,目前在TPCH 测试中使用 velox backend 得到了最多3.6倍加速。下图为 Gluten 整体架构
【Gluten】Spark 的向量化执行引擎框架 Gluten,spark,大数据,分布式

plan conversion

spark physical plan 作为输入,使用 substrait 将其转换为 substrait plan,substrait plan作为一个统一的执行计划传递给不同的 native library,在不同的 library 中执行相同的的 pipeline,使用 library自己的算子执行 pipeline
【Gluten】Spark 的向量化执行引擎框架 Gluten,spark,大数据,分布式

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 性能更好

【Gluten】Spark 的向量化执行引擎框架 Gluten,spark,大数据,分布式

Fallback Processing

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

【Gluten】Spark 的向量化执行引擎框架 Gluten,spark,大数据,分布式

gluten shuffle

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

【Gluten】Spark 的向量化执行引擎框架 Gluten,spark,大数据,分布式

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 通知时都会释放内存。

【Gluten】Spark 的向量化执行引擎框架 Gluten,spark,大数据,分布式

debug

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

【Gluten】Spark 的向量化执行引擎框架 Gluten,spark,大数据,分布式

参考

https://www.youtube.com/watch?v=0Q6gHT_N-1U
https://gluten.apache.org/文章来源地址https://www.toymoban.com/news/detail-850760.html

到了这里,关于【Gluten】Spark 的向量化执行引擎框架 Gluten的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据面试题:Spark的任务执行流程

    面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)Spark的工作流程?2)Spark的调度流程;3)Spark的任务调度原理;4)Spark的任务提交和执行流程;5)Spark任务调度到yarn上面,流程;6)Spark job提交过程讲一下?7)Spark On YARN流程,Client与

    2024年02月12日
    浏览(33)
  • spark -- 数据计算框架

    spark作为大数据组件中不可或缺的一大部分 是我们学习和了解大数据的过程中必须要经历和学习的部分 本人将自己当初学习大数据的一点点心得和体会作为笔记 希望可以给同样在学习大数据同学提供一点点的帮助 同时也希望可以得到大家的指正 spark的特点 spark和mr的比较

    2024年02月05日
    浏览(29)
  • 大数据课程K5——Spark的框架核心概念

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 了解Spark的框架核心概念; ⚪ 掌握Spark的Spark集群模式安装; ⚪ 掌握Spark的Spark架构; ⚪ 掌握Spark的Spark调度模块; 1. RDD。弹性分布式数据集,是Spark最核心的数据结构。有分区机制,所以可以分布式进行处

    2024年02月11日
    浏览(27)
  • 大数据开源框架之基于Spark的气象数据处理与分析

    Spark配置请看: (30条消息) 大数据开源框架环境搭建(七)——Spark完全分布式集群的安装部署_木子一个Lee的博客-CSDN博客 目录 实验说明: 实验要求: 实验步骤: 数据获取: 数据分析: 可视化: 参考代码(适用于python3): 运行结果:         本次实验所采用的数据,从中

    2024年02月03日
    浏览(38)
  • Hadoop与Spark:大数据处理框架的比较与选择

    Hadoop与Spark:大数据处理框架的比较与选择 在大数据的时代背景下,数据处理和分析的需求日益增长。为了满足这些需求,开发者们创造了许多大数据处理框架,其中最为人们熟知的可能就是Hadoop和Spark了。这两者各有其优势,选择哪一个取决于你的具体需求。下面我们将对

    2024年01月25日
    浏览(33)
  • Doris向量化执行引擎原理(概述)

    一、向量化执行引擎的概述 向量化执行引擎是一种高效的数据处理方式,它将数据分为多个向量进行处理,能够充分利用 CPU 的 SIMD 指令集,提高数据处理的效率。在 Doris 中,向量化执行引擎被广泛应用于查询优化、数据压缩、聚合计算等方面,能够显著提高 Doris 的查询性

    2024年02月14日
    浏览(28)
  • 降低 Spark 计算成本 50.18 %,使用 Kyligence 湖仓引擎构建云原生大数据底座,为计算提速 2x

    2023 中国开源未来发展峰会于 5 月 13 日成功举办。在大会开源原生商业分论坛,Kyligence 解决方案架构高级总监张小龙发表《云原生大数据底座演进 》主题演讲,向与会嘉宾介绍了他对开源发展的见解,数据底座向云原生湖仓一体架构演进的趋势,以及 Kyligence 湖仓引擎能够在

    2024年02月05日
    浏览(32)
  • 矩阵的向量化

    向量化即将一个矩阵重新排列,将它的每一列相连组成一个新的列向量。 向量化算子是做矩阵等式转换的重要角色,其中W与U之间的符号为克罗内克积。 转载学习:https://zhuanlan.zhihu.com/p/384601679

    2024年02月16日
    浏览(21)
  • 大数据开源框架环境搭建(七)——Spark完全分布式集群的安装部署

    前言:七八九用于Spark的编程实验 大数据开源框架之基于Spark的气象数据处理与分析_木子一个Lee的博客-CSDN博客_spark舆情分析 目录 实验环境: 实验步骤: 一、解压 二、配置环境变量:  三、修改配置文件  1.修改spark-env.sh配置文件: 2.修改配置文件slaves: 3.分发配置文件:

    2024年02月11日
    浏览(35)
  • Spark六:Spark 底层执行原理SparkContext、DAG、TaskScheduler

    学习Spark运行流程 学习链接:https://mp.weixin.qq.com/s/caCk3mM5iXy0FaXCLkDwYQ 流程: SparkContext向管理器注册并向资源管理器申请运行Executor 资源管理器分配Executor,然后资源管理器启动Executor Executor发送心跳至资源管理器 SparkContext构建DAG有向无环图 将DAG分解成Stage(TaskSet) 把Stage发送给

    2024年02月01日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包