本发明专利技术公开了一种Spark SQL在线优化方法和装置。该方法利用贝叶斯优化在Spark SQL上执行待优化配置参数的迭代搜索,包括:通过与贝叶斯迭代搜索过程进行交互收集参数样本,获得样本数据集,其中每个样本数据包括迭代过程使用的配置参数和各个query的执行时间;针对所述样本数据集,根据参数重要程度进行参数降维,并将降维后的样本数据集输入到贝叶斯优化过程中,用于高斯过程的建模,以确定应用程序的执行时间与参数样本之间的关联关系。本发明专利技术实现了低成本、深层次且高性能的调参优化,能够实现从底层的Spark引擎到上层的Spark SQL的整体在线优化。的整体在线优化。的整体在线优化。
【技术实现步骤摘要】
一种SparkSQL在线优化方法和装置
[0001]本专利技术涉及计算机
,更具体地,涉及一种Spark SQL在线优化方法和装置。
技术介绍
[0002]Spark SQL(结构化查询语言)基于Spark构建,可以实现高性能的结构化数据处理。与Spark RDD API不同,Spark SQL接口为Spark提供了更多关于数据结构和正在执行的计算的信息。因此在OLAP(联机分析处理)等场景中得到了广泛的应用。Spark SQL应用程序是一个执行单元,通常由许多查询(query)组成,Spark SQL框架将每个查询转换成一个DAG(有向无环图),然后将DAG分解成由一组并行任务组成的stage(阶段)集合。每个任务对应一个应用程序的分区计算部分结果。每个阶段可能依赖于存储在RDD中的称为沿袭的其他阶段。随后,Spark的DAG调度器将每个阶段的任务调度给多个executor(执行器)并行执行。这种并行性由几个配置参数控制。例如,在Yarn模式下,参数spark.executor.instances指定executor的数量,参数spark.executor.cores指定每个executor使用的核数。executor数量与每个executor的核数的乘积决定了Spark SQL集群一次可执行的最大任务数。经分析,一个Spark SQL应用的行为由200多个配置参数控制,这些配置参数一般分为两个级别:Spark SQL内部配置(上层)和Spark运行时配置(下层)。上层配置用于指定Spark SQL应用的属性,如shuffle行为、join broadcast等。例如,spark.sql.autoBroadcastJoinThreshold以字节为单位确定将在执行连接时广播给所有工作节点的表的最大大小,这可能显著影响连接性能。下层配置指定了Spark核心的14个方面,如内存管理和执行行为。例如,spark.executor.cores和spark.executor.instances控制了计算并行度,这也显著影响了Spark SQL应用程序的性能。因此Spark SQL参数调优非常必要,并且上层配置可能与下层配置以一种复杂的方式交互,这使得调优Spark SQL参数调优变得非常困难。
[0003]现有的参数调优方法主要包括:1)基于规则的调优技术,通过调优指导手册、专家经验和在线教程来进行调优;2)基于性能模型的调优技术,通过对Spark SQL进行性能建模,再基于性能模型进行最优参数搜索;3)基于模拟的调优技术,通过设计Spark SQL模拟器对Spark SQL在不同参数下的性能进行模拟,进而搜索得到最优参数;4)基于实验的调优技术,需要进行多次实验,且每次实验使用不同的参数执行待优化Spark SQL应用程序,直至找到最优参数;5)基于机器学习算法的调优技术,利用机器学习算法对最优参数进行预测或建立性能预测模型结合搜索算法找到最优参数;6)自适应调优技术,在线地对待优化Spark SQL程序进行优化,并根据动态变化环境来动态调整优化策略。
[0004]现有技术主要存在两个缺点。首先,这些技术需要花费较长的时间来收集训练示例,不利于Spark SQL应用于实践中,这主要是因为:1)训练实例数量大,这是基于机器学习技术的本质。2)收集应用程序的每个训练示例的时间通常至少为分钟,因为它是通过使用随机生成的配置运行应用程序进行收集。3)一个Spark SQL应用程序通常由多个查询(例如20个)组成。Spark SQL应用程序中的查询越多,应用程序执行的时间就越长,而收集一个训
练示例所需的时间也就越长。4)针对Spark SQL应用需要调优更多配置参数时,基于机器学习的技术一般需要更多的训练示例。并且,目前大多数基于机器学习的技术不能适应Spark SQL应用程序输入数据大小的变化。即Spark SQL应用程序在一种输入数据大小上获得最佳性能的配置,可能无法在另一种输入数据大小上产生最佳性能。这使得同一个应用程序在其输入数据大小改变时需要重新调优,这非常耗时。但是,客户通常不会频繁地更改他们的Spark SQL应用程序,而同一个应用程序的输入数据大小却会频繁地更改。
技术实现思路
[0005]本专利技术的目的是克服上述现有技术的缺陷,提供一种Spark SQL在线优化方法和装置。
[0006]根据本专利技术的第一方面,提供一种Spark SQL在线优化方法,该方法利用贝叶斯优化在Spark SQL上执行待优化配置参数的迭代搜索,包括以下步骤:
[0007]步骤S1:通过与贝叶斯迭代搜索过程进行交互收集参数样本,获得样本数据集,其中每个样本数据包括迭代过程使用的配置参数和各个query的执行时间;
[0008]步骤S2:针对所述样本数据集,根据参数重要程度进行参数降维,并将降维后的样本数据集输入到贝叶斯优化过程中,用于高斯过程的建模,以确定应用程序的执行时间与参数样本之间的关联关系。
[0009]根据本专利技术的第二方面,提供一种Spark SQL在线优化装置,该装置利用贝叶斯优化在Spark SQL上执行待优化配置参数的迭代搜索,包括:
[0010]参数样本收集模块:用于通过与贝叶斯迭代搜索过程进行交互收集参数样本,获得样本数据集,其中每个样本数据包括迭代过程使用的配置参数和各个query的执行时间;
[0011]性能建模模块:用于针对所述样本数据集,根据参数重要程度进行参数降维,并将降维后的样本数据集输入到贝叶斯优化过程中,用于高斯过程的建模,以确定应用程序的执行时间与参数样本之间的关联关系。
[0012]与现有技术相比,本专利技术的优点在于,现有的Spark SQL调参优化技术开销(优化耗时)过高,本专利技术通过配置参数降维降低了Spark SQL的调参优化耗时。此外,现有技术无法适应Spark SQL调参优化中输入数据量的动态变化,难以解决在线调参优化场景中数据量经常变化的问题,本专利技术能够对数据量变化进行动态感知,从而更好地实现在线优化。
[0013]通过以下参照附图对本专利技术的示例性实施例的详细描述,本专利技术的其它特征及其优点将会变得清楚。
附图说明
[0014]被结合在说明书中并构成说明书的一部分的附图示出了本专利技术的实施例,并且连同其说明一起用于解释本专利技术的原理。
[0015]图1是根据本专利技术一个实施例的Spark SQL在线优化方法的流程图;
[0016]图2是根据本专利技术一个实施例的Spark SQL在线优化方法的过程示意图;
[0017]图3是现有技术中常用的参数优化方法针对Spark SQL程序参数进行降维的精度示意图;
[0018]图4是根据本专利技术一个实施例的GBRT算法与本专利技术针对Spark SQL程序参数进行
降维的精度示意图;
[0019]图5是根据本专利技术一个实施例的优化Spark SQL应用程序的执行时间的示意图;
[0020]图6是根据本专利技术一个实施例的不同Spark 本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种Spark SQL在线优化方法,该方法利用贝叶斯优化在Spark SQL上执行待优化配置参数的迭代搜索,包括以下步骤:步骤S1:通过与贝叶斯迭代搜索过程进行交互收集参数样本,获得样本数据集,其中每个样本数据包括迭代过程使用的配置参数和各个query的执行时间;步骤S2:针对所述样本数据集,根据参数重要程度进行参数降维,并将降维后的样本数据集输入到贝叶斯优化过程中,用于高斯过程的建模,以确定应用程序的执行时间与参数样本之间的关联关系。2.根据权利要求1所述的方法,其特征在于,步骤S2包括:基于所述样本数据集,通过斯皮尔曼相关性分析,进行第一次参数降维,进而通过核主成分分析进行第二次参数降维,获得降维后的样本数据集。3.根据权利要求1所述的方法,其特征在于,在步骤S2中,在贝叶斯优化的迭代过程中,将应用程序的性能建模为配置参数和输入数据量大小的函数分布。4.根据权利要求1所述的方法,其特征在于,所述待优化参数包括Spark SQL内部配置参数和Spark运行时配置参数,其中内部配置参数用于指定Spark SQL应用的属性,运行时配置参数用于指定Spark不同方面的执行性能。5.一种Spark SQL在线优化装置,该装置利用贝叶斯优化在Spark SQL上执行待优化配置参数的迭代搜索,包括:参数样本收集模块:用于通过与贝叶斯迭代搜索过程进行交互...
【专利技术属性】
技术研发人员:辛锦瀚,喻之斌,陈超,黄世鑫,苏子浩,郭伟钰,曾思棋,李惠娟,杨永魁,王峥,
申请(专利权)人:中国科学院深圳先进技术研究院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。