简介
SparkSQL 优化主要针对于周期性执行的 SparkSQL 任务,根据其历史运行特征,动态优化资源使用量。
Step1:检查 Spark 调优插件是否已经部署
1. 登录 Spark 提交机器。
2. 查看插件是否存在。
ls /usr/local/service/spark/emr-plugins/*spark-conf-tuner*
Step2:检查 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:联系后台开启客户前端白名单(内部开白)
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 调优插件生效
检查路径:控制台 > 治理中心 > 调优任务记录 中查看该任务记录是否存在,存在则代表调优插件生效。
说明:
调优插件实现任务调优需要参考历史运行记录,在控制台 > 配置中心 > 调优规则中,可以查看或者配置相应队列的参考周期,对于首次配置的调优任务,运行次数需要大于配置的参考周期才会开始调优。
