Apache Gluten性能监控工具:如何实时追踪原生执行引擎指标

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

Apache Gluten是一个中间层组件,负责将基于JVM的SQL引擎执行卸载到原生引擎,从而显著提升大数据处理性能。为了确保这一过程的稳定性和高效性,Gluten提供了全面的性能监控工具,帮助用户实时追踪原生执行引擎的关键指标。本文将详细介绍如何配置和使用这些工具,轻松掌握Gluten的运行状态。

一、Gluten UI:直观的Web监控界面

Gluten UI是集成在Spark Web UI中的专用监控页面,提供了Gluten执行状态的可视化展示。通过它,用户可以一目了然地查看查询执行情况、原生节点数量和回退节点数量等关键信息。

启用Gluten UI

Gluten UI默认是启用的,如需确认或修改,可通过以下配置:

spark.gluten.ui.enabled=true

该配置项定义在gluten-substrait/src/main/scala/org/apache/gluten/config/GlutenConfig.scala文件中,确保在Spark配置中正确设置即可开启这一功能。

Gluten UI主要功能

  1. 构建信息展示:显示Gluten后端类型、版本、构建时间等基础信息。
  2. 查询列表:展示所有通过Gluten执行的查询,包括SQL语句、物理计划和执行状态。
  3. 原生节点统计:统计每个查询中使用的原生执行节点数量和回退节点数量,帮助识别性能瓶颈。

二、指标框架:深入了解执行细节

Gluten的指标框架负责将原生执行引擎的指标映射到Spark SQL指标,提供了细粒度的性能数据。这一过程主要包括三个步骤:原生代码树化、JSON解析和Spark计划树化。

指标映射流程

  1. 原生代码树化WholeStageResultIterator::getOrderedNodeIds将Velox计划转换为有序节点ID列表。
  2. JSON解析:Scala代码将原生指标JSON payload解析为JList[OperatorMetrics]
  3. Spark计划树化MetricsUtil.treeifyMetricsUpdaters将Spark物理计划转换为指标更新器树,消费原生指标。

详细的指标映射逻辑可参考docs/developers/MetricsFramework.md文档。

关键指标类型

Gluten监控的关键指标包括:

  • 执行时间:CPU时间、墙钟时间等。
  • 内存使用:峰值内存、分配内存等。
  • 数据量:输入行数、输出行数、溢出数据量等。
  • 操作计数:哈希表探针数、排序比较数等。

三、内存分析工具:追踪内存使用

内存管理是原生执行引擎性能优化的关键。Gluten提供了内存分析工具,帮助用户深入了解内存分配和使用情况。

内存分析数据来源

Gluten的内存指标主要来自以下几个方面:

  1. Velox内存分配器:如StdMemoryAllocatorMallocAllocator等。
  2. 任务上下文:每个任务的内存使用情况。
  3. 算子级别:各原生算子的内存消耗。

使用内存分析工具

通过设置以下配置,可以启用详细的内存分析:

spark.gluten.sql.columnar.backend.velox.queryTraceEnabled=true spark.gluten.sql.columnar.backend.velox.queryTraceDir=/path/to/trace/dir

这些配置将生成详细的内存使用日志,帮助定位内存泄漏和优化内存使用。

四、Trace Viewer:可视化执行流程

Trace Viewer是一个强大的工具,用于可视化Gluten的执行流程和性能瓶颈。它以时间线的形式展示各个事件的发生顺序和持续时间,帮助用户直观地识别执行过程中的瓶颈。

生成Trace数据

要生成Trace数据,需要设置以下配置:

spark.gluten.sql.columnar.backend.velox.queryTraceEnabled=true

执行查询后,Trace数据将被写入指定的目录。然后,您可以使用Chrome浏览器的chrome://tracing功能加载这些数据,进行可视化分析。

Trace Viewer主要功能

  1. 时间线展示:以不同颜色展示各个事件的时间分布。
  2. 性能指标:显示CPU使用率、内存使用、I/O操作等关键指标。
  3. 事件详情:点击事件可查看详细信息,如函数调用栈、参数等。

五、性能调优实践

结合Gluten的监控工具,我们可以进行有针对性的性能调优。以下是一些常见的调优场景:

1. 识别回退节点

在Gluten UI中,如果发现某个查询有较多的回退节点(Num Fallback Nodes),可能是因为该查询包含Gluten不支持的算子或数据类型。可以通过查看查询的物理计划,定位不支持的部分,并考虑替换为支持的算子或升级Gluten版本。

2. 优化内存使用

通过内存分析工具,如果发现某个算子的内存使用异常高,可以尝试调整以下配置:

spark.gluten.sql.columnar.backend.velox.preferredBatchBytes=16777216 spark.gluten.sql.columnar.maxBatchSize=4096

这些配置可以调整批处理大小,从而优化内存使用。

3. 分析执行瓶颈

使用Trace Viewer,如果发现某个操作的执行时间过长,可以进一步分析其原因。例如,如果排序操作耗时较长,可以考虑增加排序缓冲区大小:

spark.shuffle.file.buffer=64k

六、总结

Apache Gluten提供了全面的性能监控工具,包括直观的Web界面、详细的指标框架、深入的内存分析和可视化的执行追踪。通过这些工具,用户可以实时了解Gluten原生执行引擎的运行状态,快速定位性能瓶颈,进行有针对性的优化。无论是新手还是有经验的用户,都能通过这些工具充分发挥Gluten的性能优势,提升大数据处理效率。

要开始使用Gluten的性能监控工具,只需按照本文介绍的方法配置相关参数,然后通过Spark Web UI或Trace Viewer等工具查看监控数据。随着对这些工具的深入使用,您将能够更加熟练地优化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),仅供参考