安装部署OmniAdvisor参数调优到管理节点指定目录下面,比如:/opt/OmniAdvisor,这个路径代指为:$OMNIADVISOR_HOME。OmniAdvisor参数调优的使用有OmniAdvisor参数调优CLI和非交互式命令执行两种运行方式,建议使用OmniAdvisor参数调优CLI。
OmniAdvisor参数调优使用主要包括以下步骤,按需求完成common_config.cfg文件的配置、调用OmniAdvisor参数调优入口、初始化环境配置、解析历史任务信息、使用AI算法进行参数采样和参数推荐。
1
|
vi $OMNIADVISOR_HOME/BoostKit-omniadvisor_1.1.0/config/common_config.cfg |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
[workload] # 测试执行的数据库名称 workload_name = tpcds_bin_partitioned_decimal_orc_2 # 日志解析模块解压存放的路径,该路径下需要有解析日志的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 # 参数采样轮数的阈值 sampling_epochs = 20 # 采样任务超时后是否处理策略,kill或者warn # options: [kill, warn] timeout_strategy = kill # 参数推荐后的提升比率阈值,当 历史最优-当前最优/当前最优 高于boosting_ratio后 刷新最优参数 boosting_ratio = 0.03 # 子进程超时等待时间 单位:秒 proc_timeout_seconds = 3600 [database] # MySQL数据库相关的用户名,端口号等信息 # db_name表示MySQL的数据库名字,如果不存在会自动创建 # db_host表示连接MySQL的主机名,一般是localhost或者ip,db_port表示连接MySQL的端口号,默认是3306 db_name = test db_host = localhost db_port = 3306 [spark] # Spark运行日志的起始时间,可以从Spark History Server(默认在18080端口)上查看日期 log_start_time = 2024-07-24 00:00:00 # Spark运行日志的终止时间 log_end_time = 2024-07-24 23:59:59 # Spark默认参数,一般默认参数不参与参数采样过程 spark_default_config = --conf spark.sql.orc.impl=native --conf spark.serializer=org.apache.spark.serializer.KryoSerializer --conf spark.locality.wait=0 --conf spark.sql.broadcastTimeout=300 [hive] # Tez运行日志的起始时间,可以从Hadoop UI(默认在8088端口)上查看日期 log_start_time = 2024-01-18 12:07:39 # Tez运行日志的终止时间 log_end_time = 2024-01-18 12:11:54 # Hive默认参数,一般默认参数不参与参数采样过程 hive_default_config = --hiveconf hive.cbo.enable=true --hiveconf tez.am.container.reuse.enabled=true --hiveconf hive.merge.tezfiles=true [loganalyzer] # 日志解析并发进程数,即同时分析的任务数。 log.analyzer.thread.count = 3 [kerberos] # 安全模式下,用于Kerberos认证的用户。 # kerberos.principal = primary/instance@REALM # 安全模式下,用于Kerberos认证的keytab文件路径。 # kerberos.keytab.file = /directory/kerbors.keytab [datasource] # 日志分析后,用于保存分析结果的数据库的Dirver。 datasource.db.driver = com.mysql.cj.jdbc.Driver [sparkfetcher] # Spark Fetcher的模式,目前支持log以及rest两种模式。 spark.eventlogs.mode = rest # Spark History Server的URL,仅用于rest模式。 spark.rest.url = http://server1:18080 # Spark Fetcher分析任务超时时间,单位:s。 spark.timeout.seconds = 30 # Spark日志存放目录,仅用于log模式。 # spark.log.directory = hdfs://server1:9000/spark2-history # Spark分析日志文件的最大大小,单位:MB,超出该大小的日志文件将会被忽略,仅用于log模式。 # spark.log.maxsize.mb = 500 [tezfetcher] # Timeline server的URL。 tez.timeline.url = http://server1:8188 # Timeline server访问超时时间,单位:ms。 tez.timeline.timeout.ms = 6000 |
python $OMNIADVISOR_HOME/BoostKit-omniadvisor_1.1.0/main.pyc
输入spark或者hive选定调优引擎,或按“Tab”选择引擎。
命令 |
操作 |
---|---|
init_environment |
初始化环境配置,包括数据库连接、数据库创建、数据表初始化等。 |
fetch_history_data |
从Spark的HistoryServer或者Hive组件的Timeline Server上解析历史任务信息。 |
parameter_sampling |
采用AI算法对所有历史任务进行参数采样。 |
parameter_recommend |
进行参数推荐。 |
输入init_environment或者按“Tab”选择“init_environment”后按“Enter”即可初始化环境。
输入fetch_history_data或者按“Tab”选择“fetch_history_data”后回车即可调用日志解析模块进行历史任务信息解析。
输入parameter_recommend或者按“Tab”选择“parameter_recommend”后,按提示输入SQL或APP提交命令即可进行参数推荐,并用推荐参数提交到对应引擎执行。
在管理节点通过指定参数快速开始执行对应步骤,请参见表2。
选项 |
描述 |
用法示例 |
---|---|---|
-e, --engine |
指定调优的大数据引擎,仅支持Spark或者Hive。 |
python main.pyc -e spark |
-i, --instruction |
指定操作,可选择init_environment、fetch_history_data、parameter_sampling、parameter_recommend。 |
python main.pyc -e spark -i init_environment |
-s, --sampling_id |
指定采样标识符,通过“,”分割。 |
python main.pyc -e spark -i parameter_sampling -s "xx1" |
-n, --sampling_count |
指定参数采样轮数。 |
python main.pyc -e spark -i parameter_sampling -n 10 |
-c, --cmd |
指定参数推荐任务的Spark或Hive提交命令。 |
python main.pyc -e spark -i parameter_recommend -c "spark-sql xxx" |
-v, --version |
查看OmniAdvisor参数调优版本。 |
python main.pyc -v |
--help |
查看帮助。 |
python main.pyc --help |
python $OMNIADVISOR_HOME/BoostKit-omniadvisor_1.1.0/main.pyc -e spark -i init_environment
python $OMNIADVISOR_HOME/BoostKit-omniadvisor_1.1.0/main.pyc -e spark -i fetch_history_data
python $OMNIADVISOR_HOME/BoostKit-omniadvisor_1.1.0/main.pyc -e spark -i parameter_sampling -s "xx1,xx2" -n 3
python $OMNIADVISOR_HOME/BoostKit-omniadvisor_1.1.0/main.pyc -e spark -i parameter_recommend -c "spark-sql xxx"