CN105868019B - 一种Spark平台性能自动优化方法 - Google Patents
一种Spark平台性能自动优化方法 Download PDFInfo
- Publication number
- CN105868019B CN105868019B CN201610068611.9A CN201610068611A CN105868019B CN 105868019 B CN105868019 B CN 105868019B CN 201610068611 A CN201610068611 A CN 201610068611A CN 105868019 B CN105868019 B CN 105868019B
- Authority
- CN
- China
- Prior art keywords
- spark
- stage
- performance
- parameter
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Game Theory and Decision Science (AREA)
- General Engineering & Computer Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Spark平台性能自动优化方法。本方法为:1)根据Spark平台的执行机制创建一Spark应用性能模型;2)针对一设定的Spark应用,选取该Spark应用的部分数据负载在该Spark平台上运行,采集Spark应用运行时的性能数据;3)将采集的性能数据输入Spark应用性能模型,得到运行该Spark应用时Spark应用性能模型中各参数的取值;4)将步骤3)获得的性能模型各参数值赋给Spark应用性能模型,计算Spark平台在不同配置参数组合时的性能(应用总执行时间),然后输出Spark平台性能最优时的配置参数组合。本发明具有低门槛、易于扩展、成本低和效率高等优点。
Description
技术领域
本发明涉及大数据处理平台性能优化领域,具体是一种Spark平台性能自动优化方法。
背景技术
随着大数据时代的到来,与之对应的大数据处理新技术不断发展,同时也产生了多种大数据处理平台,其中最惹人注目的当属Apache Spark。
Spark是一种基于内存计算的分布式大数据并行处理平台,它集批处理、实时流处理、交互式查询与图计算于一体,避免了各种运算场景下需要部署不同集群所带来的资源浪费。
Spark基于内存计算的属性使其天生具有迭代计算的优势,特别适合机器学习中的迭代算法。与Hadoop的MapReduce相比,Spark基于内存计算的运算速度要快100倍以上。同时Spark支持Java、Python和Scala等多种语言的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。同时Spark有一个完整的生态系统,支持丰富的应用计算场景。Spark提供了统一的底层计算框架,同时提供丰富的组件来满足不同的应用场景,如针对批处理和交互式查询的Spark SQL、针对实时流计算的Spark Streaming,针对机器学习的Spark MLlib,针对图计算的Spark GraphX。Spark在速度,易用性,通用性等方面的明显优势,使其应用前景不可限量。
随着Spark平台的在国内外的广泛应用,其在实际应用中的一些问题也随之暴露。一个最主要问题就是Spark性能优化问题,由于大数据平台执行环境极为复杂,受到底层硬件、体系结构、操作系统、Spark本身以及用户编写的应用程序等多层次的综合影响,用户实际应用中很难达到理论的性能峰值,而且Spark这种分布式计算平台底层执行机制复杂,而且对用户来说是透明的,这样就导致普通用户很难找到性能瓶颈,更不要说去做进一步的优化了。
目前针对Spark集群的性能分析,基本上是靠专家用户的丰富的经验积累,并且需要专家用户深刻理解Spark底层的执行机制,然后结合特定应用进行具体分析。门槛之高让普通用户望而却步,因此普通用户面对Spark平台的性能问题,几乎是束手无策。一般只能是增加硬件投入,如果通过添加新的节点、扩展集群内存、增加网络带宽和增加存储容量等这种巨大的投入来换取Spark平台的性能提升,不仅需要巨大的资金投入同时也造成的极大的浪费,因为这种解决方式根本没有使硬件资源得到充分利用。因此Spark平台的性能优化问题亟待解决。
为了解决Spark平台的性能问题,首先需要对Spark平台建立性能模型,一个好的性能模型是Spark平台性能分析、瓶颈定位和性能优化等后续工作的基础。由于大数据相关技术提出时间不长,整个技术体系也尚未完善,而Spark更是在2010年才首次开源,2013年才成为Apache软件基金会的顶级项目,2014年起才真正开始在国内大规模流行。因此在Spark的性能优化领域,业界几乎还是空白。然后随着Spark的应用范围越来越广,普及程度越来越高,Spark平台的性能问题也越来越突出。因此针对Spark平台的性能建模就显得尤为迫切。正是考虑到这种现实情况,我们发明了一种基于开销(Cost)的Spark性能模型。通过建立Spark性能模型,可以大大降低Spark平台的性能分析成本,同时也可以更好地指导Spark平台的性能瓶颈定位,进而达到优化Spark平台性能的目的。
Spark提供了180余个配置参数供用户根据自己的具体应用自行调整,以达到优化性能的目的,这也是用户对Spark应用进行性能优化的最简单、最有效的方式。然而现有的Spark参数优化方法主要有三种:(1)在实际的Spark平台上运行Spark应用程序,然后依靠专家用户丰富的经验,以及对Spark平台的深刻理解手动进行参数调整,然后通过运行实际负载来验证参数优化的效果;(2)暴力破解,通过枚举所有配置参数组合,然后执行实际负载来比较哪种参数组合效果最优;(3)通过修改Spark本身的源代码,通过插桩等技术手段将参数优化的功能模块加入Spark源代码中,然后对Spark源码进行重新编译,重新部署Spark平台,来达到参数优化的目的。
然而现有的性能优化方法存在着严重的不足:首先是成本很高,效率低,在方法(1)和方法(2)中都需要在Spark平台上多次运行实际负载来验证参数调整的正确性,这样就会占用大量的系统资源,而且每一次的参数调整都需要很长的时间周期;其次是门槛很高,方法(1)需要用户是有丰富经验且对Spark执行机制有深刻理解的专家用户,而方法(3)则需要用户有修改Spark源代码的能力,而这往往都是普通用户所不具备的,这无疑大大增加了对Spark平台进行优化的门槛;最后,方法(3)需要对Spark本身的源代码进行修改,这无疑增加了Spark本身的复杂性,同时也带来了不稳定因素。
针对这种现实情况,本发明提出了一种针对Spark平台的自动性能优化方法。
发明内容
针对现有技术缺陷,本发明的目的在于提供一种Spark平台性能自动优化方法,从而解决现有方法中存在的高成本、低效率、高门槛以及增加系统复杂性和不稳定因素的问题。
我们首先深入研究了基于内存的Spark计算框架的底层执行机制,理清Spark应用从提交到最后执行完成的整个流程的底层进程调用过程。根据Spark计算模型的执行特点建立其性能模型。
首先对Spark应用的执行机制描述如下:Spark计算模型中的核心抽象是弹性分布式数据集(Resilient Distributed Datasets,RDD)。Spark应用整个执行过程实质上就是对RDD进行的一系列相关操作。Spark框架定义了两种RDD操作类型:Transformation和Action。其中Transformation是延迟执行的,也就是只有遇到Action操作才会触发作业(Job)的提交,而Transformation操作不会触发作业(Job)的提交。Spark会根据RDD的依赖关系生成有向无环图(Directed Acyclic Graph,DAG),并根据RDD的依赖关系将DAG划分成不同的阶段(Stage),阶段(Stage)的划分是以宽依赖(也就是需要Shuffle过程的操作)为分界的。RDD转换及Stage划分如图2所示。
一个Spark应用包含一系列的作业(Job)构成。一个Job对应着一个RDD的Action操作。一个RDD的Action操作会触发Job提交,然后将RDD的依赖关系转换为DAG图,然后根据宽依赖划分为若干阶段Stage。一个阶段Stage是一组任务Task,这一组任务Task是相同的执行逻辑操作一组RDD的不同分区(partition)上。由于这组Task的操作对象是RDD的分区,而RDD的分区是分布在不同的节点之上,所以Task的执行天然具有并行性。而Stage的执行则不同,有些Stage的执行需要依赖于其他Stage的执行结果,而有些Stage则可以并行执行。因此我们将Stage分为可串行的Stage以及可并行的Stage两类。
基于以上的分析,我们将建立的Spark应用性能模型描述如下:
首先我们定义Application表示一Spark应用,具体表示如下:
Application={Jobi|0<=i<=M}
其中M为Application中的Job数。Job表示一个应用Application中的Action操作所触发的作业。Job表示如下:
Jobi={Stagex,s,Stagex,p|0<=x<=N}
其中N为一个Jobi中所包含的根据宽依赖所划分的阶段Stage数量,包括Stagex,s,Stagex,p,Stagex,s表示第x个阶段的可串行阶段,Stagex,p表示第x个阶段的可并行阶段,Stage表示如下:
Stagei={Taski,j|0<=j<=K}一个Stagei包含一组Task集,Taski,j表示第i个阶段Stagei中的第j个任务,其数目由RDD的Partition所决定,我们用K表示,Spark中默认分区函数是依据Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)的Block进行分区的,所以K的计算公式如下:
其中InputDataSize表示输入数据大小,BlockSize表示HDFS的block的大小。
作业执行时间可表示为:
其中:
Startup表示启动阶段的准备时间;
Cleanup表示最后清理阶段的时间;
StageTimes(i)表示第i个可串行Stage的执行时间;
StageTimep(j)表示第j个可并行Stage的执行时间。
Stage的执行时间可表示为:
其中:
P代表整个集群所有节点总共的CPU核数,计算公式如下:
H表示集群中Worker的数量。Ci表示第i个Worker的CPU核数。
Kc表示在CPU核c上串行执行的Task数目
TaskTimec,i代表在CPU核c上第i个Task的执行时间,计算公式如下:
TaskTime=TUnCompress+TDeserialization+TRun+TSerialization+TCompress
TUnCompress表示解压缩时间
TDeserialization表示反序列化时间
TRun表示Task在CPU上执行时间
TSerialization表示序列化时间
TCompress表示压缩时间
计算公式如下:
其中:
UnCompressTimePerByte表示解压缩一个字节数据所需的时间;
DeserializationTimePerByte表示反序列化一个字节数据所需的时间;
RunTimePerByte表示CPU处理一个字节数据所需的时间;
SerializationTimePerByte表示序列化一个字节数据所需的时间;
CompressTimePerByte表示压缩一个字节数据所需的时间。
同时,我们定义CompressCost表示压缩开销,CompressRatio表示压缩率,具体计算公式如下:
由于Stage的调度依赖于DAG图,而DAG图本身的复杂程度是不可控的,一个DAG图可以包含可并行部分和可串行部分,同时可并行部分有多少分支也是不确定的,而且可并行部分每次调度选择的分支是随机的,所以很难确定Stage的具体执行路线。同时一个Spark应用的DAG图一般是不依赖于数据集大小的,而是依赖应用本身所确定的RDD之间的依赖关系。也就是说执行同一应用的不同大小的数据集负载,所生成的DAG图一般是不变的。因此我们利用这一特性设计了一个Spark Stage模拟调度器(Spark Stage SimulationScheduler),首先执行小规模数据集的负载,然后通过产生的日志文件提取出此应用对应的DAG图,然后可以根据此DAG图以及集群的具体性能环境去模拟更大规模数据集下Spark执行过程中实际的Stage调度情况,从而得到一个接近真实的Stage执行序列,完成Stage的调度模拟。
Spark Stage模拟调度器用于模拟Spark作业提交后的Stage的执行流程,调度算法和执行机制与Spark的底层调度机制完全相同,保证了模拟调度器更加接近真实情况。模拟调度器接收Stage的DAG图和Spark配置参数以及平台的硬件配置作为输入,然后执行调度算法,模拟Stage的执行流程。通过前面的分析,根据性能模型我们已经可以得到一个Stage内部的Task的执行时间和执行序列,进一步我们可以得到单个Stage的预计执行时间。因此通过Spark Stage模拟调度器我们可以得到Stage的执行序列,以及第一个Stage开始的时间戳StartTime,和最后一个Stage结束的时间戳EndTime,最后可以计算Job的预计执行时间。我们将JobTime的计算公式修订如下:
JobTime=Startup+(EndTime-StartTime)+Cleanup
进一步地,在基于开销的Spark性能模型基础上,我们发明了一种Spark平台性能自动优化方法。结合图1介绍本发明的整体架构,整个Spark平台性能自动优化方法包含四个部分:性能数据采集,性能分析与预测,前端展示与交互,参数自动优化。
(1)性能数据采集:针对用户应用采集Spark平台运行时的性能数据,包括平台硬件配置、每个Stage的执行时间、内存占有率、CPU占有率、InputDataSize、OutputDataSize,网络上行速度、网络下行速度等度量指标,以及Spark本身的参数配置文件和eventLog日志文件。
(2)性能分析与预测:在基于开销的Spark性能模型的基础之上,结合采集到的性能数据,可以向用户直观地展示Spark平台执行用户应用的性能表现;将采集的性能数据做预处理(包括格式转换、筛选、统计、汇总,不同数据间的集成等)后作为输入,输入到模型对应的参数中。同时用户可以自定义设置不同的Spark配置参数,在不执行实际负载的情况下,预测出用户自定义配置参数下的Spark平台的性能表现,以指导用户进行性能优化。
(3)前端展示与交互:用户通过Web浏览器可以查看Spark平台的运行情况,并且可以自定义设置Spark配置参数,从而可以进一步进行性能分析与预测,得到用户自定义参数下的Spark平台的性能表现。
(4)参数自动优化:搜索整个Spark配置参数组合的解空间,以找到最优的参数配置,从而使Spark平台的性能达到最优。
本发明执行过程如下:
(1)用户执行一Spark应用程序,运行小规模数据集,然后进行性能数据采集,获取集群性能数据,以及用户程序的特征信息,包括用户程序所确定的RDD之间的依赖和转换关系,以及执行序列,各阶段的执行时间等信息。
(2)用户通过Web浏览器选择执行不同的功能。
(2-1)如果用户选择Spark平台性能监测功能,则通过数据可视化技术将性能数据以图表形式展示给用户,以便用户对Spark平台的性能有一个直观的了解。
(2-2)如果用户选择Spark平台性能预测功能,则给用户提供配置参数自定义接口,在用户自定义修改Spark配置参数后,可得到在用户自定义的Spark配置参数下的Spark平台的性能,以便用户直观地理解配置参数调整对Spark平台性能的影响。
(2-3)如果用户选择参数自动优化功能,则通过预测不同配置参数组合下的Spark平台的性能,在整个解空间中搜索最优化的配置参数组合,以达到Spark平台性能自动优化的目的。
(3)用户关闭Web浏览器交互界面,整个流程结束。
本发明提出的一种Spark平台性能自动优化方法,与现有技术相比,具有以下优势:
(1)低门槛。由于本发明所述的Spark平台性能自动优化方法对最终用户来说是黑盒优化,用户无需了解底层细节,整个过程都是自动化完成的,对用户都是透明的。同时本发明通过Web形式,提供了良好的性能数据可视化手段和用户交互接口,便于用户理解Spark平台性能的实际运行情况,大大降低了用户的使用门槛。
(2)保证了Spark平台的稳定性,同时易于扩展。由于本方法无需修改Spark源代码,所以保证了Spark平台的稳定性,同时也不会增加系统的复杂性。同时由于不需要修改Spark源代码,甚至不依赖于具体的Spark版本,而是对Spark底层最核心的计算模型进行分析建模,因此本方法可以几乎不做任何修改而方便的应用于不同规模、甚至不同版本的Spark平台,具有良好的可扩展性。
(3)高效率和低成本。因为本发明是在基于开销的Spark性能模型之上对Spark的不同配置参数下的性能进行预测,而无需执行实际负载,因此在成本上具有明显优势。同时本发明是在整个参数配置组合的解空间里自动搜索出最优配置方案,因此具有很高的效率优势。
附图说明
图1为本发明方法的架构图;
图2为本发明的整体流程图;
图3为RDD转换及Stage划分示意图。
具体实施方式
下面结合附图和具体实施案例,进一步阐明本发明,应理解这些实施案例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示,本发明首先基于开销性能模型,分为四个部分:性能数据采集,性能分析与预测,前端展示与交互和参数自动优化。
首先进行性能数据采集,针对用户应用采集Spark平台运行时的性能数据,包括集群运行时环境、硬件配置、内存占有率、CPU占有率、网络上行下行速度等度量指标,具体详细性能指标如表1所示。此外采集的性能数据还包括Spark本身的参数配置文件和eventLog日志文件。
表1为性能指标表
其次,在基于开销的Spark性能模型的基础之上,结合采集到的集群性能数据,可以向用户直观地展示集群执行用户应用的性能表现。同时用户可以自定义设置不同的Spark参数,通过性能预测与分析能够在不执行实际负载的情况下,预测出在用户自定义参数下的集群性能表现,以指导用户进行性能优化。
前端展示交互模块主要用户数据展示以及用户交互,用户通过Web浏览器可以查看集群的性能数据,并且可以通过前端展示交互模块与系统进行交互,选择不同的功能。用户通过前端展示模块完成自定义设置Spark配置参数,从而进一步调用性能预测分析模块,来查看在用户自定义参数下的集群性能表现。
参数自动优化是在性能预测与分析的基础之上,搜索整个Spark配置参数组合的解空间,以找到最优的参数配置,从而使集群性能达到最优。
本发明基于开销性能模型的Spark集群自动优化方法包含以下步骤:
(1)用户执行一Spark应用程序,获取Spark平台的性能数据,以及用户程序的特征信息。具体包含以下步骤:
(1-1)用户执行启动脚本,提交Spark作业,并收集Spark平台的性能数据。
(1-2)将各个节点的性能数据和Spark配置文件,以及Spark系统的eventLog日志文件集成汇总至一个节点之上以便进行进一步处理。
(1-3)预处理性能数据。为了便于后续性能数据的使用,我们需要对性能数据进行预处理,包括对性能数据做筛选,以及特定字段(Stage的执行时间,序列化时间、反序列时间、压缩时间、解压缩时间、JVM垃圾回收(GC)时间、输入数据大小(InputSize)、输出数据大小(OutputSize)、获取结果时间(Getting Result Time)、输入的记录数(InputRecords)、输出的记录数(OutputRecords)、Shuffle过程读数据时间等)的数据统计和汇总,具体详细字段描述如表2所示。同时为了便于通过Web形式向用户展示数据,我们采用Json格式对性能数据进行存储。
(1-4)将预处理过的各节点的性能数据文件以及eventLog日志文件进行汇总并上传至HDFS系统。
(2)用户通过Web浏览器选择执行不同的功能。
(2-1)如果用户选择Spark平台性能监测功能,则通过数据可视化技术将性能数据以图表形式展示给用户,以便用户对Spark平台性能有一个直观的了解。
(2-2)如果用户选择集群性能预测功能,则给用户提供配置参数自定义接口,在用户自定义修改Spark配置参数后,可以通过性能分析预测,预测在用户自定义的Spark参数下的Spark平台性能,以便于用户直观地理解参数调整对集群的性能影响。具体包含以下步骤:
(2-2-1)用户选择集群性能预测功能,系统提供Spark参数配置接口
(2-2-2)用户通过参数配置接口配置不同的Spark参数,然后执行性能预测
(2-2-3)根据基于开销的Spark性能模型计算用户配置参数条件下的集群性能表现
(2-2-4)利用数据可视化技术将预测的集群性能通过Web页面展示给用户。
(2-3)如果用户选择参数自动优化功能,则将通过预测不同配置参数组合下的Spark平台性能,在整个配置参数组合的解空间中搜索最优化的配置参数组合方式,以达到集群性能自动优化的目的。具体包含以下步骤:
(2-3-1)首先将整个Spark配置参数空间设为原始采样空间,原始采样空间是一个维数为p的高维空间,其中p为配置参数项的个数。
(2-3-2)通过随机函数,随机确定一组配置参数,然后固定其中的p-1维,对第1维的参数随机抽样n个样本,通过基于开销的Spark应用性能模型,计算这n个样本点的性能(即在此参数组合下的Spark平台的预计执行时间),然后得出其中的最优点C1。
(2-3-3)将第一维参数值固定为C1点的值,然后在p-1维的采样空间里通过随机函数进行随机抽样n个样本点。然后计算n个样本点的值,得到其中的最优点C2。
(2-3-4)如果C2优于C1,则将C2中的p-1维固定,对第一维参数进行随机抽样n个样本,找出其中的最优的样本C3。又分为两种情况:
若C3优于C2,则返回(2-3-3)迭代此过程。
若C3不优于C2,或者迭代次数大于T,则停止迭代,固定第一维参数的值,同时将采样空间降至p-1维。
(2-3-5)如果C2不优于C1,则固定第一维的参数值同时将整个采样空间降维至p-1维。
(2-3-6)递归实现上述步骤,直到确定了所有配置参数的值返回最优点,即最佳的配置参数组合。
(3)用户关闭Web浏览器交互界面,整个流程结束。
Claims (7)
1.一种Spark平台性能自动优化方法,其步骤为:
1)根据Spark平台的执行机制创建一Spark应用性能模型;其中,Spark应用性能模型为:Application={Jobi|0<=i<=M},Jobi={Stagex,s,Stagex,p|0<=x<=N};M为Spark应用中的作业数,一个作业对应着一个RDD的Action操作;N为第i个作业Jobi中所包含的根据宽依赖所划分的阶段Stage数;Stagex,s表示第x个阶段的可串行阶段;Stagex,p表示第x个阶段的可并行阶段;每一阶段包含一组任务Task集,Taski,j表示第i个阶段Stagei中的第j个任务,其数目K由RDD的分区Partition决定,其中InputDataSize为输入数据大小,BlockSize为HDFS块Block的大小;作业执行时间Startup表示启动阶段的准备时间,Cleanup表示最后清理阶段的时间,StageTimes(i)表示第i个可串行阶段Stage的执行时间,StageTimep(j)表示第j个可并行阶段Stage的执行时间;阶段Stage的执行时间P代表该Spark平台的CPU核数,Kc表示在CPU核c上串行执行的任务Task数,TaskTimec,i代表在CPU核c上第i个任务Task的执行时间;每一任务Task的执行时间TaskTime=TUnCompress+TDeserialization+TRun+TSerialization+TCompress,TUnCompress表示解压缩时间,TDeserialization表示反序列化时间,TRun表示任务Task在CPU上执行时间,TSerialization表示序列化时间,TCompress表示压缩时间;
2)针对一设定的Spark应用,选取该Spark应用的部分数据负载在该Spark平台上运行,采集Spark应用运行时的性能数据;
3)将采集的性能数据输入Spark应用性能模型,得到运行该Spark应用时Spark应用性能模型中各参数的取值;
4)将步骤3)获得的性能模型各参数值赋给Spark应用性能模型,计算Spark平台在不同配置参数组合时的性能,然后输出Spark平台性能最优时的配置参数组合。
2.如权利要求1所述的方法,其特征在于,
其中,OutputDataSize为输出数据大小,CompressRatio为压缩率,CompressCost为压缩开销,UnCompressTimePerByte为解压缩一个字节的数据所需时间,DeserializationTimePerByte为反序列化一个字节数据所需的时间,RunTimePerByte为CPU处理一个字节数据所需的时间,SerializationTimePerByte为序列化一个字节数据所需的时间,CompressTimePerByte为压缩一个字节数据所需的时间。
3.如权利要求1所述的方法,其特征在于,首先创建一Spark平台的阶段Stage模拟调度器,用于模拟Spark作业Job提交后的阶段Stage的执行流程;Stage模拟调度器接收阶段Stage的DAG图、Spark平台配置参数以及Spark平台的硬件配置做为输入,然后模拟阶段Stage的执行流程,得到每一阶段Stage的预计执行时间和阶段Stage的执行序列,然后根据第一个阶段Stage开始的时间戳StartTime和最后一个阶段Stage结束的时间戳EndTime,计算作业Job执行时间JobTime=Startup+(EndTime-StartTime)+Cleanup。
4.如权利要求1或2所述的方法,其特征在于,所述性能数据包括Spark平台的硬件配置、每个阶段Stage的执行时间、内存占有率、CPU占有率、输入数据大小、输出数据大小,网络上行速度、网络下行速度,以及Spark平台的参数配置文件和eventLog日志文件。
5.如权利要求1或2所述的方法,其特征在于,得到性能最优时的配置参数组合的方法为:
61)将整个Spark参数空间设为原始采样空间,原始采样空间是一个维数为p的高维空间,其中p为参数配置项的个数;
62)通过随机函数,随机确定一组配置参数,然后固定其中的p-1维,对第一维的参数随机抽样n个样本,计算这n个样本点时的Spark平台性能,然后得出其中的最优点C1;
63)将第一维参数值固定为C1点的值,然后在p-1维的采样空间里通过随机函数进行随机抽样n个样本点,计算n个样本点时的Spark平台性能,得到其中的最优点C2;
64)如果C2优于C1,则将C2中的p-1维固定,对第一维参数进行随机抽样n个样本,找出其中的最优样本C3:若C3优于C2,则返回步骤63)迭代此过程;若C3不优于C2或者迭代次数大于T,则停止迭代,固定第一维参数的值,同时将采样空间降至p-1维;如果C2不优于C1,则固定第一维的参数值同时将整个采样空间降维至p-1维;
65)递归实现上述步骤62)~64),直到确定所有配置参数的值返回最优点,即得到性能最优时的配置参数组合。
6.如权利要求1或2所述的方法,其特征在于,得到性能最优时的配置参数组合的方法为:所述配置参数组合为用户输入自定义配置参数组合,通过数据可视化技术展示用户配置参数组合对应的性能,确定性能最优时的配置参数组合。
7.如权利要求1或2所述的方法,其特征在于,所述性能为Spark应用总执行时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610068611.9A CN105868019B (zh) | 2016-02-01 | 2016-02-01 | 一种Spark平台性能自动优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610068611.9A CN105868019B (zh) | 2016-02-01 | 2016-02-01 | 一种Spark平台性能自动优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105868019A CN105868019A (zh) | 2016-08-17 |
CN105868019B true CN105868019B (zh) | 2019-05-21 |
Family
ID=56624574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610068611.9A Active CN105868019B (zh) | 2016-02-01 | 2016-02-01 | 一种Spark平台性能自动优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105868019B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106383746A (zh) * | 2016-08-30 | 2017-02-08 | 北京航空航天大学 | 大数据处理系统的配置参数确定方法和装置 |
CN106648654A (zh) * | 2016-12-20 | 2017-05-10 | 深圳先进技术研究院 | 一种数据感知的Spark配置参数自动优化方法 |
CN106874215B (zh) * | 2017-03-17 | 2020-02-07 | 重庆邮电大学 | 一种基于Spark算子的序列化存储优化方法 |
CN107239364A (zh) * | 2017-06-09 | 2017-10-10 | 郑州云海信息技术有限公司 | 一种基于运算时间统计的纠删参数提取方法 |
CN109146081B (zh) * | 2017-06-27 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 一种用于机器学习平台中创建模型项目的方法及装置 |
CN107612886B (zh) * | 2017-08-15 | 2020-06-30 | 中国科学院大学 | 一种Spark平台Shuffle过程压缩算法决策方法 |
EP3447642B1 (en) * | 2017-08-24 | 2022-03-23 | Tata Consultancy Services Limited | System and method for predicting application performance for large data size on big data cluster |
CN107562859B (zh) * | 2017-08-29 | 2019-10-22 | 武汉斗鱼网络科技有限公司 | 一种分类模型训练系统及其实现方法 |
CN108255913A (zh) * | 2017-08-31 | 2018-07-06 | 新华三大数据技术有限公司 | 一种实时流数据处理方法及装置 |
CN107704594B (zh) * | 2017-10-13 | 2021-02-09 | 东南大学 | 基于SparkStreaming的电力系统日志数据实时处理方法 |
CN107944004B (zh) * | 2017-12-07 | 2020-09-29 | 深圳乐信软件技术有限公司 | Spark-SQL调度的方法、系统、设备及存储介质 |
CN108052394B (zh) * | 2017-12-27 | 2021-11-30 | 福建星瑞格软件有限公司 | 基于sql语句运行时间的资源分配的方法及计算机设备 |
CN110083441B (zh) * | 2018-01-26 | 2021-06-04 | 中兴飞流信息科技有限公司 | 一种分布式计算系统及分布式计算方法 |
CN108491226B (zh) * | 2018-02-05 | 2021-03-23 | 西安电子科技大学 | 基于集群缩放的Spark配置参数自动调优方法 |
CN108536727A (zh) * | 2018-02-24 | 2018-09-14 | 国家计算机网络与信息安全管理中心 | 一种数据检索方法和装置 |
CN108628682B (zh) * | 2018-04-17 | 2021-09-24 | 西南交通大学 | 一种基于数据持久化的Spark平台成本优化方法 |
CN110427263B (zh) * | 2018-04-28 | 2024-03-19 | 深圳先进技术研究院 | 一种面向Docker容器的Spark大数据应用程序性能建模方法、设备及存储设备 |
CN108762921B (zh) * | 2018-05-18 | 2019-07-12 | 电子科技大学 | 一种Spark集群系统的在线优化分区的任务调度方法及装置 |
CN109189572B (zh) * | 2018-08-02 | 2021-06-04 | 中兴飞流信息科技有限公司 | 一种资源预估方法及系统、电子设备和存储介质 |
CN109375912B (zh) * | 2018-10-18 | 2021-09-21 | 腾讯科技(北京)有限公司 | 模型序列化方法、装置及存储介质 |
CN110059107A (zh) * | 2019-04-19 | 2019-07-26 | 成都四方伟业软件股份有限公司 | 计划优化方法、装置、系统及计算机可读存储介质 |
CN110275765B (zh) * | 2019-06-14 | 2021-02-26 | 中国人民解放军国防科技大学 | 基于分支dag依赖的数据并行作业调度方法 |
CN110727506B (zh) * | 2019-10-18 | 2022-07-01 | 北京航空航天大学 | 一种基于成本模型的spark参数自动调优方法 |
CN110825522A (zh) * | 2019-10-31 | 2020-02-21 | 武汉联图时空信息科技有限公司 | Spark参数自适应优化方法及系统 |
CN111092947B (zh) * | 2019-12-19 | 2022-05-10 | 北京金山云网络技术有限公司 | 数据传输的方法、客户端、中间服务器、节点及电子设备 |
CN111629048B (zh) * | 2020-05-22 | 2023-04-07 | 浪潮电子信息产业股份有限公司 | spark集群最优配置参数确定方法、装置及设备 |
CN111651220B (zh) * | 2020-06-04 | 2023-08-18 | 上海电力大学 | 一种基于深度强化学习的Spark参数自动优化方法及系统 |
CN111399838A (zh) * | 2020-06-04 | 2020-07-10 | 成都四方伟业软件股份有限公司 | 一种基于SparkSQL和物化视图的数据建模方法及装置 |
CN113760489B (zh) * | 2020-09-21 | 2024-05-17 | 北京沃东天骏信息技术有限公司 | 一种资源配置方法和装置 |
CN112612823B (zh) * | 2020-12-14 | 2022-07-19 | 南京铁道职业技术学院 | 一种基于PySpark和Pandas融合的大数据时序分析方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750780A (zh) * | 2015-03-04 | 2015-07-01 | 北京航空航天大学 | 一种基于统计分析的Hadoop配置参数优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405582B2 (en) * | 2014-06-20 | 2016-08-02 | International Business Machines Corporation | Dynamic parallel distributed job configuration in a shared-resource environment |
-
2016
- 2016-02-01 CN CN201610068611.9A patent/CN105868019B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750780A (zh) * | 2015-03-04 | 2015-07-01 | 北京航空航天大学 | 一种基于统计分析的Hadoop配置参数优化方法 |
Non-Patent Citations (1)
Title |
---|
"基于高性能计算平台的地理信息系统算法调度引擎的研究";薛晨曦,陈荦,李军;《现在电子技术》;20151115;第38卷(第22期);全文 |
Also Published As
Publication number | Publication date |
---|---|
CN105868019A (zh) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105868019B (zh) | 一种Spark平台性能自动优化方法 | |
CN107612886B (zh) | 一种Spark平台Shuffle过程压缩算法决策方法 | |
Ghoting et al. | NIMBLE: a toolkit for the implementation of parallel data mining and machine learning algorithms on mapreduce | |
WO2017096940A1 (zh) | 一种基于spark-SQL大数据处理平台的数据导入方法 | |
CN104915378B (zh) | 一种适用于大数据的统计任务快速生成系统及方法 | |
Baldán et al. | Distributed fastshapelet transform: a big data time series classification algorithm | |
CN104750780B (zh) | 一种基于统计分析的Hadoop配置参数优化方法 | |
CN105550268A (zh) | 大数据流程建模分析引擎 | |
CN108664635B (zh) | 数据库统计信息的获取方法、装置、设备和存储介质 | |
Mustafa et al. | A machine learning approach for predicting execution time of spark jobs | |
Elsayed et al. | Mapreduce: State-of-the-art and research directions | |
CN107491508B (zh) | 一种基于循环神经网络的数据库查询时间预测方法 | |
CN109992271B (zh) | 一种基于代码词汇和结构依赖的分层架构识别方法 | |
CN103150163A (zh) | 一种基于MapReduce模型的并行关联方法 | |
WO2022088390A1 (zh) | 图像的增量聚类方法、装置、电子设备、存储介质及程序产品 | |
Liew et al. | Towards optimising distributed data streaming graphs using parallel streams | |
Song et al. | Bridging the semantic gaps of GPU acceleration for scale-out CNN-based big data processing: Think big, see small | |
CN103198099A (zh) | 基于云计算的面向电信业务的数据挖掘应用方法 | |
CN106599122B (zh) | 一种基于垂直分解的并行频繁闭序列挖掘方法 | |
CN105335499A (zh) | 一种基于分布-收敛模型的文献聚类方法 | |
Lakshmi et al. | Machine learning approaches on map reduce for Big Data analytics | |
CN110119268B (zh) | 基于人工智能的工作流优化方法 | |
Wang et al. | Large-scale human action recognition with spark | |
CN111523685B (zh) | 基于主动学习的降低性能建模开销的方法 | |
CN112580355B (zh) | 一种新闻资讯话题检测及实时聚合方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |