调优前配置参考

调优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”保存并退出编辑。