一种Spark程序关于配置参数的敏感度分析方法技术

技术编号:37498739 阅读:16 留言:0更新日期:2023-05-07 09:35
本发明专利技术公开了一种Spark程序关于配置参数的敏感度分析方法。该方法包括:针对Spark程序的配置参数集合,随机生成若干个有差异的配置参数构成敏感度测试组;利用所述敏感度测试组中的每个配置参数运行Spark程序,获得各配置参数对应的真实运行时间,并计算运行时间的标准差;基于所述运行时间的标准差和设定阈值的比较,判断当前Spark程序对各配置参数的敏感度,进而利用敏感度确定所分配的优化时间。本发明专利技术可以有效地表征待优化Spark程序关于配置参数的敏感度,解决了“高时间成本,低优化收益”问题。问题。问题。

【技术实现步骤摘要】
一种Spark程序关于配置参数的敏感度分析方法


[0001]本专利技术涉及大数据处理
,更具体地,涉及一种Spark程序关于配置参数的敏感度分析方法。

技术介绍

[0002]近年来,随着互联网技术的快速发展,大数据的应用场景受到了越来越多的关注。以Spark大数据系统通用并行框架为例,Spark涵盖各种负载,如批处理程序、用户交互式程序、迭代算法等。Spark扩展完善了MapReduce模型,通过内存流水线式的计算模式,减少数据在磁盘上的读/写操作,从而大幅提升了数据处理速度。
[0003]为了满足在不同场景下的使用需求,Spark框架将大量的配置参数,甚至多达240个,暴露给终端用户。由于应用程序的特性不同,在程序运行过程中如果使用默认参数,在很多情况下会限制系统的性能,无法充分利用系统资源。因此人们通过机器学习手段或参数搜索方法提出了一些自动配置参数调优方法。该类参数调优方法首先通过收集不同参数下的运行时间,然后利用配置参数和运行时间的关系进行训练,从而得到性能模型。在对新数据进行处理时,通过搜索性能模型得到合适的配置,从而达到优化配置参数的目的。这类方法在构建训练集时,需要收集大量样本数据,计算效率和时间成本过高。
[0004]通过实验观察发现,有些Spark程序对于配置参数的改变性能波动明显。例如,在相同的Spark集群运行同一个Spark作业,但是使用了不同的配置参数,而运行时间的差异可以多达15倍。而现有的Spark自动配置参数调优方法不区分Spark程序是否对配置参数敏感,或者可以理解为“默认Spark程序对于配置参数敏感”。所以不管当前Spark程序是否对配置参数敏感,都需要收集大量的不同配置参数下的运行时间(通常需要运行数百组至数千组数据),然后使用这些原始数据进行训练。由于在数据规模大的情况下,运行一次Spark程序的时间成本都非常高,那么再重复运行该程序以采集机器学习训练所需要的训练集样本量时,时间成本会更高。此外,收集训练样本时,由于没有考虑应用程序对配置参数的敏感性,尽管花费了很高的时间成本,但是却得不到相应的优化效果。

技术实现思路

