开启 Spark 优化插件

最近更新时间:2026-01-30 14:27:11

我的收藏

简介

SparkSQL 优化主要针对于周期性执行的 SparkSQL 任务,根据其历史运行特征,动态优化资源使用量。

Step1:检查 Spark 调优插件是否已经部署

1. 登录 Spark 提交机器。
2. 查看插件是否存在。
ls /usr/local/service/spark/emr-plugins/*spark-conf-tuner*

Step2:检查 Spark 采集插件是否已经部署

调优插件依赖于采集插件采集运行数据。详情请参见 开启 Spark 查询采集插件
1. 登录 Spark 提交机器。
2. 查看插件是否存在。
ls /usr/local/service/spark/emr-plugins/*sparkAnalysisListener*

Step3:修改 Spark 配置

从控制台对 Spark 配置 spark-env.sh 添加如下配置并下发:
SPARK_SUBMIT_OPTS "${SPARK_SUBMIT_OPTS:+$SPARK_SUBMIT_OPTS }-javaagent:/usr/local/service/spark/emr-plugins/1.0.0_spark-conf-tuner.jar"

Step4:联系后台开启客户前端白名单(内部开白)

可通过 提交工单 申请开启 Spark 优化策略白名单。

Step5:配置任务指纹策略

Spark 调优插件依赖于任务指纹识别同一个周期任务,针对于任务指纹的生成有两种方式:
1. 自定义任务指纹和任务指纹名称,需要在提交参数中添加以下参数:
--conf spark.emr.tuning.agent.fp_id={Task_fp_id}
--conf spark.emr.tuning.agent.fp_name={Task_fp_id_name}
2. 联系后台添加任务指纹计算脚本,根据任务特征自动生成任务指纹,则无需添加任务指纹相关配置。
添加成功后,在 控制台>配置中心>调优自治策略>调参调优 可以看见任务指纹添加成功。


Step6:执行 SparkSQL 任务

Spark 调优插件开启调优:
--conf spark.emr.tuning.agent.mode=app
自定义任务指纹模式-提交示例:
spark-sql \\
--master=yarn \\
--deploy-mode=client \\
--conf spark.app.name=app-test \\
--conf spark.emr.tuning.agent.mode=app \\ 调优插件开启参数
--conf spark.emr.tuning.agent.fp_id=fp_id_test \\ 自定义任务指纹
--conf spark.emr.tuning.agent.fp_name=fp_name_test \\ 自定义任务指纹名称
--conf spark.executor.memory=4g \\
--conf spark.executor.instances=2 \\
--conf spark.executor.cores=2 \\
-f test.sql
任务指纹脚本计算模式-提交示例:
spark-sql \\
--master=yarn \\
--deploy-mode=client \\
--conf spark.app.name=app-test \\
--conf spark.emr.tuning.agent.mode=app \\ 调优插件开启参数
--conf spark.executor.memory=4g \\
--conf spark.executor.instances=2 \\
--conf spark.executor.cores=2 \\
-f test.sql

Step7:验证 Spark 调优插件生效

检查路径:控制台 > 治理中心 > 调优任务记录 中查看该任务记录是否存在,存在则代表调优插件生效。
说明:
调优插件实现任务调优需要参考历史运行记录,在控制台 > 配置中心 > 调优规则中,可以查看或者配置相应队列的参考周期,对于首次配置的调优任务,运行次数需要大于配置的参考周期才会开始调优。