Apache Gluten TPC-DS基准测试:如何用原生加速实现10倍性能提升
Apache Gluten TPC-DS基准测试如何用原生加速实现10倍性能提升【免费下载链接】glutenGluten is a middle layer responsible for offloading JVM-based SQL engines execution to native engines.项目地址: https://gitcode.com/GitHub_Trending/glu/glutenApache Gluten是一个中间层框架负责将基于JVM的SQL引擎执行任务卸载到原生引擎从而显著提升大数据处理性能。本文将详细介绍如何通过Gluten在TPC-DS基准测试中实现高达10倍的性能提升帮助用户快速掌握这一强大工具的使用方法。为什么选择Gluten进行TPC-DS性能优化TPC-DS是数据仓库领域广泛使用的基准测试套件包含99个复杂查询涵盖了多种数据处理场景。传统的JVM-based SQL引擎在处理这些查询时往往面临内存占用高、执行效率低等问题。Gluten通过将执行逻辑下沉到原生引擎如Velox、ClickHouse充分利用原生代码的高效性和低开销特性实现了性能的跨越式提升。Gluten的核心优势原生执行加速将SQL执行计划翻译为原生代码执行减少JVM overhead多后端支持同时支持Velox和ClickHouse等多种高性能原生引擎无缝集成与Spark等主流大数据框架深度整合无需修改现有代码全面兼容完整支持TPC-DS所有99个查询无需担心功能缺失TPC-DS性能对比Gluten vs 传统Spark通过实际测试数据可以清晰看到Gluten带来的性能提升。以下是使用GlutenVelox和GlutenClickHouse后端与传统Spark在TPC-DS 10个典型查询上的性能对比图1GlutenVelox后端与传统Spark3.1.1在TPC-DS 10个查询上的性能对比单位秒数值越低越好图2GlutenClickHouse后端与传统Spark3.1.1在TPC-DS 10个查询上的性能对比单位秒数值越低越好从测试结果可以看出在大多数查询中GlutenVelox和GlutenClickHouse都能提供2-5倍的性能提升部分复杂查询甚至达到10倍加速效果。这种性能优势在大规模数据处理场景下尤为明显。如何快速部署Gluten进行TPC-DS测试环境准备Gluten支持多种操作系统和Spark版本推荐配置如下操作系统Ubuntu20.04/22.04或CentOS7/8Spark版本3.3.1, 3.4.4, 3.5.5, 4.0.2, 4.1.1JDK版本OpenJDK 8或17内存要求至少64GB推荐128GB以上一键部署Gluten克隆仓库git clone https://gitcode.com/GitHub_Trending/glu/gluten cd gluten使用脚本一键构建# 构建GlutenVelox后端 ./dev/buildbundle-veloxbe.sh # 如需启用增强特性如TPC-DS Q95优化 ./dev/buildbundle-veloxbe.sh --enable_enhanced_featuresON配置Spark使用Gluten在spark-defaults.conf中添加以下配置spark.pluginsorg.apache.gluten.GlutenPlugin spark.driver.extraClassPath/path/to/gluten/package/target/gluten-velox-bundle-spark3.x_2.12-xxx.jar spark.executor.extraClassPath/path/to/gluten/package/target/gluten-velox-bundle-spark3.x_2.12-xxx.jar spark.memory.offHeap.enabledtrue spark.memory.offHeap.size20g spark.shuffle.managerorg.apache.spark.shuffle.sort.ColumnarShuffleManager运行TPC-DS基准测试的完整步骤生成TPC-DS测试数据Gluten提供了便捷的数据生成脚本支持多种数据格式和规模# 生成Parquet格式的TPC-DS数据规模因子100 ./tools/workload/tpcds/gen_data/parquet_dataset/tpcds-datagen-parquet.sh 100执行TPC-DS查询使用提供的Scala脚本提交测试任务export GLUTEN_JAR/path/to/gluten/package/target/gluten-velox-bundle-spark3.x_2.12-xxx.jar cat ./tools/workload/tpcds/run_tpcds/tpcds_parquet.scala | spark-shell --name tpcds_test \ --master yarn --deploy-mode client \ --conf spark.pluginsorg.apache.gluten.GlutenPlugin \ --conf spark.driver.extraClassPath${GLUTEN_JAR} \ --conf spark.executor.extraClassPath${GLUTEN_JAR} \ --num-executors 6 --executor-cores 6 --executor-memory 25g性能分析与可视化Gluten提供了强大的性能分析工具可以帮助用户深入理解查询执行情况图3使用Chrome Tracing工具查看TPC-DS查询执行详情通过分析工具用户可以查看每个查询的CPU使用率、内存吞吐量识别性能瓶颈所在的执行阶段比较不同查询的执行效率优化资源配置和查询计划最佳实践提升TPC-DS性能的关键配置内存优化# 启用Velox内存管理 spark.gluten.sql.columnar.backend.velox.spillStrategyauto # 设置合理的堆外内存大小 spark.memory.offHeap.size40g执行策略调整# 强制使用shuffled hash join spark.gluten.sql.columnar.forceShuffledHashJointrue # 启用向量化执行 spark.sql.codegen.vectorizedtrue后端选择建议分析型查询优先选择Velox后端在复杂聚合和窗口函数上表现更优高并发查询ClickHouse后端可能是更好的选择具有更高的查询吞吐量常见问题与解决方案Q: TPC-DS查询执行时出现OOM怎么办A: 可以尝试启用Velox的 spilling 功能spark.gluten.sql.columnar.backend.velox.aggregationSpillEnabledtrue spark.gluten.sql.columnar.backend.velox.joinSpillEnabledtrueQ: 如何验证Gluten是否真正加速了查询执行A: 查看Spark UI的执行计划寻找WholeStageCodegenTransformer节点或通过日志确认spark.gluten.sql.debugtrue总结Gluten为TPC-DS带来革命性性能提升通过本文的介绍我们了解到Apache Gluten如何通过原生执行引擎为TPC-DS基准测试带来显著的性能提升。无论是数据仓库管理员、大数据开发工程师还是性能优化专家都可以通过Gluten轻松获得2-10倍的查询性能提升而无需大幅修改现有系统架构。Gluten的优势不仅体现在性能提升上更在于其良好的兼容性和易用性。通过简单的配置和部署用户即可将现有Spark集群升级为高性能分析平台从容应对TPC-DS等复杂数据处理场景。想要了解更多细节可以参考项目中的官方文档TPC-DS测试指南tools/workload/benchmark_velox/README.md性能优化配置docs/get-started/Velox.mdTPC-DS查询集tools/gluten-it/common/src/main/resources/tpcds-queries【免费下载链接】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),仅供参考