调优Spark或Hive任务前需要按下列步骤确认或者修改OmniAdvisor参数调优相关的配置。
日志解析模块参数
日志解析模块配置文件中,配置了Spark HistoryServer的地址和端口、Yarn TimelineServer的地址和端口、Spark和Tez解析开关、日志解析任务线程数等,在参数调优前需要确认配置是否正确。
- 在管理节点中,打开日志解析模块配置文件“$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
- 按“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
|
- 确认omniAdvisorLogAnalyzer.properties配置文件中是否开启Spark的日志解析。当需要进行Spark调优时,需要打开Spark日志解析开关。
确认Spark日志解析配置。Spark日志解析支持rest和log两种模式Spark日志采集提供两种模式,分别为log模式以及rest模式,二者选其一即可。rest模式通过调用Spark的history server restAPI的方式获取要解析的日志文件,log模式为直接分析Spark的任务日志文件。
- 确认omniAdvisorLogAnalyzer.properties配置文件中是否开启Tez的日志解析。当需要进行Hive任务调优时,需要打开Tez日志解析开关。
| # 是否开启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。
- 可选:安全模式下需要在omniAdvisorLogAnalyzer.properties配置文件新增中Kerberos中的配置。
| # 安全模式下用于Kerberos认证的用户,非安全模式环境可省略
kerberos.principal=principle
# 安全模式下用于Kerberos认证的keytab文件路径,非安全模式环境可省略
kerberos.keytab.file=/usr/principle.keytab
|
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 将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”文件配置项中数据库配置和标识计算方法需要确认或修改。
- 打开“$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
- 按“i”进入编辑模式,修改MySQL相关配置。
| [database]
# MySQL数据库相关的用户名,端口号等信息
db_name = test_advisor
db_host = localhost
db_port = 3306
|
- 确认workload模块中的workload_name数据库名称、日志解析模块路径和identification_type任务运行的唯一标识(默认为job_hash)。
| [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去进行匹配推荐最优参数。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。