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具有以下几个核心优势:
- 卓越的性能提升:通过原生执行方案,显著提高SQL查询的执行速度,降低延迟。
- 广泛的兼容性:支持多种JVM SQL引擎和原生后端,如Spark与Velox、ClickHouse等的集成。
- 丰富的功能支持:涵盖了大量的SQL函数和操作符,满足复杂查询需求。
- 易用的用户界面:提供直观的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或兼容版本
安装步骤
- 克隆Apache Gluten仓库:
git clone https://gitcode.com/GitHub_Trending/glu/gluten- 进入项目目录:
cd gluten- 按照项目文档中的说明进行编译和安装。具体的编译步骤可以参考项目中的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),仅供参考