架构介绍

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

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

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

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

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

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

调优步骤为:

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