---
title: 架构介绍
description: "OmniAdvisor参数调优基于AI算法训练Spark/Hive引擎最优配置参数，提升Spark/Hive引擎运行效率。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0503.html
sourcePath: /source/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0503.html
indexId: 03fdf0e6c70c1dfe01c6f1b243d598b89d7882ad9b15195341bb2f62ce1cb7be78
---
# 架构介绍

OmniAdvisor参数调优基于AI算法训练Spark/Hive引擎最优配置参数，提升Spark/Hive引擎运行效率。

大数据引擎Spark和Hive有上百个配置参数，这些参数取值空间大、部分配置参数间相互耦合且不同的参数组合对性能有显著的影响，导致Spark和Hive的参数调优成为了一个困难的课题。传统的通过手动调优的参数调优方式，在高维空间下的调优效率较低，且很难通过人工方式获取最优的一组配置参数。

OmniAdvisor参数调优是一个用于Spark SQL及Application（以下简称App）任务、Hive SQL任务的在线参数调优工具。它通过对历史任务进行解析，利用AI算法进行参数采样和调优，实现对已采样任务的参数自动推荐，为在线系统提供端到端的参数优化服务。OmniAdvisor参数调优特性主要包括以下模块：

- 日志解析模块：用于解析Spark/Hive日志，获取任务参数信息。
- 参数采样调优模块：用于采样不同配置的任务参数，并用新采样的参数执行任务。
- 参数推荐模块：对于已完成调优的任务，可以在数据库中查找历史任务的最佳参数作为该任务的执行参数。
- 异常参数处理模块：采样或者推荐的SQL参数如果在执行中发生异常，则需要进行异常处理。

图1 OmniAdvisor参数调优特性软件架构图

使用OmniAdvisor参数调优特性进行参数调优的场景分析如图2所示。

图2 OmniAdvisor参数调优特性场景分析图

调优步骤为：

1. 用户需要使用默认参数执行Spark任务或者Hive Tez任务。
2. 执行任务后，集群上会保留任务执行的日志信息（Spark集群需要配置spark.history.fs.logDirectory，Hive Tez引擎需要启动Timeline server服务），通过日志解析模块来解析任务执行后的日志信息。将分析得到的任务参数信息、任务执行状态、执行时间等信息存入到MySQL数据库中。
3. 用户选择需要调优的任务列表，对每个调优任务，先从数据库中获取历史参数，然后对这个历史参数采用AI算法进行参数采样，再执行采样后得到的参数，将执行的结果进行解析，进而更新数据库中的最优配置信息。
4. 当用户需要重新执行任务的时候，可以在数据库中查找历史任务的最佳参数作为该任务的执行参数。
