当前位置: 首页 > news >正文

Apache Gluten终极指南:让JVM SQL引擎性能飙升的原生执行方案

Apache Gluten终极指南:让JVM SQL引擎性能飙升的原生执行方案

【免费下载链接】glutenGluten is a middle layer responsible for offloading JVM-based SQL engines' execution to native engines.项目地址: https://gitcode.com/GitHub_Trending/glu/gluten

Apache Gluten是一个强大的中间层解决方案,专为将基于JVM的SQL引擎执行卸载到原生引擎而设计。它能够显著提升SQL引擎的性能,为大数据处理带来新的突破。无论你是数据工程师、开发人员还是大数据爱好者,本指南都将带你全面了解Apache Gluten的核心功能、架构优势、性能表现以及快速上手的方法。

为什么选择Apache Gluten?

在当今数据量爆炸的时代,JVM SQL引擎面临着越来越大的性能压力。Apache Gluten应运而生,它通过创新的原生执行方案,为解决这一难题提供了全新的思路。

传统的JVM SQL引擎在处理大规模数据时,往往受到JVM内存管理、垃圾回收等因素的限制,导致性能瓶颈。而Apache Gluten通过将执行逻辑卸载到原生引擎,充分利用了原生代码的高效性和资源管理能力,从而实现了性能的大幅提升。

核心优势

Apache Gluten具有以下几个核心优势:

  1. 卓越的性能提升:通过原生执行方案,显著提高SQL查询的执行速度,降低延迟。
  2. 广泛的兼容性:支持多种JVM SQL引擎和原生后端,如Spark与Velox、ClickHouse等的集成。
  3. 丰富的功能支持:涵盖了大量的SQL函数和操作符,满足复杂查询需求。
  4. 易用的用户界面:提供直观的UI界面,方便监控和管理Gluten的运行状态。

Apache Gluten架构解析

Apache Gluten的架构设计精巧,它作为中间层连接JVM SQL引擎和原生执行引擎,实现了高效的执行卸载。

ClickHouse后端架构

ClickHouse后端是Apache Gluten的重要组成部分,其架构如图所示:

从图中可以看出,Spark通过Gluten SparkPlugin与ClickHouse后端进行交互。ClickHouse Spark Catalog基于Spark DataSource V2和Delta,实现了数据的高效访问。Substrait Plan作为执行计划的桥梁,将查询任务分发到各个Executor节点。每个Executor节点中,Gluten与libch.so协同工作,从JuiceFS等存储系统中读取数据,并最终将结果存储到对象存储中。

执行流程

Apache Gluten的执行流程清晰高效,如图所示:

Transformer是执行流程的核心,它负责将SQL查询转换为一系列的执行操作。Parquet Read操作读取数据,Project操作进行列选择和投影,Aggregate操作进行聚合计算。Columnar Shuffle和Columnar Exchange operator则负责数据的高效传输和交换,确保整个执行过程的流畅性。

性能表现:让SQL引擎如虎添翼

Apache Gluten的性能表现令人印象深刻,通过与原生Spark的对比测试,充分展示了其在提升SQL引擎性能方面的巨大潜力。

TPC-H查询性能对比

在TPC-H Likely工作负载的10个查询中,Gluten + Velox后端与Vanilla Spark3.1.1的性能对比结果如下:

从柱状图中可以清晰地看到,在各个查询(q4、q22、q15、q14、q12、q6、q1、q19、q3、q13)中,Gluten + Velox后端的执行速度均优于Vanilla Spark3.1.1,其中q4查询的性能提升最为显著,Gluten + Velox的执行时间约为3.63,而Vanilla Spark3.1.1则为更高的值,充分证明了Apache Gluten在提升SQL查询性能方面的卓越能力。

内存使用分析

Apache Gluten不仅在执行速度上有优势,在内存管理方面也表现出色。通过内存分析工具,可以直观地了解Gluten的内存使用情况:

该图展示了Gluten在执行过程中的内存分配和释放情况,帮助开发人员更好地理解和优化内存使用,进一步提升系统性能。

执行追踪与监控

为了方便开发人员进行性能调优和问题排查,Apache Gluten提供了强大的执行追踪功能:

通过Trace-viewer界面,可以详细查看各个执行阶段的时间分布、函数调用等信息,精准定位性能瓶颈,为系统优化提供有力支持。

功能与兼容性

Apache Gluten支持丰富的功能,并且与多种组件具有良好的兼容性,能够满足不同场景下的需求。

函数支持情况

Apache Gluten支持大量的SQL函数,其与Spark和Velox的函数支持情况如图所示:

图中展示了Spark支持387个函数,Velox支持204个函数,而Gluten支持164个函数,其中127个函数是Spark和Velox共同支持的,充分体现了Gluten在函数兼容性方面的优势。

操作符架构

Apache Gluten的操作符架构设计灵活,能够高效地处理各种SQL操作:

该架构基于SparkPlan,通过SubstraitTransformerSupport、UnaryExecNode、BinaryExecNode和LeafExecNode等组件,实现了对不同类型操作符的支持,如SubstraitTransformerExec、ConditionProjectExecTransformer、HashJoinTransformer和DataSourceScanTransformer等,确保了SQL查询的高效执行。

