1.本技术涉及计算机技术领域,特别是涉及一种spark离线计算性能的调优方法、装置及存储介质。
背景技术:
2.apache spark是一种用于大数据工作负载的分布式开源处理系统,spark基准离线计算性能常用以分析当前集群规模业务承载能力或者业务压力匹配度。集群spark离线计算性能调优,是项目集群部署前评估、部署后验证一个关键环节。如何合理的充分的利用集群资源,发挥出特定集群spark离线计算的最优性能,是当前大数据平台产品落地时需要解决的问题。
3.现有技术中,调优人员结合经验,根据集群可用总资源设置spark任务提交关键参数,如driver.memory、excutors.num、executor.cores、executor.memory、shuffle.num等,通过不断修改、尝试,找出性能较好的参数配比。
4.现有技术存在如下缺陷:
5.(1)调参过程所花费时间较长,对调优人员的调优经验有一定要求。
6.(2)在某些数据场景下(如大批量小文件),仅通过调参无法达到一个较好的性能。
7.(3)在出现shuffle gc的问题或者cpu和内存不匹配的场景下,spark离线计算任务运行耗时长。
技术实现要素:
8.基于此,有必要针对上述技术问题,提供一种spark离线计算性能的调优方法、装置及存储介质,能够避免因源数据分布原因导致的性能问题,可以合理利用集群资源进行快速调优,提升调优效率。
9.一方面,提供一种spark离线计算性能的调优方法,所述方法包括:
10.对数据源进行预处理,得到预处理数据;
11.将所述预处理数据与训练库进行匹配,从所述训练库中获取推荐参数配置信息,所述训练库中存储有数据特征与推荐参数配置信息之间的对应关系;
12.根据所述推荐参数配置信息运行任务,得到任务监控信息,根据所述任务监控信息,确定是否完成spark离线计算性能的调优。
13.在其中一个实施例中,所述方法包括:
14.将所述任务监控信息反馈至所述训练库,当确定未完成spark离线计算性能的调优时,重新触发所述训练库进行参数配置推荐。
15.在其中一个实施例中,所述方法包括:
16.当缺乏数据源时,根据业务数据的特性生成测试数据,将所述测试数据作为源数据。
17.在其中一个实施例中,所述对数据源和测试数据进行预处理包括:
18.根据预设规则选择预处理模型,所述预处理模型包括小文件合并模型和大文件拆分模型。
19.在其中一个实施例中,所述方法包括:
20.所述任务监控信息包括任务性能值,当所述任务性能值满足预定条件时,确定完成调优。
21.在其中一个实施例中,所述方法包括:
22.当再次触发训练库进行参数配置推荐时,根据所述任务监控信息自动调整任务资源配置,并配置内存异构磁盘;所述任务监控信息包括shuffle垃圾回收信息、磁盘io压力信息、集群资源使用信息。
23.另一方面,提供了一种spark离线计算性能的调优装置,所述装置包括:
24.处理模块,用于对数据源进行预处理,得到预处理数据;
25.调用模块,用于将所述预处理数据与训练库进行匹配,从所述训练库中获取推荐参数配置信息,所述训练库中存储有数据特征与推荐参数配置信息之间的对应关系;
26.监控模块,用于根据所述推荐参数配置信息运行任务,得到任务监控信息,根据所述任务监控信息,确定是否完成spark离线计算性能的调优。
27.在其中一个实施例中,所述监控模块用于:
28.将所述任务监控信息反馈至所述训练库,当确定未完成spark离线计算性能的调优时,重新触发所述训练库进行参数配置推荐。
29.在其中一个实施例中,所述处理模块还用于:
30.当缺乏数据源时,根据业务数据的特性生成测试数据,将所述测试数据作为源数据。
31.又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
32.对数据源进行预处理,得到预处理数据;
33.将所述预处理数据与训练库进行匹配,从所述训练库中获取推荐参数配置信息,所述训练库中存储有数据特征与推荐参数配置信息之间的对应关系;
34.根据所述推荐参数配置信息运行任务,得到任务监控信息,根据所述任务监控信息,确定是否完成spark离线计算性能的调优。
35.上述spark离线计算性能的调优方法、装置及存储介质,通过对源数据进行预处理,形成适合集群离线计算的预处理数据,避免因源数据分布原因导致的性能问题;通过监控情况,结合积累的训练库,可以快速进行调优,达到目标同时合理利用集群资源。另外还可以形成整合数据与性能调优参数匹配模型,提升调优效率。
附图说明
36.图1为一个实施例中spark离线计算性能的调优方法流程示意图;
37.图2为一个实施例中spark离线计算性能的调优装置的结构框图。
具体实施方式
38.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
39.在一个实施例中,如图1所示,提供一种spark离线计算性能的调优方法,所述方法包括:
40.s1:对数据源进行预处理,得到预处理数据。
41.本步骤中,对数据源进行预处理,得到预处理数据,预处理数据具有相应的数据特征,如预处理数据的文件大小、单个文件大小区间、文件数量等。
42.s2:将所述预处理数据与训练库进行匹配,从所述训练库中获取推荐参数配置信息,所述训练库中存储有数据特征与推荐参数配置信息之间的对应关系。
43.具体地,训练库中存储有数据特征与推荐参数配置信息之间的对应关系,对源数据进行预处理后,将预处理数据的数据特征与训练库中的数据特征进行匹配,得到与预处理数据的数据特征相匹配的推荐参数配置信息。
44.s3:根据所述推荐参数配置信息运行任务,得到任务监控信息,根据所述任务监控信息,确定是否完成spark离线计算性能的调优。
45.具体地,在步骤s2中从训练库得到推荐参数配置信息后,根据所述推荐参数配置信息运行任务,得到任务监控信息,并根据所述任务监控信息,确定是否完成spark离线计算性能的调优。
46.以spark terasort词频排序应用为例,对s1得到的预处理数据进行terasort磁盘排序时,则会根据预处理数据的文件总大小、单文件大小区间、文件数量,去训练库中获取相近数据特征对应的参数配置。进行任务运行,监控任务运行过程中资源等情况,以获知性能瓶颈,以及可调控空间。
47.上述spark离线计算性能的调优方法,通过对源数据进行预处理,形成适合集群离线计算的预处理数据,避免因源数据分布原因导致的性能问题;通过监控情况,结合积累的训练库,可以快速进行调优,达到目标同时合理利用集群资源。另外还可以形成整合数据与性能调优参数匹配模型,提升调优效率。
48.在其中一个实施例中,所述方法包括:
49.将所述任务监控信息反馈至所述训练库,当确定未完成spark离线计算性能的调优时,重新触发所述训练库进行参数配置推荐。
50.具体地,根据预处理数据的特征,与训练库中做匹配,获取推荐的参数配置值。根据配置推荐值提交并运行任务,同时监控任务运行过程中集群资源的使用情况以及任务运行过程shuffle垃圾回收(gc)、磁盘io压力、网络压力等任务监控信息,并将任务监控信息反馈给训练库做临时记录,为进一步调优进行参考。
51.根据所述任务监控信息判断未完成调优操作时,再次触发训练库进行参数配置推荐。
52.在其中一个实施例中,所述方法包括:
53.当缺乏数据源时,根据业务数据的特性生成测试数据,将所述测试数据作为源数据。
54.具体地,根据项目实际业务数据的特性,如单数据文件大小区间、处理业务数据量级、批处理业务文件数,自定义demo或者使用基准工具模拟生成测试数据,为后续spark离
线计算性能测试做准备。
55.在一个实施例中,使用基准工具teragen模拟生成10t数据量,单文件大小为50mb,文件数量约21w个。
56.在其中一个实施例中,所述对数据源和测试数据进行预处理包括:
57.根据预设规则选择预处理模型,所述预处理模型包括小文件合并模型和大文件拆分模型。
58.具体地,在数据预处理中,首先根据业务应用预设规则,如小文件达到某个数量级时进行合并预处理;其次根据业务需要引入预处理算法,如lsi模型、基于深度学习的文件匹配模型等。当源数据进入数据预处理时,根据预设的规则会触发对应的预处理,最终得到预处理数据。
59.以spark terasort词频排序应用为例,数据生成完成后,通过预设的数据预处理算法快速对测试数据进行整合,如小文件合并、大文件拆分等,以便得到与任务资源匹配的单文件大小和文件数量,从而降低任务间执行方差,以提升任务运行效率。测试数据整合完成后,根据集群磁盘情况,将整合后数据放入快速磁盘中,以便数据快速读取和处理。
60.具体的数据预处理过程包括:
61.(1)根据预设规则选择预处理模型,如根据单文件大小和数量,选择小文件合并或大文件拆分模型,估算合并或者拆分目标值。
62.(2)预处理模型选择
63.情况一、[小文件合并]:触发lsi模型,根据算法模型获取文件间相似度排序。结合(1)中估算的合并目标值,推算几个小文件需要合并成一个,根据相识度排序高到低进行合并;合并后的文件标记预处理标识。再次随机选择一个文件,直到所有文件进行的预处理。
[0064]
情况二、[大文件拆分]:使用基于深度学习的文件匹配模型中的深层次的句子间模型,对每个大文件进行句子间匹配。在文件拆分过程中,结合步骤(1)中估算的拆分目标,将匹配度高的拆分至一个文件中。
[0065]
(3)如果集群存储资源富裕,则还可以使用快速磁盘(指内存磁盘、ssd磁盘等io吞吐较快的磁盘),将预处理数据放入快速磁盘中,为后续处理进一步提升性能。
[0066]
在其中一个实施例中,所述方法包括:
[0067]
所述任务监控信息包括任务性能值,当所述任务性能值满足预定条件时,确定完成调优。
[0068]
具体地,任务完成后,将任务性能值与目标值作对比,如果达到目标值,则完成调优。若未达目标值,则再次触发训练库推荐配置,根据最新配置提交任务运行。
[0069]
在其中一个实施例中,所述方法包括:
[0070]
当再次触发训练库进行参数配置推荐时,根据所述任务监控信息自动调整任务资源配置,并配置内存异构磁盘;所述任务监控信息包括shufflegc、磁盘io压力信息、集群资源使用信息。
[0071]
具体地,当再次触发训练库时,会根据步骤s2中监控的信息进行判断。如根据对shuffle gc、磁盘io、集群资源的监控,自动调整任务资源配置、配置内存异构磁盘,以获取较优的spark离线计算性能,更新丰富训练库。
[0072]
优化方法包括:
[0073]
(1)离线计算读取整合数据后释放快盘空间;
[0074]
(2)根据监控shuffle阶段gc的情况,如果出现gc则适度调大shuffle数量;
[0075]
(3)根据监控磁盘io和集群内存资源的消耗情况,将剩余的内存配置成异构的hdfs存储,加快io写入速度,以提升性能。
[0076]
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0077]
在一个实施例中,如图2所示,提供了一种spark离线计算性能的调优装置,所述装置包括:
[0078]
处理模块201,用于对数据源进行预处理,得到预处理数据;
[0079]
调用模块202,用于将所述预处理数据与训练库进行匹配,从所述训练库中获取推荐参数配置信息,所述训练库中存储有数据特征与推荐参数配置信息之间的对应关系;
[0080]
监控模块203,用于根据所述推荐参数配置信息运行任务,得到任务监控信息,根据所述任务监控信息,确定是否完成spark离线计算性能的调优。
[0081]
在其中一个实施例中,所述监控模块203用于:
[0082]
将所述任务监控信息反馈至所述训练库,当确定未完成spark离线计算性能的调优时,重新触发所述训练库进行参数配置推荐。
[0083]
在其中一个实施例中,所述处理模块201用于:
[0084]
当缺乏数据源时,根据业务数据的特性生成测试数据,将所述测试数据作为源数据。
[0085]
在其中一个实施例中,所述处理模块201对数据源和测试数据进行预处理包括:
[0086]
根据预设规则选择预处理模型,所述预处理模型包括小文件合并模型和大文件拆分模型。
[0087]
在其中一个实施例中,所述监控模块203用于:
[0088]
当所述任务监控信息中的任务性能值满足预定条件时,确定完成调优。
[0089]
在其中一个实施例中,所述监控模块203用于:
[0090]
当再次触发训练库进行参数配置推荐时,根据所述任务监控信息自动调整任务资源配置,并配置内存异构磁盘;所述任务监控信息包括shufflegc、磁盘io压力信息、集群资源使用信息。
[0091]
关于spark离线计算性能的调优装置的具体限定可以参见上文中对于spark离线计算性能的调优方法的限定,在此不再赘述。上述spark离线计算性能的调优装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0092]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0093]
对数据源进行预处理,得到预处理数据;
[0094]
将所述预处理数据与训练库进行匹配,从所述训练库中获取推荐参数配置信息,所述训练库中存储有数据特征与推荐参数配置信息之间的对应关系;
[0095]
根据所述推荐参数配置信息运行任务,得到任务监控信息,根据所述任务监控信息,确定是否完成spark离线计算性能的调优。
[0096]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0097]
将所述任务监控信息反馈至所述训练库,当确定未完成spark离线计算性能的调优时,重新触发所述训练库进行参数配置推荐。
[0098]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0099]
缺乏数据源时,根据业务数据的特性生成测试数据,将所述测试数据作为源数据。
[0100]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0101]
根据预设规则选择预处理模型,所述预处理模型包括小文件合并模型和大文件拆分模型。
[0102]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0103]
当所述任务监控信息中的任务性能值满足预定条件时,确定完成调优。
[0104]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0105]
当再次触发训练库进行参数配置推荐时,根据所述任务监控信息自动调整任务资源配置,并配置内存异构磁盘;所述任务监控信息包括shufflegc、磁盘io压力信息、集群资源使用信息。
[0106]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0107]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0108]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
技术特征:
1.一种spark离线计算性能的调优方法,其特征在于,所述方法包括:对数据源进行预处理,得到预处理数据;将所述预处理数据与训练库进行匹配,从所述训练库中获取推荐参数配置信息,所述训练库中存储有数据特征与推荐参数配置信息之间的对应关系;根据所述推荐参数配置信息运行任务,得到任务监控信息,根据所述任务监控信息,确定是否完成spark离线计算性能的调优。2.如权利要求1所述的方法,其特征在于,所述方法包括:将所述任务监控信息反馈至所述训练库,当确定未完成spark离线计算性能的调优时,重新触发所述训练库进行参数配置推荐。3.如权利要求2所述的方法,其特征在于,所述方法还包括:当缺乏数据源时,根据业务数据的特性生成测试数据,将所述测试数据作为源数据。4.如权利要求1-3任一项所述的方法,其特征在于,所述对数据源进行预处理包括:根据预设规则选择预处理模型,所述预处理模型包括小文件合并模型和大文件拆分模型。5.如权利要求1所述的方法,其特征在于,所述方法包括:所述任务监控信息包括任务性能值,当所述任务性能值满足预定条件时,确定完成调优。6.如权利要求5所述的方法,其特征在于,所述方法包括:当再次触发训练库进行参数配置推荐时,根据所述任务监控信息自动调整任务资源配置,并配置内存异构磁盘;所述任务监控信息包括shuffle垃圾回收信息、磁盘i o压力信息、集群资源使用信息。7.一种spark离线计算性能的调优装置,其特征在于,所述装置包括:处理模块,用于对数据源进行预处理,得到预处理数据;调用模块,用于将所述预处理数据与训练库进行匹配,从所述训练库中获取推荐参数配置信息,所述训练库中存储有数据特征与推荐参数配置信息之间的对应关系;监控模块,用于根据所述推荐参数配置信息运行任务,得到任务监控信息,根据所述任务监控信息,确定是否完成spark离线计算性能的调优。8.如权利要求7所述的装置,其特征在于,所述监控模块用于:将所述任务监控信息反馈至所述训练库,当确定未完成spark离线计算性能的调优时,重新触发所述训练库进行参数配置推荐。9.如权利要求8所述的装置,其特征在于,所述处理模块还用于:当缺乏数据源时,根据业务数据的特性生成测试数据,将所述测试数据作为源数据。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
技术总结
本申请涉及一种spark离线计算性能的调优方法、装置及存储介质。所述方法包括:对数据源进行预处理,得到预处理数据;将所述预处理数据与训练库进行匹配,从所述训练库中获取推荐参数配置信息,所述训练库中存储有数据特征与推荐参数配置信息之间的对应关系;根据所述推荐参数配置信息运行任务,得到任务监控信息,根据所述任务监控信息,确定是否完成spark离线计算性能的调优。本方法能够避免因源数据分布原因导致的性能问题,可以合理利用集群资源进行快速调优,提升调优效率。提升调优效率。提升调优效率。
技术研发人员:申晓青
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2021.11.12
技术公布日:2022/3/8