鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

使用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

必选。

表示复测方式。复测是为了保证结果的可靠性,可选前台或者后台复测。

  • hijacking:前台复测,当用户提交任务时,配置跟随任务下发。
  • backend:后台复测,由OmniAdvisor自动触发。

-t或--tuning-method

“-r”“--retest-way”“hijacking”时,是必选参数;“-r”“--retest-way”“backend”的情况下是可选参数。

表示调优方法。

  • iterative:AI迭代调优,使用AI算法搜索参数空间,寻找最优应用参数。
  • expert:专家规则调优,通过诊断并匹配负载性能瓶颈,优化应用参数。
  • transfer:迁移泛化调优,通过寻找历史相似负载,迁移其调优经验,获得性能较优的应用参数。
  • native:算子加速调优,将Spark原生算子替换为C++ Native算子,实现性能加速。
    须知:

    如果需要使用native调优方法,需要预先在集群中的每个节点上部署好OmniOperator组件,且目前不支持HDFS形式的部署。

使用示例

  • 查看命令的使用方法、参数含义以及参数说明。
    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

调优示例

  1. 构造测试数据。
    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;"
  2. 负载劫持。

    首先对用户负载进行劫持,获取用户负载及相关信息,以便后续能够调优。负载劫持的步骤参见使用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软件的初始状态,则使用用户当前使用的配置)。推荐配置若执行失败,则回退为用户的默认配置。

  3. 查询负载等信息。

    执行负载并劫持后,可以在数据库中查询调优相关信息。数据库表的结构详见OmniAdvisor数据库表说明

    1
    select id, rounds, load_id, method from omniadvisor_tuning_record;
    

    本次示例中load_id为7。该load_id将在4中用到,用户在操作过程中,请根据实际情况修改load_id。

  4. 启用调优。
    • 示例1

      使用专家调优,对“load_id”“7”的负载进行调优,期间在后台复测,复测次数为“$OMNIADVISOR_HOME/omniruntime-omniadvisor-2.0.0/config/common_config.ini”“tuning.retest.times”的值。

      python tuning.pyc -l 7 -r backend -t expert
    • 示例2

      使用OmniAdvisor2.0中默认的调优策略以及历史调优记录,共同决定当前的调优方式。

      python tuning.pyc -l 7 -r backend

    调优结束后,会更新负载的最优配置信息,以便2能够使用最优配置。