用户界面

Apache Gluten提供了直观易用的用户界面,方便用户监控和管理查询执行情况:

在Gluten SQL/DataFrame界面中,用户可以查看Gluten的构建信息,包括后端类型、版本、修订时间等。同时,还可以查看查询列表,了解每个查询的描述、Gluten节点数量和回退节点数量等信息,帮助用户实时掌握系统运行状态。

快速上手:从零开始使用Apache Gluten

环境准备

在开始使用Apache Gluten之前,需要准备好相应的环境。确保你的系统满足以下要求:

  • Java 8或更高版本
  • Scala 2.12或更高版本
  • Spark 3.1.1或兼容版本

安装步骤

  1. 克隆Apache Gluten仓库:
git clone https://gitcode.com/GitHub_Trending/glu/gluten
  1. 进入项目目录:
cd gluten
  1. 按照项目文档中的说明进行编译和安装。具体的编译步骤可以参考项目中的docs/get-started/getting-started.md文件。

配置与使用

安装完成后,需要进行相应的配置才能使用Apache Gluten。你可以通过修改Spark的配置文件,启用Gluten插件,并指定使用的后端引擎(如Velox或ClickHouse)。

配置完成后,你就可以像使用普通Spark一样提交SQL查询,Apache Gluten会自动将符合条件的执行逻辑卸载到原生引擎,从而提升查询性能。

总结

Apache Gluten作为一款强大的中间层解决方案,通过将JVM SQL引擎的执行卸载到原生引擎,为大数据处理带来了显著的性能提升。其卓越的架构设计、丰富的功能支持和良好的兼容性,使其成为提升SQL引擎性能的理想选择。

无论你是在构建大规模数据处理平台,还是在优化现有的SQL查询性能,Apache Gluten都能为你提供有力的支持。希望本指南能够帮助你快速了解和上手Apache Gluten,让你的JVM SQL引擎性能飙升!

如果你想深入了解Apache Gluten的更多细节,可以查阅项目的官方文档,如docs/developers/NewToGluten.md等,获取更全面的信息。让我们一起探索Apache Gluten的无限可能,为大数据处理注入新的活力!

【免费下载链接】glutenGluten is a middle layer responsible for offloading JVM-based SQL engines' execution to native engines.项目地址: https://gitcode.com/GitHub_Trending/glu/gluten

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/3690447.html

相关文章:

  • 终极指南:Playlist-AutoUpdater如何实现M3U播放列表每日自动更新?
  • Path of Building PoE2终极指南:告别盲目构建,用数据打造最强角色
  • OpenArk内核驱动加载问题深度解析:从入门到精通的Windows反Rootkit工具实战指南
  • 如何安装BeautifulDiscord?3分钟快速上手教程
  • 如何快速提升学术论文质量:研究者的完整写作框架指南
  • 从入门到精通:PyTorch Geometric图神经网络实战完全指南
  • 贡献你的声音:如何为heylinda-app录制冥想音频,成为开源项目的一部分
  • JAVA毕设项目:基于SpringBoot的体育资源数字化预约管控系统设计 场馆预约排班与用户评价管理系统 (源码+文档,讲解、调试运行,定制等)
  • OpCore-Simplify:让普通PC安装macOS变得像搭积木一样简单
  • PDF补丁丁:开源免费的PDF文档处理终极指南,轻松解决PDF编辑难题
  • 计算机JAVA毕设实战-基于 SpringBoot+Vue 的手袋生产物料管控系统 手袋厂原材料采购与成品仓储管理平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 构建自主AI伴侣系统:AIRI开源框架技术深度解析
  • 巧用Trace ID与Span:Java分布式系统故障排查实战
  • 单细胞测序告诉你有哪些细胞,谁来告诉你它们在哪里?
  • 碧蓝幻想Relink战斗数据分析神器:GBFR-Logs完全指南,5分钟掌握你的真实伤害!
  • AI写作接单平台避坑指南,2024最新佣金结构深度对比:这3个平台已悄然提高抽成至42%
  • LP8555 LED背光驱动芯片寄存器配置与PCB布局实战指南
  • MATLAB小波变换图像融合实战指南
  • 新手必看:parboiled2常见错误与调试技巧
  • 新手必看!2026表单小程序开发哪个公司好?
  • WQFN封装芯片PCB布局与焊接工艺全解析:以LM27965为例
  • 智能体面试准备(五):规划与任务分解——从 Plan-and-Execute 到动态重规划的工程实现
  • LM8330外设控制器:嵌入式键盘扫描与PWM调光实战解析
  • LM10524EVM评估板实战指南:从硬件解析到电源性能测试
  • Next.js-Prisma-Boilerplate扩展指南:集成第三方服务与自定义功能
  • 3分钟掌握Pock:让MacBook Touch Bar变身高效生产力中心
  • 通义千问图片生成性能压测实录:单卡A10 12GB下并发32路稳定输出的8项硬核调参参数表(附可运行Docker镜像)
  • 如何快速入门Perl开发?Awesome Perl精选10大入门必备工具与框架
  • QMS与MES的区别:从质量控制到生产执行
  • 解密shortcut-models核心原理:为什么它比扩散模型和一致性模型更快?