使用Spark任务后台调优功能
Spark任务后台调优功能通过python tuning.pyc命令来实现,执行调优命令后,服务器后台将会对Spark任务进行调优。
命令功能
在管理节点中,可以通过该命令来启动调优作业,通过指定选项来选择调优的目标、复测方式和调优方法。
命令格式
python tuning.pyc [-h] -l LOAD_ID -r {hijacking,backend} [-t {iterative,expert,transfer,native}]
参数说明
|
名称 |
说明 |
|---|---|
|
-h或--help |
可选。 查看命令帮助,帮助中将提供命令的使用方法、参数含义以及参数说明。 |
|
-l或--load-id |
必选。 表示loads表查询到的负载的ID。 |
|
-r或--retest-way |
必选。 表示复测方式。复测是为了保证结果的可靠性,可选前台或者后台复测。
|
|
-t或--tuning-method |
“-r”或“--retest-way”为“hijacking”时,是必选参数;“-r”或“--retest-way”是“backend”的情况下是可选参数。 表示调优方法。
|
使用示例
- 查看命令的使用方法、参数含义以及参数说明。
python tuning.pyc --help

- 对“load-id”为“1”的负载进行一次专家规则调优,并使用后台复测的方式检验专家规则调优生成的配置的优化效果。
python tuning.pyc -l 1 -r backend -t expert
- 当不使用“-t”或“--tuning-method”选项指定调优方法且复测方式为后台复测时,默认使用OmniAdvisor参数调优2.0的基础配置文件common_config.ini中的tuning.strategy配置项进行调优。
python tuning.pyc -l 1 -r backend
调优示例
- 构造测试数据。
spark-sql --master yarn --deploy-mode client --driver-cores 8 --driver-memory 20G --num-executors 36 --executor-cores 8 --executor-memory 29g -e "CREATE DATABASE IF NOT EXISTS omnitest; CREATE TABLE IF NOT EXISTS omnitest.employee (id INT,name STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY ','STORED AS TEXTFILE;"
- 负载劫持。
首先对用户负载进行劫持,获取用户负载及相关信息,以便后续能够调优。负载劫持的步骤参见使用Spark任务前台劫持功能。
export enable_omniadvisor=true spark-sql --master yarn --deploy-mode client --driver-cores 8 --driver-memory 20G --num-executors 36 --executor-cores 8 --executor-memory 29g -e "SELECT * FROM omnitest.employee;"
当一条负载被劫持并记录进数据库后,用户下发相同的负载,会劫持用户的命令,并替换用户当前使用的配置为系统推荐的最优的配置(在OmniAdvisor参数调优2.0软件的初始状态,则使用用户当前使用的配置)。推荐配置若执行失败,则回退为用户的默认配置。
- 查询负载等信息。
执行负载并劫持后,可以在数据库中查询调优相关信息。数据库表的结构详见OmniAdvisor数据库表说明。
1select id, rounds, load_id, method from omniadvisor_tuning_record;

本次示例中load_id为7。该load_id将在4中用到,用户在操作过程中,请根据实际情况修改load_id。
- 启用调优。
父主题: 使用OmniAdvisor参数调优2.0