[0005]本专利技术的目的是克服上述现有技术的缺陷,提供一种Spark程序关于配置参数的敏感度分析方法。该方法包括以下步骤:
[0006]步骤S1:针对Spark程序的配置参数集合,随机生成若干个有差异的配置参数构成敏感度测试组;
[0007]步骤S2:利用所述敏感度测试组中的每个配置参数运行Spark程序,获得各配置参数对应的真实运行时间,并计算运行时间的标准差;
[0008]步骤S3:基于所述运行时间的标准差和设定阈值的比较,判断当前Spark程序对各配置参数的敏感度,进而利用敏感度确定优化空间。
[0009]与现有技术相比,本专利技术的优点在于,针对现有技术“高时间成本,低优化收益”问
题,在对该Spark程序进行优化之前,进行该Spark关于配置参数的敏感度检查,进而根据敏感度检查结果确定Spark程序的可优化空间。本专利技术可以有效避免Spark程序优化空间较小的情况下的超高的优化时间成本,显著缩短运行时间收集过程,从而更有效地找到程序运行时的较优配置参数。
[0010]通过以下参照附图对本专利技术的示例性实施例的详细描述,本专利技术的其它特征及其优点将会变得清楚。
附图说明
[0011]被结合在说明书中并构成说明书的一部分的附图示出了本专利技术的实施例,并且连同其说明一起用于解释本专利技术的原理。
[0012]图1是根据本专利技术一个实施例的Spark程序关于配置参数的敏感度分析方法的流程图;
[0013]图2是根据本专利技术一个实施例的Spark程序关于配置参数的敏感度分析方法的过程示意图;
[0014]图3是根据本专利技术一个实施例的验证结果示意图;
[0015]图4是根据本专利技术一个实施例的优化效果对比示意图。
具体实施方式
[0016]现在将参照附图来详细描述本专利技术的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本专利技术的范围。
[0017]以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本专利技术及其应用或使用的任何限制。
[0018]对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
[0019]在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
[0020]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
[0021]本专利技术提供的Spark程序关于配置参数的敏感度分析方法包括:每次采用随机数生成若干个Spark配置参数,这些配置参数构成一个敏感度测试组。然后当前Spark程序使用该敏感度测试组中的每个配置参数去真实运行,并记录真实的运行时间。接下来,计算这一组真实运行时间的标准差。根据计算所得到的标准差和设定的标准差阈值比较来判断当前Spark程序是否对配置参数敏感,以确定优化空间。
[0022]具体地,结合图1和图2所示,所提供的方法包括以下步骤。
[0023]步骤S110,针对Spark程序的配置参数集合,生成基础随机配置参数。
[0024]首先,确定每个配置参数的取值范围,然后在范围内随机生成参数。针对不同类型的配置参数,生成随机配置参数的策略不同。
[0025]例如,布尔型参数用来开启或终止某项功能,用True和False来表示开启/禁止状
态,如是否对溢写数据进行压缩,可对该类型参数随机生成True或者False。
[0026]类别型参数用来在几项选择中选择一种,如从4种压缩的编码解码器类型(lz4,lzf,snappy和zstd)进行选择,对该类型参数可随机选择并生成相应的参数。
[0027]连续型参数用来在一定连续范围内进行参数配置,具体又可以分为整数型(如需要的CPU核数)和浮点型(如堆中用来进行程序运行内存的百分比)。在一个实施例中,可根据系统的实际物理资源,确定该类型参数的范围(如集群中可用的CPU核数),然后在该范围内随机生成需要的整数型或者浮点型参数。
[0028]步骤S120,对基础配置参数进行多次扰动,构造敏感度测试组。
[0029]在该步骤中,从上述生成的基础随机配置参数中随机选择若干个参数,进行“扰动”。例如,追加扰动的规则为:
[0030]如果当前被选择的参数是布尔型参数,那么当前的值取反,即True变成False,False变成True;
[0031]如果当前被选择的参数是类别型参数,那么当前的值从其他可选的类别中进行随机选择。如4种压缩的编码解码器类型分别为lz4,lzf,snappy和zs本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Spark程序关于配置参数的敏感度分析方法,包括以下步骤:步骤S1:针对Spark程序的配置参数集合,随机生成若干个有差异的配置参数构成敏感度测试组;步骤S2:利用所述敏感度测试组中的每个配置参数运行Spark程序,获得各配置参数对应的真实运行时间,并计算运行时间的标准差;步骤S3:基于所述运行时间的标准差和设定阈值的比较,判断当前Spark程序对各配置参数的敏感度,进而利用敏感度确定优化空间。2.根据权利要求1所述的方法,其特征在于,所述敏感度测试组根据以下步骤获得:针对Spark程序的配置参数集合,生成基础随机配置参数集;对该基础随机配置参数集使用n次扰动操作,从而得到n个Spark配置参数,将这n个配置参数构成敏感度测试组。3.根据权利要求2所述的方法,其特征在于,所述针对Spark程序的配置参数集合,生成基础随机配置参数集包括:针对布尔型配置参数,随机生成True或者False取值;针对类别型配置参数,从可选类别中随机选择并生成相应的参数;针对连续型参数:根据实际的物理资源,确定取值范围并在该范围内随机生成的整数型或者浮点型参数。4.根据权利要求2所述的方法,其特征在于,将所述扰动操作的规则设置为:针对布尔型配置参数,对当前的值取反;针对类别型配置参数,从当前值以外的从其他可选类别中进行随机选择;针对连续型配置参数,对当前的值追加一个可行的扰动值,形成新的取值且该新的取值处于合法范围。5.根据权利要求2所述的...

【专利技术属性】
技术研发人员:苏子浩喻之斌陈超曾思棋杨永魁
申请(专利权)人:中国科学院深圳先进技术研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1