一种Spark平台性能自动优化方法

文档序号:10512007阅读:376来源:国知局
一种Spark平台性能自动优化方法
【专利摘要】本发明公开了一种Spark平台性能自动优化方法。本方法为:1)根据Spark平台的执行机制创建一Spark应用性能模型;2)针对一设定的Spark应用,选取该Spark应用的部分数据负载在该Spark平台上运行,采集Spark应用运行时的性能数据;3)将采集的性能数据输入Spark应用性能模型,得到运行该Spark应用时Spark应用性能模型中各参数的取值;4)将步骤3)获得的性能模型各参数值赋给Spark应用性能模型,计算Spark平台在不同配置参数组合时的性能(应用总执行时间),然后输出Spark平台性能最优时的配置参数组合。本发明具有低门槛、易于扩展、成本低和效率高等优点。
【专利说明】
一种Spark平台性能自动优化方法
技术领域
[0001] 本发明涉及大数据处理平台性能优化领域,具体是一种Spark平台性能自动优化 方法。
【背景技术】
[0002] 随着大数据时代的到来,与之对应的大数据处理新技术不断发展,同时也产生了 多种大数据处理平台,其中最惹人注目的当属Apache Spark。
[0003] Spark是一种基于内存计算的分布式大数据并行处理平台,它集批处理、实时流处 理、交互式查询与图计算于一体,避免了各种运算场景下需要部署不同集群所带来的资源 浪费。
[0004] Spark基于内存计算的属性使其天生具有迭代计算的优势,特别适合机器学习中 的迭代算法。与Hadoop的MapReduce相比,Spark基于内存计算的运算速度要快100倍以上。 同时Spark支持Java、Python和Scala等多种语言的API,还支持超过80种高级算法,使用户 可以快速构建不同的应用。同时Spark有一个完整的生态系统,支持丰富的应用计算场景。 Spark提供了统一的底层计算框架,同时提供丰富的组件来满足不同的应用场景,如针对批 处理和交互式查询的Spark SQL、针对实时流计算的Spark Streaming,针对机器学习的 Spark ML1 ib,针对图计算的Spark GraphX。Spark在速度,易用性,通用性等方面的明显优 势,使其应用前景不可限量。
[0005] 随着Spark平台的在国内外的广泛应用,其在实际应用中的一些问题也随之暴露。 一个最主要问题就是Spark性能优化问题,由于大数据平台执行环境极为复杂,受到底层硬 件、体系结构、操作系统、Spark本身以及用户编写的应用程序等多层次的综合影响,用户实 际应用中很难达到理论的性能峰值,而且Spark这种分布式计算平台底层执行机制复杂,而 且对用户来说是透明的,这样就导致普通用户很难找到性能瓶颈,更不要说去做进一步的 优化了。
[0006] 目前针对Spark集群的性能分析,基本上是靠专家用户的丰富的经验积累,并且需 要专家用户深刻理解Spark底层的执行机制,然后结合特定应用进行具体分析。门槛之高让 普通用户望而却步,因此普通用户面对Spark平台的性能问题,几乎是束手无策。一般只能 是增加硬件投入,如果通过添加新的节点、扩展集群内存、增加网络带宽和增加存储容量等 这种巨大的投入来换取Spark平台的性能提升,不仅需要巨大的资金投入同时也造成的极 大的浪费,因为这种解决方式根本没有使硬件资源得到充分利用。因此Spark平台的性能优 化问题亟待解决。
[0007] 为了解决Spark平台的性能问题,首先需要对Spark平台建立性能模型,一个好的 性能模型是Spark平台性能分析、瓶颈定位和性能优化等后续工作的基础。由于大数据相 关技术提出时间不长,整个技术体系也尚未完善,而Spark更是在2010年才首次开源,2013 年才成为Apache软件基金会的顶级项目,2014年起才真正开始在国内大规模流行。因此在 Spark的性能优化领域,业界几乎还是空白。然后随着Spark的应用范围越来越广,普及程度 越来越高,Spark平台的性能问题也越来越突出。因此针对Spark平台的性能建模就显得尤 为迫切。正是考虑到这种现实情况,我们发明了一种基于开销(Cost)的Spark性能模型。通 过建立Spark性能模型,可以大大降低Spark平台的性能分析成本,同时也可以更好地指导 Spark平台的性能瓶颈定位,进而达到优化Spark平台性能的目的。
[0008] Spark提供了 180余个配置参数供用户根据自己的具体应用自行调整,以达到优化 性能的目的,这也是用户对Spark应用进行性能优化的最简单、最有效的方式。然而现有的 Spark参数优化方法主要有三种:(1)在实际的Spark平台上运行Spark应用程序,然后依靠 专家用户丰富的经验,以及对Spark平台的深刻理解手动进行参数调整,然后通过运行实际 负载来验证参数优化的效果;(2)暴力破解,通过枚举所有配置参数组合,然后执行实际负 载来比较哪种参数组合效果最优;(3)通过修改Spark本身的源代码,通过插粧等技术手段 将参数优化的功能模块加入Spark源代码中,然后对Spark源码进行重新编译,重新部署 Spark平台,来达到参数优化的目的。
[0009] 然而现有的性能优化方法存在着严重的不足:首先是成本很高,效率低,在方法 (1)和方法(2)中都需要在Spark平台上多次运行实际负载来验证参数调整的正确性,这样 就会占用大量的系统资源,而且每一次的参数调整都需要很长的时间周期;其次是门槛很 高,方法(1)需要用户是有丰富经验且对Spark执行机制有深刻理解的专家用户,而方法(3) 则需要用户有修改Spark源代码的能力,而这往往都是普通用户所不具备的,这无疑大大增 加了对Spark平台进行优化的门槛;最后,方法(3)需要对Spark本身的源代码进行修改,这 无疑增加了 Spark本身的复杂性,同时也带来了不稳定因素。
[0010] 针对这种现实情况,本发明提出了一种针对Spark平台的自动性能优化方法。

