要通过Spark History页面确认Gluten是否集成成功,请按照以下步骤操作:
1. 检查Spark页面
1. 检查Spark配置
• 进入Environment标签页:
◦ 在Spark History页面中,选择目标应用程序,进入Environment标签。
◦ 查找以下配置项:
◦ spark.plugins
:确认其值包含Gluten插件类,如org.apache.gluten.GlutenPlugin
。
◦ spark.sql.queryExecutionListeners
(可选):如果配置了查询监听器,可能包含Gluten相关类。
◦ spark.shuffle.manager
:Gluten可能要求设置为org.apache.spark.shuffle.sort.ColumnarShuffleManager
。
◦ 示例正确配置:
spark.plugins=org.apache.gluten.GlutenPlugin spark.shuffle.manager=org.apache.spark.shuffle.sort.ColumnarShuffleManager
Name | Value |
---|---|
spark.plugins | org.apache.gluten.GlutenPlugin |
spark.shuffle.manager | org.apache.spark.shuffle.sort.ColumnarShuffleManager |
2. 查看应用程序日志
• 在日志中搜索Gluten关键字:
◦ 在Spark History页面的Logs部分,查找以下内容:
◦ 初始化成功日志:如Gluten plugin initialized
或Gluten enabled
。
◦ 警告或错误:如ClassNotFoundException
(可能表示依赖缺失)或Gluten fallback to Vanilla Spark
(部分操作未使用Gluten)。
◦ 示例成功日志:
INFO GlutenPlugin: Gluten plugin initialized, using backend: velox
xx/xx/xx 09:17:31 INFO JniLibLoader: Trying to load library libgluten.so
xx/xx/xx 09:17:31 INFO JniLibLoader: Successfully loaded library libgluten.so
xx/xx/xx 09:17:32 INFO JniLibLoader: Trying to load library libvelox.so
xx/xx/xx 09:17:32 INFO JniLibLoader: Successfully loaded library libvelox.so
xx/xx/xx 09:17:32 INFO ExecutorPluginContainer: Initialized executor component for plugin org.apache.gluten.GlutenPlugin.
3. 检查Metrics指标
• 进入Metrics标签页:
◦ 查找Gluten特有的指标,例如:
◦ gluten_velox_tasks
:表示由Velox引擎处理的任务数。
◦ gluten_fallback_count
:回退到Vanilla Spark的次数(值高可能表示兼容性问题)。
◦ 如果这些指标存在且gluten_velox_tasks
大于0,说明Gluten已生效。
4. 分析SQL执行计划
• 查看SQL查询的物理计划:
◦ 在SQL标签页中,点击具体查询,查看其Physical Plan。
◦ 确认是否存在Gluten相关的操作符,例如:
◦ GlutenScan
:表示数据扫描由Gluten处理。
◦ VeloxOperator
:使用Velox引擎执行的操作(如Filter、Projection)。
◦ 示例计划片段:
+- GlutenScan [id#1, name#2] (Gluten VeloxScan...)
VeloxColumnarToRowExec (11)
+- VeloxAppendBatches (4)
(4) VeloxAppendBatches
(11) VeloxColumnarToRowExec
5. 验证任务执行详情
• 进入Stages/Tasks详情:
◦ 在任务级别指标中,查看是否有关联Gluten的输入/输出格式(如ColumnarToRow
转换减少,可能表示Gluten直接处理列式数据)。
常见问题排查
• 配置未生效:确保spark.plugins
配置正确且无拼写错误,Gluten的JAR包已正确部署到Spark的jars
目录。
• 依赖冲突:检查日志中是否有NoClassDefFoundError
,可能是版本不兼容或依赖缺失。
• 部分回退:若gluten_fallback_count
较高,需确认查询是否包含Gluten尚未支持的操作(如某些UDF或复杂数据类型)。
结论
如果在配置、日志、Metrics或执行计划中均发现Gluten相关的有效信息(如插件加载成功、Velox任务计数为正),则表明Gluten已成功集成。反之,需根据缺失的证据逐步排查配置或依赖问题。