---
title: 调优前配置参考
description: "调优Spark或Hive任务前需要按下列步骤确认或者修改OmniAdvisor参数调优相关的配置。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0517.html
sourcePath: /source/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0517.html
indexId: ac2da4360cd226a61293c30158cb2d38fa1701cae7cbe308906b91d47d91d5f278
---
# 调优前配置参考

调优Spark或Hive任务前需要按下列步骤确认或者修改OmniAdvisor参数调优相关的配置。

#### 日志解析模块参数

日志解析模块配置文件中，配置了Spark HistoryServer的地址和端口、Yarn TimelineServer的地址和端口、Spark和Tez解析开关、日志解析任务线程数等，在参数调优前需要确认配置是否正确。

1. 在管理节点中，打开日志解析模块配置文件“$OMNIADVISOR_HOME/boostkit-omniadvisor-log-analyzer-1.1.0-aarch64/conf/omniAdvisorLogAnalyzer.properties”。

```
vi
$OMNIADVISOR_HOME
/boostkit-omniadvisor-log-analyzer-1.1.0-aarch64/conf/omniAdvisorLogAnalyzer.properties
```


2. 按“i”进入编辑模式，确认或修改以下配置。omniAdvisorLogAnalyzer.properties配置文件参数说明请参见omniAdvisorLogAnalyzer.properties。
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # 日志解析并发进程数 log.analyzer.thread.count=3 # 数据库的Driver，目前只支持MySQL datasource.db.driver=com.mysql.cj.jdbc.Driver # 是否开启Spark的日志解析 spark.enable=true # Spark日志分析超时时间，单位：s，超过这个时间则该任务分析失败 spark.timeout.seconds=30 # 是否开启Tez的日志解析 tez.enable=true # timeline服务的URL tez.timeline.url=http://server1:8188 # timeline服务连接超时时间，单位：ms tez.timeline.timeout.ms=6000 # 安全模式下用于kerberos认证的用户,非安全模式环境可省略 kerberos.principal=principle # 安全模式下用于kerberos认证的keytab文件路径，非安全模式环境可省略 kerberos.keytab.file=/usr/principle.keytab

3. 确认omniAdvisorLogAnalyzer.properties配置文件中是否开启Spark的日志解析。当需要进行Spark调优时，需要打开Spark日志解析开关。
  确认Spark日志解析配置。Spark日志解析支持rest和log两种模式Spark日志采集提供两种模式，分别为log模式以及rest模式，二者选其一即可。rest模式通过调用Spark的history server restAPI的方式获取要解析的日志文件，log模式为直接分析Spark的任务日志文件。
  - 默认日志采集模式为rest模式，此时确认omniAdvisorLogAnalyzer.properties配置文件中的配置。

```
# 是否开启Spark的日志解析
spark.enable=true
# Spark日志解析模式，目前支持rest和log两种
spark.eventLogs.mode=rest
# Spark HistoryServer的URL
spark.rest.url=http://
server1
:18080
```


    spark.rest.url为Spark HistoryServer的地址和端口，确保配置正确，验证请参见3。

  - 可选：当需要采用log模式进行Spark日志采集时，需要修改omniAdvisorLogAnalyzer.properties配置文件中的配置。
    1 2 3 4 5 6 7 8 # 是否开启Spark的日志解析 spark.enable=true # Spark日志解析模式，目前支持rest和log两种 spark.eventLogs.mode=log # Spark Eventlog在HDFS上的保存地址和目录，确保配置正确可以访问到Spark Eventlog日志。 spark.log.directory=hdfs://server1:9000/spark2-history # Spark日志文件的最大大小，超过该目录大小，则会跳过该日志的解析，单位：MB spark.log.maxSize.mb=500


4. 确认omniAdvisorLogAnalyzer.properties配置文件中是否开启Tez的日志解析。当需要进行Hive任务调优时，需要打开Tez日志解析开关。
  1 2 3 4 5 6 # 是否开启Tez的日志解析 tez.enable=true # timeline服务的URL tez.timeline.url=http://server1:8188 # timeline服务连接超时时间，单位：ms tez.timeline.timeout.ms=6000

  tez.timeline.url为Yarn timelineserver服务的URL，需要修改为实际的地址和端口，确保可以访问到timelineserver。

5. 可选：安全模式下需要在omniAdvisorLogAnalyzer.properties配置文件新增中Kerberos中的配置。
  1 2 3 4 # 安全模式下用于Kerberos认证的用户,非安全模式环境可省略 kerberos.principal=principle # 安全模式下用于Kerberos认证的keytab文件路径，非安全模式环境可省略 kerberos.keytab.file=/usr/principle.keytab

6. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
7. 将Hadoop的配置文件hdfs-site.xml以及core-site.xml复制到“$OMNIADVISOR_HOME/boostkit-omniadvisor-log-analyzer-1.1.0-aarch64/conf”目录下

```
cp
${HADOOP_HOME}
/etc/hadoop/hdfs-site.xml $OMNIADVISOR_HOME/boostkit-omniadvisor-log-analyzer-1.1.0-aarch64/conf
cp
${HADOOP_HOME}
/etc/hadoop/core-site.xml $OMNIADVISOR_HOME/boostkit-omniadvisor-log-analyzer-1.1.0-aarch64/conf
```


#### 参数调优基本配置

参数调优“$OMNIADVISOR_HOME/BoostKit-omniadvisor_1.1.0/config/common_config.cfg”文件配置项中数据库配置和标识计算方法需要确认或修改。

1. 打开“$OMNIADVISOR_HOME/BoostKit-omniadvisor_1.1.0/config/common_config.cfg”文件配置项。common_config.cfg配置文件参数说明请参见common_config.cfg。

```
vi
$OMNIADVISOR_HOME
/BoostKit-omniadvisor_1.1.0/config/common_config.cfg
```


2. 按“i”进入编辑模式，修改MySQL相关配置。
  1 2 3 4 5 [database] # MySQL数据库相关的用户名，端口号等信息 db_name = test_advisor db_host = localhost db_port = 3306

3. 确认workload模块中的workload_name数据库名称、日志解析模块路径和identification_type任务运行的唯一标识（默认为job_hash）。
  1 2 3 4 5 6 7 8 [workload] # 测试执行的数据库名称 workload_name = tpcds_bin_partitioned_decimal_orc_100 # 日志解析模块解压存放的路径，该路径下需要有解析日志的JAR包 log_analyzer_path = /opt/OmniAdvisor/boostkit-omniadvisor-log-analyzer-1.1.0-aarch64 # 需要指定任务运行的唯一标识，可以通过匹配任务的名称（application_name）的Hash值或者匹配任务的Hash值（对应query的Hash或者对应JAR包的Hash）来匹配查找数据库中该任务的最佳参数 # options: [application_name, job_hash] identification_type = job_hash

  当选择application_name时，则以任务的application_name的hash值作为任务的标识符identification。 当选择job_hash时，则以任务的SQL语句（SQL任务）或者JAR包（APP任务）的Hash值作为任务的标识符identification。 日志解析过程中会根据identification_type的配置用不同的方法计算identification标识，并将该值存储到数据库中，后续参数推荐时根据identification去进行匹配推荐最优参数。

4. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