【发明内容】

[0011] 针对现有技术缺陷,本发明的目的在于提供一种Spark平台性能自动优化方法,从 而解决现有方法中存在的高成本、低效率、高门槛以及增加系统复杂性和不稳定因素的问 题。
[0012]我们首先深入研究了基于内存的Spark计算框架的底层执行机制,理清Spark应用 从提交到最后执行完成的整个流程的底层进程调用过程。根据Spark计算模型的执行特点 建立其性能模型。
[0013]首先对Spark应用的执行机制描述如下:Spark计算模型中的核心抽象是弹性分布 式数据集(Resilient Distributed Datasets,RDD) jpark应用整个执行过程实质上就是 对RDD进行的一系列相关操作。Spark框架定义了两种RDD操作类型:Transformat ion和 Action。其中Transformat ion是延迟执行的,也就是只有遇到Act ion操作才会触发作业 (Job)的提交,而1'瓜118;^1'1]^1:;[011操作不会触发作业(]〇13)的提交。3口34会根据1^)0的依赖 关系生成有向无环图(Directed Acyclic Graph,DAG),并根据RDD的依赖关系将DAG划分成 不同的阶段(Stage),阶段(Stage)的划分是以宽依赖(也就是需要Shuffle过程的操作)为 分界的。RDD转换及Stage划分如图2所示。
[0014] 一个Spark应用包含一系列的作业(Job)构成。一个Job对应着一个RDD的Action操 作。一个RDD的Action操作会触发Job提交,然后将RDD的依赖关系转换为DAG图,然后根据宽 依赖划分为若干阶段Stage。一个阶段Stage是一组任务Task,这一组任务Task是相同的执 行逻辑操作一组RDD的不同分区(part it ion)上。由于这组Task的操作对象是RDD的分区,而 RDD的分区是分布在不同的节点之上,所以Task的执行天然具有并行性。而Stage的执行则 不同,有些Stage的执行需要依赖于其他Stage的执行结果,而有些Stage则可以并行执行。 因此我们将Stage分为可串行的Stage以及可并行的Stage两类。
[00?5]基于以上的分析,我们将建立的Spark应用性能模型描述如下:
[0016] 首先我们定义Application表示一Spark应用,具体表示如下:
[0017] Application= {Jobi | 0〈 = i〈=M}
[0018] 其中Μ为Appli cat ion中的Job数。Job表不一个应用Appli cat ion中的Act ion操作 所触发的作业。Job表示如下:
[0019] Jobi = {Stages,s, Stages,p | 0< = χ< = Ν}
[0020] 其中N为一个Jobi中所包含的根据宽依赖所划分的阶段Stage数量,包括Stagex,s, Stagex,P,Stagex, s表示第X个阶段的可串行阶段,Stagex, P表示第X个阶段的可并行阶段, Stage表示如下:
[0021 ] Stagei = {Taskij | 0< = j< = K}一个Stagei包含一组Task集,Taski,j表示第i个阶 段Stagei中的第j个任务,其数目由RDD的Parti tion所决定,我们用K表示,Spark中默认分 区函数是依据Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)的Block 进行分区的,所以K的计算公式如下:
[0023] 其中InputDataSize表示输入数据大小,BlockSize表示HDFS的block的大小。作 业执行时间可表示为:
[0025]其中:
[0026] Startup表示启动阶段的准备时间;
[0027] Cleanup表示最后清理阶段的时间;
[0028] StageTimes(i)表示第i个可串行Stage的执行时间;
[0029] StageTimeP(j)表示第j个可并行Stage的执行时间。
[0030] Stage的执行时间可表示为:
[0032]其中:
[0033] P代表整个集群所有节点总共的CPU核数,计算公式如下:
[0034] P - EHi Q
[0035] Η表示集群中Worker的数量。Ci表示第i个Worker的CPU核数。
[0036] Kc表示在CPU核c上串行执行的Task数目
[0037] TaskTimec,i代表在CPU核c上第i个Task的执行时间,计算公式如下:
[0038] TaskT ?η?θ - TunCompress+TDeserialization+TRun+Tserialization+Tc〇mpress
[0039] TunCompress表不解压缩时间
[0040] TDeserialization表不反序列化时间
[0041 ] TRun表示Task在CPU上执行时间
[0042] Tserialization表不序列化时间
[0043] Tcompress表不压缩时间
[0044] 计算公式如下:
[0050]其中:
[0051 ] UnCompressTimePerByte表示解压缩一个字节数据所需的时间;
[0052] DeserializationTimePerByte表示反序列化一个字节数据所需的时间;
[0053] RunTimePerByte表示CPU处理一个字节数据所需的时间;
[0054] SerializationTimePerByte表示序列化一个字节数据所需的时间;
[0055] CompressTimePerByte表示压缩一个字节数据所需的时间。
[0056] 同时,我们定义CompressCost表示压缩开销,CompressRatio表示压缩率,具体计 算公式如下:
[0059]由于Stage的调度依赖于DAG图,而DAG图本身的复杂程度是不可控的,一个DAG图 可以包含可并行部分和可串行部分,同时可并行部分有多少分支也是不确定的,而且可并 行部分每次调度选择的分支是随机的,所以很难确定Stage的具体执行路线。同时一个 Spark应用的DAG图一般是不依赖于数据集大小的,而是依赖应用本身所确定的RDD之间的 依赖关系。也就是说执行同一应用的不同大小的数据集负载,所生成的DAG图一般是不变 的。因此我们利用这一特性设计了一个Spark Stage模拟调度器(Spark Stage Simulation Scheduler),首先执行小规模数据集的负载,然后通过产生的日志文件提取出此应用对应 的DAG图,然后可以根据此DAG图以及集群的具体性能环境去模拟更大规模数据集下Spark 执行过程中实际的Stage调度情况,从而得到一个接近真实的Stage执行序列,完成Stage的 调度模拟。
[0000] Spark Stage模拟调度器用于模拟Spark作业提交后的Stage的执行流程,调度算 法和执行机制与Spark的底层调度机制完全相同,保证了模拟调度器更加接近真实情况。模 拟调度器接收Stage的DAG图和Spark配置参数以及平台的硬件配置作为输入,然后执行调 度算法,模拟Stage的执行流程。通过前面的分析,根据性能模型我们已经可以得到一个 Stage内部的Task的执行时间和执行序列,进一步我们可以得到单个Stage的预计执行时 间。因此通过Spark Stage模拟调度器我们可以得到Stage的执行序列,以及第一个Stage开 始的时间戳StartTime,和最后一个Stage结束的时间戳EndTime,最后可以计算Job的预计 执行时间。我们将JobTime的计算公式修订如下:
[0061 ] JobT ime = Startup+(EndT ime-StartT ime)+C1eanup
[0062]进一步地,在基于开销的Spark性能模型基础上,我们发明了一种Spark平台性能 自动优化方法。结合图1介绍本发明的整体架构,整个Spark平台性能自动优化方法包含四 个部分:性能数据采集,性能分析与预测,前端展示与交互,参数自动优化。
[0063] (1)性能数据采集:针对用户应用采集Spark平台运行时的性能数据,包括平台硬 件配置、每个5七386的执行时间、内存占有率、0?11占有率、1即1^〇3七33丨26、〇1^口1^〇3七33丨26, 网络上行速度、网络下行速度等度量指标,以及Spark本身的参数配置文件和eventLog日志 文件。
[0064] (2)性能分析与预测:在基于开销的Spark性能模型的基础之上,结合采集到的性 能数据,可以向用户直观地展示Spark平台执行用户应用的性能表现;将采集的性能数据做 预处理(包括格式转换、筛选、统计、汇总,不同数据间的集成等)后作为输入,输入到模型对 应的参数中。同时用户可以自定义设置不同的Spark配置参数,在不执行实际负载的情况 下,预测出用户自定义配置参数下的Spark平台的性能表现,以指导用户进行性能优化。 [0065] (3)前端展示与交互:用户通过Web浏览器可以查看Spark平台的运行情况,并且可 以自定义设置Spark配置参数,从而可以进一步进行性能分析与预测,得到用户自定义参数 下的Spark平台的性能表现。
[0066] (4)参数自动优化:搜索整个Spark配置参数组合的解空间,以找到最优的参数配 置,从而使Spark平台的性能达到最优。
[0067] 本发明执行过程如下:
[0068] (1)用户执行一 Spark应用程序,运行小规模数据集,然后进行性能数据采集,获取 集群性能数据,以及用户程序的特征信息,包括用户程序所确定的RDD之间的依赖和转换关 系,以及执行序列,各阶段的执行时间等信息。
[0069] (2)用户通过Web浏览器选择执行不同的功能。
[0070] (2-1)如果用户选择Spark平台性能监测功能,则通过数据可视化技术将性能数据 以图表形式展示给用户,以便用户对Spark平台的性能有一个直观的了解。
[0071] (2-2)如果用户选择Spark平台性能预测功能,则给用户提供配置参数自定义接 口,在用户自定义修改Spark配置参数后,可得到在用户自定义的Spark配置参数下的Spark 平台的性能,以便用户直观地理解配置参数调整对Spark平台性能的影响。
[0072] (2-3)如果用户选择参数自动优化功能,则通过预测不同配置参数组合下的Spark 平台的性能,在整个解空间中搜索最优化的配置参数组合,以达到Spark平台性能自动优化 的目的。
[0073] (3)用户关闭Web浏览器交互界面,整个流程结束。
[0074] 本发明提出的一种Spark平台性能自动优化方法,与现有技术相比,具有以下优 势:
[0075] (1)低门槛。由于本发明所述的Spark平台性能自动优化方法对最终用户来说是黑 盒优化,用户无需了解底层细节,整个过程都是自动化完成的,对用户都是透明的。同时本 发明通过Web形式,提供了良好的性能数据可视化手段和用户交互接口,便于用户理解 Spark平台性能的实际运行情况,大大降低了用户的使用门槛。
[0076] (2)保证了Spark平台的稳定性,同时易于扩展。由于本方法无需修改Spark源代 码,所以保证了 Spark平台的稳定性,同时也不会增加系统的复杂性。同时由于不需要修改 Spark源代码,甚至不依赖于具体的Spark版本,而是对Spark底层最核心的计算模型进行分 析建模,因此本方法可以几乎不做任何修改而方便的应用于不同规模、甚至不同版本的 Spark平台,具有良好的可扩展性。
[0077] (3)高效率和低成本。因为本发明是在基于开销的Spark性能模型之上对Spark的 不同配置参数下的性能进行预测,而无需执行实际负载,因此在成本上具有明显优势。同时 本发明是在整个参数配置组合的解空间里自动搜索出最优配置方案,因此具有很高的效率 优势。
【附图说明】
[0078]图1为本发明方法的架构图;
[0079] 图2为本发明的整体流程图;
[0080] 图3为RDD转换及Stage划分示意图。
【具体实施方式】
[0081] 下面结合附图和具体实施案例,进一步阐明本发明,应理解这些实施案例仅用于 说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明 的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0082] 如图1所示,本发明首先基于开销性能模型,分为四个部分:性能数据采集,性能分 析与预测,前端展示与交互和参数自动优化。
[0083]首先进行性能数据采集,针对用户应用采集Spark平台运行时的性能数据,包括集 群运行时环境、硬件配置、内存占有率、CPU占有率、网络上行下行速度等度量指标,具体详 细性能指标如表1所示。此外采集的性能数据还包括Spark本身的参数配置文件和 eventLog日志文件。
[0084] 表1为性能指标表
[0085]
[0086] 其次,在基于开销的Spark性能模型的基础之上,结合采集到的集群性能数据,可 以向用户直观地展示集群执行用户应用的性能表现。同时用户可以自定义设置不同的 Spark参数,通过性能预测与分析能够在不执行实际负载的情况下,预测出在用户自定义参 数下的集群性能表现,以指导用户进行性能优化。
[0087]前端展示交互模块主要用户数据展示以及用户交互,用户通过Web浏览器可以查 看集群的性能数据,并且可以通过前端展示交互模块与系统进行交互,选择不同的功能。用 户通过前端展示模块完成自定义设置Spark配置参数,从而进一步调用性能预测分析模块, 来查看在用户自定义参数下的集群性能表现。
[0088]参数自动优化是在性能预测与分析的基础之上,搜索整个Spark配置参数组合的 解空间,以找到最优的参数配置,从而使集群性能达到最优。
[0089]本发明基于开销性能模型的Spark集群自动优化方法包含以下步骤:
[0090] (1)用户执行一Spark应用程序,获取Spark平台的性能数据,以及用户程序的特征 信息。具体包含以下步骤:
[0091 ] (1-1)用户执行启动脚本,提交Spark作业,并收集Spark平台的性能数据。
[0092] (1-2)将各个节点的性能数据和Spark配置文件,以及Spark系统的eventLog日志 文件集成汇总至一个节点之上以便进行进一步处理。
[0093] (1-3)预处理性能数据。为了便于后续性能数据的使用,我们需要对性能数据进行 预处理,包括对性能数据做筛选,以及特定字段(Stage的执行时间,序列化时间、反序列时 间、压缩时间、解压缩时间、JVM垃圾回收(GC)时间、输入数据大小(InputSize)、输出数据大 小(OutputSize)、获取结果时间(Getting Result Time)、输入的记录数(InputRecords)、 输出的记录数(OutputRecords)、Shuffle过程读数据时间等)的数据统计和汇总,具体详细 字段描述如表2所示。同时为了便于通过Web形式向用户展示数据,我们采用Json格式对性 能数据进行存储。
[0095] (1-4)将预处理过的各节点的性能数据文件以及eventLog日志文件进行汇总并上 传至HDFS系统。
[0096] (2)用户通过Web浏览器选择执行不同的功能。
[0097] (2-1)如果用户选择Spark平台性能监测功能,则通过数据可视化技术将性能数据 以图表形式展示给用户,以便用户对Spark平台性能有一个直观的了解。
[0098] (2-2)如果用户选择集群性能预测功能,则给用户提供配置参数自定义接口,在用 户自定义修改Spark配置参数后,可以通过性能分析预测,预测在用户自定义的Spark参数 下的Spark平台性能,以便于用户直观地理解参数调整对集群的性能影响。具体包含以下步 骤:
[0099] (2-2-1)用户选择集群性能预测功能,系统提供Spark参数配置接口
[0100] (2-2-2)用户通过参数配置接口配置不同的Spark参数,然后执行性能预测
[0101] (2-2-3)根据基于开销的Spark性能模型计算用户配置参数条件下的集群性能表 现
[0102] (2-2-4)利用数据可视化技术将预测的集群性能通过Web页面展示给用户。
[0103] (2-3)如果用户选择参数自动优化功能,则将通过预测不同配置参数组合下的 Spark平台性能,在整个配置参数组合的解空间中搜索最优化的配置参数组合方式,以达到 集群性能自动优化的目的。具体包含以下步骤:
[0104] (2-3-1)首先将整个Spark配置参数空间设为原始采样空间,原始采样空间是一个 维数为P的高维空间,其中P为配置参数项的个数。
[0105] (2-3-2)通过随机函数,随机确定一组配置参数,然后固定其中的p-Ι维,对第1维 的参数随机抽样η个样本,通过基于开销的Spark应用性能模型,计算这η个样本点的性能 (即在此参数组合下的Spark平台的预计执行时间),然后得出其中的最优点C1。
[0106] (2-3-3)将第一维参数值固定为C1点的值,然后在p-Ι维的采样空间里通过随机函 数进行随机抽样η个样本点。然后计算η个样本点的值,得到其中的最优点C2。
[0107] (2-3-4)如果C2优于C1,则将C2中的p-Ι维固定,对第一维参数进行随机抽样η个样 本,找出其中的最优的样本C3。又分为两种情况:
[0108] 若C3优于C2,则返回(2-3-3)迭代此过程。
[0109] 若C3不优于C2,或者迭代次数大于Τ,则停止迭代,固定第一维参数的值,同时将采 样空间降至p-Ι维。
[0110] (2-3-5)如果C2不优于C1,则固定第一维的参数值同时将整个采样空间降维至Ρ-1 维。
[0111] (2-3-6)递归实现上述步骤,直到确定了所有配置参数的值返回最优点,即最佳的 配置参数组合。
[0112] (3)用户关闭Web浏览器交互界面,整个流程结束。
【主权项】
1. 一种Spark平台性能自动优化方法,其步骤为: 1) 根据Spar k平台的执行机制创建一 Spar k应用性能模型; 2) 针对一设定的Spark应用,选取该Spark应用的部分数据负载在该Spark平台上运行, 采集Spark应用运行时的性能数据; 3) 将采集的性能数据输入Spark应用性能模型,得到运行该Spark应用时Spark应用性 能模型中各参数的取值; 4) 将步骤3)获得的性能模型各参数值赋给Spark应用性能模型,计算Spark平台在不同 配置参数组合时的性能,然后输出Spark平台性能最优时的配置参数组合。2. 如权利要求1所述的方法,其特征在于,Spark应用性能模型为:Application = {Jobi I 0〈 = i〈 = M},Jobi= {Stagex,s,Stagex,P I 0〈 = χ〈 = Ν} ;M为Spark应用中的作业数,一个作业 对应着一个RDD的Action操作;N为第i个作业Jobi中所包含的根据宽依赖所划分的阶段Stage 数;Stagex, s表示第X个阶段的可串行阶段;Stagex, P表示第X个阶段的可并行阶段;每一阶段 包含一组任务Task集,Tasku表示第i个阶段Stag ei中的第j个任务,其数目K由RDD的分区 Partition 决定,其中 K: = ln^tP^SKe ,,InputDataSize 为输入数据大小,BlockSize为 HDFS块Block 的大小;作业执行时间 j〇bTiiT!e..= Startup + Σ,?ι StagcTimos(〇 + max(stageTimcp(/)^ + Cleanup , Startup表示启动阶段的准备时间,Cleanup表示最后清理阶段的时间,StageTimes(i)表示 第i个可串行阶段Stage的执行时间,StageTimeP(j)表示第j个可并行阶段Stage的执行时 间;阶段Stage的执行时间_= Startup + .Σ_:ιTaskTim%, + Cleanup,p代表该 Spark平台的CPU核数,Kc表示在CPU核c上串行执行的任务Task数,TaskTime。, i代表在CPU核 c上第i个任务Task的执行时间;每一任务Task的执行时间Task Time = Tunc empress + TDeserialization+TRun+Tserialization+Tc〇mpress,TlInCompressi^TJ^角牛日寸间,TDeserialization^^-/jN 1?. 列化时间,TRun表示任务Task在CPU上执行时间,Tserialization表示序列化时间,Tc? press表示压 缩时间。3. 如权利要求2所述的方法,其特征在于,其中,OutputDataSize为输出数据大小,CompressRatio为压缩率,CompressCost为压 缩开销,UnCompressTimePerByte为解压缩一个字节的数据所需时间, De serial izationTimePerByte为反序列化一个字节数据所需的时间,RunTimePerByte为 CPU处理一个字节数据所需的时间,Serial izationTimePerByte为序列化一个字节数据所 需的时间,CompressTimePerByte为压缩一个字节数据所需的时间。4. 如权利要求2所述的方法,其特征在于,首先创建一 Spark平台的阶段Stage模拟调度 器,用于模拟Spark作业Job提交后的阶段Stage的执行流程;Stage模拟调度器接收阶段 Stage的DAG图、Spark平台配置参数以及Spark平台的硬件配置做为输入,然后模拟阶段 Stage的执行流程,得到每一阶段Stage的预计执行时间和阶段Stage的执行序列,然后根据 第一个阶段Stage开始的时间戳StartTime和最后一个阶段Stage结束的时间戳EndTime,计 算作业 Job执行时间 JobT ime = Star tup+ (EndT ime-Star tT ime) +C1 eanup 〇5. 如权利要求2或3所述的方法,其特征在于,所述性能数据包括Spark平台的硬件配 置、每个阶段Stage的执行时间、内存占有率、CPU占有率、输入数据大小、输出数据大小,网 络上行速度、网络下行速度,以及Spark平台的参数配置文件和eventLog日志文件。6. 如权利要求1或2或3所述的方法,其特征在于,得到性能最优时的配置参数组合的方 法为: 61) 将整个Spark参数空间设为原始采样空间,原始采样空间是一个维数为p的高维空 间,其中P为参数配置项的个数; 62) 通过随机函数,随机确定一组配置参数,然后固定其中的p-1维,对第一维的参数随 机抽样η个样本,计算这η个样本点时的Spark平台性能,然后得出其中的最优点C1; 63) 将第一维参数值固定为C1点的值,然后在p-Ι维的采样空间里通过随机函数进行随 机抽样η个样本点,计算η个样本点时的Spark平台性能,得到其中的最优点C2; 64) 如果C2优于C1,则将C2中的p-Ι维固定,对第一维参数进行随机抽样η个样本,找出 其中的最优样本C3:若C3优于C2,则返回步骤63)迭代此过程;若C3不优于C2或者迭代次数 大于Τ,则停止迭代,固定第一维参数的值,同时将采样空间降至p-Ι维;如果C2不优于C1,则 固定第一维的参数值同时将整个采样空间降维至Ρ-1维; 65) 递归实现上述步骤62)~64),直到确定所有配置参数的值返回最优点,即得到性能 最优时的配置参数组合。7. 如权利要求1或2或3所述的方法,其特征在于,得到性能最优时的配置参数组合的方 法为:所述配置参数组合为用户输入自定义配置参数组合,通过数据可视化技术展示用户 配置参数组合对应的性能,确定性能最优时的配置参数组合。8. 如权利要求1或2或3所述的方法,其特征在于,所述性能为Spark应用总执行时间。
【文档编号】G06F9/50GK105868019SQ201610068611
【公开日】2016年8月17日
【申请日】2016年2月1日
【发明人】王国路, 徐俊刚, 刘仁峰
【申请人】中国科学院大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1