CN111176832B - 基于内存计算框架Spark的性能优化和参数配置方法 - Google Patents

基于内存计算框架Spark的性能优化和参数配置方法 Download PDF

Info

Publication number
CN111176832B
CN111176832B CN201911241267.9A CN201911241267A CN111176832B CN 111176832 B CN111176832 B CN 111176832B CN 201911241267 A CN201911241267 A CN 201911241267A CN 111176832 B CN111176832 B CN 111176832B
Authority
CN
China
Prior art keywords
spark
parameters
parameter
configuration
model
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
Application number
CN201911241267.9A
Other languages
English (en)
Other versions
CN111176832A (zh
Inventor
范天文
龙昭华
沈励芝
余快
崔永明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing University of Post and Telecommunications
Original Assignee
Chongqing University of Post and Telecommunications
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chongqing University of Post and Telecommunications filed Critical Chongqing University of Post and Telecommunications
Priority to CN201911241267.9A priority Critical patent/CN111176832B/zh
Publication of CN111176832A publication Critical patent/CN111176832A/zh
Application granted granted Critical
Publication of CN111176832B publication Critical patent/CN111176832B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2415Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
    • G06F18/24155Bayesian classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Artificial Intelligence (AREA)
  • Probability & Statistics with Applications (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种基于内存计算框架Spark的性能优化和参数配置方法,通过先确定Spark应用程序类型以及影响不同类型的Spark性能参数,随机组合配置参数得到训练集,将训练集通过LightGBM算法建立配置参数模型,通过贝叶斯优化算法搜索LightGBM算法的超参数最优组合,进一步使得配置模型选择出最优配置参数。本发明不要求用户理解Spark运行机制、参数意义作业和取值范围,以及应用程序类型特点和输入集的情况下,能为用户找到运行在不同集群环境下不同类型应用程序的最优配置参数,较之前的参数配置方法更加简单明了方便。

Description

基于内存计算框架Spark的性能优化和参数配置方法
技术领域
本发明属于大数据、云计算、分布式系统等技术领域,具体涉及一种基于内存计算框架Spark的性能优化和参数配置方法。
背景技术
分布式内存计算框架Spark是基于内存计算的大数据并行计算框架。大数据所带来的海量数据和实时处理需求等特点,与以传统计算为中心的模式产生了巨大矛盾,使得传统计算模型难以适应当今大数据环境下的数据处理。总的来说,处理方式也从计算处理转变成了数据处理。因此,数据处理速度的问题也就愈发突出,实时性效率不强。而大数据所表现出的增量速度快、时间局部性低等特点,让传统计算模型面临着内存容量有限、输入/输出频繁缓慢、缓存效率低、数据处理的总体性能低等诸多挑战。常规单机计算模式再也不能支撑如此巨大规模的数据量的处理。因而计算需要以分布式的方式把巨大的计算任务分成小的单机能负载的计算任务。在这种前提下,随着技术的迅速发展,分布式计算框架如雨后春笋般,不同的企业或研究团队都推出了各式各样的框架类型。
分布式内存计算将原有计算框架中的文件存储从磁盘替换成内存,能够使批处理更加高效、延迟更低,其能够提供比基于磁盘存储的系统高了至少10倍的吞吐量,以及低于至少10倍的访问延迟,可以很好的满足在线数据密集型应用的需求。随着大规模数据的增长和分析需求,内存计算框架的使用更加广泛,同时也遇到更多技术方面的挑战。总体硬件数量、软件复杂度和整体系统可靠性、可用性和可服务性是内存计算框架的关键要素。
分布式内存计算框架出现越来越多,不同的企业对某些开源的框架二次开发和优化,使得其性能在某一方面或几方面具有特殊的作用。随着不同行业对分布式内存计算的性能要求,几乎都设计特有的计算框架,但是不同框架间其数据精度、算力和资源调度方式等很多方面都存在不同,数据存储规范等没有统一的标准。如:Ignite的核心定位是一个分布式的内存缓存解决方案,通过将数据保存在内存中,提供比传统的基于磁盘的方案更快的性能。然后在分布式缓存的基础上,一方面进一步深入,通过标准SQL功能的引入,向分布式内存数据库的方向发展,一方面功能不断扩展,引入了内存计算、流数据处理、机器学习等功能。Ignite部署灵活,可以轻易地集成到已有的系统,非常方便地与已有的数据库系统集成(NoSQL、HDFS也支持),为已有的业务进行加速服务,不颠覆已有的架构,是Ignite很重要的逻辑。
Spark是继Hadoop之后的新一代大数据分布式处理框架,是由美国加州大学伯克利分校AMPLab提出的一个大数据分析平台,其特点基于内存进行计算且提出弹性式分布数据集(ResilientDistributedDataset,RDD)的概念,不但可以多迭代批量处理数据,还可以兼顾数据仓库、流数据处理和图计算等多种范式,是大数据系统领域的全栈计算平台。Spark的核心定位是一个分布式统一大数据分析引擎,通过先进的RDD模型和大量内存的使用,解决了使用Hadoop的MapReduce进行多轮迭代式计算的性能问题。然后在RDD的基础上不断完善,引入了Dataset和DataFrame、SparkSQL、Spark Streaming、SparkML等更高级的功能,这些组件逐渐形成了大数据处理一站式服务平台。Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算。根据官方数据统计,如果数据从磁盘中读取,Spark的处理速度是Hadoop MapReduce的10倍以上;如果数据从内存中读取,Spark的处理速度比HadoopMapReduce高出100多倍。Spark提供一致的API和相同的部署方案,使其工程应用领域变得非常广泛。无论是性能,还是方案的统一性,相比Hadoop MapReduce,Spark的优势都非常明显。
由于Spark具有出色的数据处理能力和高扩张性,众多企业已经在实际生产中进行推广和应用。例如,Yahoo将Spark用于AudienceExpansion中,以更准确地通过广告寻找目标用户,百度推出大数据处理产品BMR(BaiduMap-Reduce)。这些企业都拥有庞大的Spark集群,例如,腾讯的Spark集群已经达到千台的规模。更因为其快速、易用、通用、多种运行模式等特点,被不同的行业领域的研究学者和分布式计算爱好者所采用。针对不同的执行应用需要配置不同的参数和资源调度等等,而且Spark作为不同应用层的底层引擎,其性能的优劣直接反映该应用层的用户体验、数据处理和系统高效等不同的问题。针对Spark引擎的系统性能优化,提高Spark引擎的资源合理分配已经成为越来越关注的问题,国内几大IT行业的企业才开始融入Spark框架开发中,而国外的企业和团对其研究有一段时间。
Spark作为当前流行的并行计算架构,Google提出的MapReduce编程模型结构可以使用户专注于业务逻辑,不需要详细了解传统模型中需处理的复杂问题。与以前的并行计算系统相比,MapReduce具有易用、扩展性良好和硬件性价比高等优点。但是,MapReduce事实上并没有做到极致,在实际开发过程中直接使用MapReduce编程仍然比较困难,然而随着Hadoop开源实现,很多问题被得到解决。在迭代计算方面还是存在不足,华盛顿大学提出了haLoop,以高效地支持迭代计算,通过缓存循环不变量来分析任务。
发明内容
本发明的目的是针对现有的分布式计算框架Spark由于配置参数众多,性能受配置参数影响大,应用程序具有不同特点等实际应用问题,提出一种基于内存计算框架Spark的性能优化和参数配置方法。
为了实现上述目的,本发明采用的技术方案是:基于内存计算框架Spark的性能优化和参数配置方法,包括以下步骤:
Spark资源调度包括:Driver与Cluster Manager通信,进行资源申请、任务分配和监控;Cluster Manager负责申请和管理在Worker Node上运行应用程序所需的资源;Executor负责运行任务。
收集日志历史数据,其中历史数据包括:作业执行时间、配置参数值、输入数据集大小和作业使用的内存资源。
将收集的执行时间、输入数据集大小、配置参数值和作业使用的内存资源构成多维度的训练集,通过LightGBM算法对所述训练集构建参数优化模型。
使用建立好的参数优化模型,通过贝叶斯优化算法搜索模型最优配置超参数。
为了验证本发明提出的方法,在所述搜索模型最优配置超参数之后还包括一验证步骤:将搜索到的最优模型超参数采用LightGBM算法进行验证,通过LightGBM算法的模型回归,选择出配置参数的最优组合进行配置Spark,并运行不同类型的应用程序验证执行时间是否为最短。
上述技术方案具有如下优点:
本发明通过先确定Spark应用程序类型以及影响不同类型的Spark性能参数,随机组合配置参数得到训练集,将训练集通过LightGBM算法建立配置参数模型,通过贝叶斯优化算法搜索LightGBM算法的超参数最优组合,进一步使得配置模型选择出最优配置参数。本发明不要求用户理解Spark运行机制、参数意义作业和取值范围,以及应用程序类型特点和输入集的情况下,能为用户找到运行在不同集群环境下不同类型应用程序的最优配置参数,较之前的参数配置方法更加简单明了方便,本发明使用LightGBM算法,结合机器学习和概率推理的优势,能够使用较少训练集,满足不同业务需求的精度。
附图说明
图1为本发明的总体框架示意图;
图2为本发明中贝叶斯优化算法流程示意图;
图3为本发明中系统运行流程示意图;
图4为本发明的整体流程示意图;
图5为本发明中构建Stage流程示意图;
图6为本发明中Task资源调度示意图。
具体实施方式
为了是本发明的目的、技术方案及优点更加清晰,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
如图1所示,一种基于内存计算框架Spark的性能优化和参数配置策略方法,包括如下四个步骤:
一、如图3所示,Spark资源调度流程,具体资源调度过程如下三个步骤所示:
(1)Driver(驱动器)是运行Spark Applicaion(Spark应用程序)的main()函数,它会创建SparkContext(Spark上下文对象)。SparkContext负责和Cluster Manager(客户端管理器)通信,进行资源申请、任务分配和监控等。
(2)Cluster Manager负责申请和管理在Worker Node(工作节点)上运行应用所需的资源,目前包括Spark原生的Cluster Manager、Mesos Cluster Manager(Mesos客户端管理器)和Hadoop YARN Cluster Manager(Hadoop YARN客户端管理器)。
(3)Executor(执行器)是Application(应用程序)运行在Worker Node上的一个进程,负责运行Task(任务),并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的一批Executor。每个Executor则包含了一定数量的资源来运行分配给它的任务。
如图4所示,在上述Spark框架运行流程,上述三个步骤进一步描述为DAGScheduler(DAG调度器)、Task Scheduler(任务调度器)以及Executor三个部分;DAGScheduler负责Stage划分,Task Scheduler负责task任务执行资源申请,Executor具体执行任务。构建Spark Application的运行环境(启动SparkContext),SparkContext向Cluster Manager注册,并申请运行Executor资源。Cluster Manager为Executor分配资源并启动Executor进程,Executor运行情况将随着“心跳”发送到Cluster Manager上。SparkContext构建DAG图,将DAG图分解成多个Stage(阶段),并把每个Stage的TaskSet(任务集)发送给Task Scheduler(任务调度器)。Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor,同时,SparkContext将应用程序代码发放给Executor。Task在Executor上运行,把执行结果反馈给Task Scheduler,然后再反馈给DAGScheduler。运行完毕后写入数据,SparkContext向Cluster Manager注销并释放所有资源。DAG Scheduler决定运行Task的理想位置,并把这些信息传递给下层的Task Scheduler。
如图5所示,在DAG Scheduler划分Stage中,进一步如下5个步骤所示:
(1)应用程序通过对Spark API的调用,进行一系列RDD转换构建出RDD之间的依赖关系后,调用DAG Scheduler的runJob方法将RDD及其血缘关系中的所有RDD传递给DAGSchududer进行调度
(2)DAG Scheduler的runJob方法实际通过调用DAG Scheduler的submitJob(提交作业)方法向DAGSchedulerEventProcessLoop(DAG调度器事件进程循环队列)发送JobSubmitted(作业提交)事件。DAGSchedulerEventProcessLoop接收到JobSubmitted事件后,将JobSubmitted事件放入事件队列(eventQueue)
(3)DAGSchedulerEventProcessLoop内部的轮询线程eventThread不断从事件队列(eventQueue)中获取DAGSchedulerEvent(DAG调度事件),并调用DAGSchedulerEventProcessLoop的doOnReceive方法对事件进行处理
(4)DAGSchedulerEventProcessLoop的doOnReceive方法处理JobSubmitted事件时,将调用DAGScheduler的handleJobSubmitted方法。handleJobSubmitted方法将对RDD构建Stage及Stage之间的依赖关系。
(5)DAGScheduler首先把上游的Stage中的Task集合提交给TaskScheduler,然后逐步将下游的Stage中的Task集合提交给TaskScheduler,TaskScheduler将对Task集合进行调度。
进一步描述,如图6所示,Task在具体应用程序任务中的执行流程,可以分为以下5个步骤所示:
(1)Spark提交任务后,需要为Driver请求资源;
(2)调用schedule方法在worker节点中创建的Driver;
(3)为application申请Executor资源;
(4)调用schedule方法在worker节点中创建Executor;
(5)Driver向Thread Pool(线程池)分发Task任务并监控执行情况。
二、收集日志历史数据:所述收集数据包括六个小步骤,如下所示:
(1)内存计算平台Spark官方给出的180多个参数中找出运行不同应用程序时影响Spark性能的主要参数。
(2)采用稀疏采样确定主要参数在不同的应用程序中的取值范围。
(3)选择应用程序的输入集。
(4)针对不同应用程序任务确定相对应的主要参数,配置SparkConf,运行不同类型输入数据集的应用程序,收集到的数据作为训练集。
(5)根据运行不同训练集,将主要参数针对不同类型任务进行分类。
(6)在根据同一类型的应用程序任务,提交相同类型任务,收集到的数据作为验证集。
在数据收集阶段,上述的六个步骤可以描述为:选择不同的Spark应用程序作为实验对象,在本发明选择大数据基准框架hiBench的16种负载,分为典型负载(如Wordcount(单词统计)、Sort(排序))、迭代式作业(如PageRank)和机器学习(如k-means)3类,从中选取若干代表性的程序,进一步确定上述应用程序中影响Spark性能的参数并确定主要参数的取值范围;在取值范围内随机生成参数,并生成配置文件配置Spark,每个任务选取若干输入数据集,并使用配置参数生成器配置SparkConf(Spark环境),配置后运行应用程序并收集数据:所述数据包括不限于:作业执行时间、配置参数值、输入数据集大小、作业使用的内存资源。
在收集数据步骤中所述稀疏采样生成参数具体通过如下方式:假设配置参数为{t1,t2,…,tm},参数ti(i=1,2,…,m)的取值范围为[a,b],在所有配置参数组合形成的参数空间取样范围内,取样范围在参数空间以及每个参数的取值范围中尽可能均匀;然后参数空间在不同参数范围内且该参数空间能缩短Task执行时间情况下,进一步进行间隔更小的搜索以选择主要配置参数,确定主要配置参数之后,在参数ti的取值范围内,搜索缩短Task执行时间最短的值;为排除其他因素和随机性的影响,每个工作负载在每种参数组合下运行3次取均值,按照这个方式,生成其他配置参数。最终选取参数如表1所示。
表1 Spark主要参数一览表
Figure BDA0002306297570000061
Figure BDA0002306297570000071
三、构建参数优化模型:将收集的执行时间、输入数据集大小、配置参数值、内存资源等数据构成多维度的训练集,通过LightGBM算法对上述训练集进行参数建模。
具体的,LightGBM是使用GOSS算法和EFB算法的梯度提升树模型,具体包括:先把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图。在遍历数据的时候,根据离散化的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累积了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。采用leaf-wise生长策略,每次从当前所有叶子中找到分裂增益最大的一个叶子,然后分裂,如此循环;在LightGBM算法中,执行时间作为因变量,输入数据集和配置参数作为自变量,还需要learning_rate、max_depth和num_leaves值,learning_rate为学习率,max_depth为树模型深度,num_leaves为叶子节点数。
其中,所述单边梯度采样(Gradient-based One-Side Sampling,GOSS)算法具体如下所示:
输入:训练数据T,迭代步数d;
大梯度数据的采样率a,小梯度数据的采样率b;
Loss:损失函数和弱学习器L,权重w
Figure BDA0002306297570000072
Figure BDA0002306297570000081
输出:训练好的强学习器;
其中,所示互斥特征绑定(Exclusive Feature Bundling,EFB)算法如下所示:
输入:特征F,最大冲突数K,图G;
Figure BDA0002306297570000082
输出:特征捆绑集合bundles;
本发明用机器学习中的集成学习算法——LightGBM建模;机器学习相较于传统的统计学习方法,具有能够阻止和拟合参数,能够处理更大的数据集的优势;LightGBM算法相比较于其他机器学习算法,拥有更快的训练速度和更高的效率,更低的内存占用,更高的准确率以及大数据处理能力和并行学习。
四、搜索模型最优模型超参数:使用建立好的配置参数性能模型,通过贝叶斯优化算法搜索模型最优配置超参数。
如图2所示,具体的做法是获得m个样本作为初始化点,其中m个空间样本:x=(x1,x2,…,xm),y=(y1,y2,…,ym),x表示LightGBM超参数的不同取值,y表示在该超参数取值下模型的评估值。假设它们服从多变量高斯分布,最大化收获函数求得下一个采样点x0,目标函数为使得LightGBM算法最小,采用目标函数位于x0的y0值,不断迭代,直到选择出(x,y)是否满足目标值;如果模型利用上一轮选出的最大AC(Acquisition Fuction)值的点的集合,不断重复迭代,选出满足目标值最终的输出(x,y);其中AC函数有UCB(upper confidencebound)、PI(probability of improvement)、EI(Expexted improvement)。
贝叶斯优化算法来完成机器学习模型的超参数自动调整,与随机或网格搜索相比,贝叶斯优化对目标函数的评估较少,测试集上的更好的泛化性能。贝叶斯调参采用高斯过程,考虑之前的参数信息,不断地更新先验;网格搜索未考虑之前的参数信息;贝叶斯调参迭代次数少,速度快;网格搜索速度慢,参数多时易导致维度爆炸;贝叶斯调参针对非凸问题依然稳健;网格搜索针对非凸问题易得到局部最优。
五、在所述搜索模型最优配置超参数之后还包括一验证步骤,所述验证步骤为将搜索到的最优模型超参数进行LightGBM算法进行验证,使得不同类型的应用程序有一个独立的LightGBM超参数配置方法,使得配置参数模型最优,然后再最优模型的情况下,通过LightGBM算法的模型回归,选择出配置参数的最优组合进行配置Spark,并运行不同类型的应用程序验证执行时间是否为最短。
综上,本发明提供一种基于内存计算框架Spark的性能优化和参数配置方法,通过先确定Spark应用程序类型以及影响不同类型的Spark性能参数,随机组合配置参数得到训练集,将训练集通过LightGBM算法建立配置参数模型,通过贝叶斯优化算法搜索LightGBM算法的超参数最优组合,进一步使得配置模型选择出最优配置参数。本发明不要求用户理解Spark运行机制、参数意义作业和取值范围,以及应用程序类型特点和输入集的情况下,能为用户找到运行在不同集群环境下不同类型应用程序的最优配置参数,较之前的参数配置方法更加简单明了方便,本发明使用LightGBM算法,结合机器学习和概率推理的优势,能够使用较少训练集,满足不同业务需求的精度。本发明为任意输入集提供寻找最优配置参数,由于在实际操作情形下,不同用户运行不同类型的应用业务时,输入集是千变万化的,考虑到了实际应用情形。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进,这些改进也视为本发明的保护范围。

Claims (6)

1.基于内存计算框架Spark的性能优化和参数配置方法,其特征在于,包括以下步骤:
Spark资源调度包括:Driver与Cluster Manager通信,进行资源申请、任务分配和监控;Cluster Manager负责申请和管理在Worker Node上运行应用程序所需的资源;Executor负责运行任务;
收集日志历史数据,其中历史数据包括:作业执行时间、配置参数值、输入数据集大小和作业使用的内存资源;
将收集的执行时间、输入数据集大小、配置参数值和作业使用的内存资源构成多维度的训练集,通过LightGBM算法对所述训练集构建参数优化模型,具体包括如下步骤:
把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图;
遍历数据的时候,根据离散化的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累积了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点;
采用leaf-wise生长策略,每次从当前所有叶子中找到分裂增益最大的一个叶子,然后分裂,如此循环;
在LightGBM算法中,执行时间作为因变量,输入数据集和配置参数作为自变量,还需要learning_rate、max_depth和num_leaves值,learning_rate为学习率,max_depth为树模型深度,num_leaves为叶子节点数;
使用建立好的参数优化模型,通过贝叶斯优化算法搜索模型最优配置超参数,具体包括以下步骤:
获得m个点作为初始化点,且它们服从多变量高斯分布,最大化收获函数求得下一个采样点x0,采用目标函数位于x0的y值,不断迭代,直到选择出(x,y)是否满足目标值;如果模型利用上一轮选出的最大AC值的点的集合,不断重复迭代,选出满足目标值最终的输出(x,y)。
2.根据权利要求1所述基于内存计算框架Spark的性能优化和参数配置方法,其特征在于:所述Driver与Cluster Manager通信是通过Driver运行Spark Applicaion的main()函数,创建SparkContext,SparkContext负责和Cluster Manager通信,进行资源申请、任务分配和监控。
3.根据权利要求2所述基于内存计算框架Spark的性能优化和参数配置方法,其特征在于:所述SparkContext构建DAG图,将DAG图分解成多个Stage,包括以下步骤:
(1)应用程序通过对Spark API的调用,进行一系列RDD转换构建出RDD之间的依赖关系后,调用DAGScheduler的runJob方法将RDD及其血缘关系中的所有RDD传递给DAGSchududer进行调度;
(2)DAGScheduler的runJob方法实际通过调用DAGScheduler的submitJob方法向DAGSchedulerEventProcessLoop发送JobSubmitted事件,DAGSchedulerEventProcessLoop接收到JobSubmitted事件后,将JobSubmitted事件放入事件队列;
(3)DAGSchedulerEventProcessLoop内部的轮询线程eventThread不断从事件队列中获取DAGSchedulerEvent事件,并调用DAGSchedulerEventProcessLoop的doOnReceive方法对事件进行处理;
(4)DAGSchedulerEventProcessLoop的doOnReceive方法处理JobSubmitted事件时,调用DAGScheduler的handleJobSubmitted方法,handleJobSubmitted方法对RDD构建Stage及Stage之间的依赖关系;
(5)DAGScheduler首先把最上游的Stage中的Task集合提交给TaskScheduler,然后逐步将下游的Stage中的Task集合提交给TaskScheduler,TaskScheduler对Task集合进行调度。
4.根据权利要求1所述基于内存计算框架Spark的性能优化和参数配置方法,其特征在于:所述收集日志历史数据包括以下步骤:
从内存计算平台Spark官方给出的参数中找出运行不同应用程序时影响Spark性能的主要参数;
采用稀疏采样确定主要参数在不同的应用程序中的取值范围;
选择应用程序的输入集;
针对不同应用程序确定相对应的主要参数,配置SparkConf,运行不同所述输入集,收集到的数据作为训练集;
根据运行不同训练集,将主要参数针对不同类型任务进行分类;
根据同一类型的应用程序,提交相同类型任务,收集到的数据作为验证集。
5.根据权利要求4所述基于内存计算框架Spark的性能优化和参数配置方法,其特征在于:所述稀疏采样生成参数具体采用如下方式:设参数t的取值范围为[a,b],取样范围在参数取值范围中均匀,然后再进行间隔更小的搜索最终选取参数。
6.根据权利要求1-5任一项所述基于内存计算框架Spark的性能优化和参数配置方法,其特征在于:在所述搜索模型最优配置超参数之后还包括一验证步骤:将搜索到的最优模型超参数采用LightGBM算法进行验证,通过LightGBM算法的模型回归,选择出配置参数的最优组合进行配置Spark,并运行不同类型的应用程序验证执行时间是否为最短。
CN201911241267.9A 2019-12-06 2019-12-06 基于内存计算框架Spark的性能优化和参数配置方法 Active CN111176832B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911241267.9A CN111176832B (zh) 2019-12-06 2019-12-06 基于内存计算框架Spark的性能优化和参数配置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911241267.9A CN111176832B (zh) 2019-12-06 2019-12-06 基于内存计算框架Spark的性能优化和参数配置方法

Publications (2)

Publication Number Publication Date
CN111176832A CN111176832A (zh) 2020-05-19
CN111176832B true CN111176832B (zh) 2022-07-01

Family

ID=70655428

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911241267.9A Active CN111176832B (zh) 2019-12-06 2019-12-06 基于内存计算框架Spark的性能优化和参数配置方法

Country Status (1)

Country Link
CN (1) CN111176832B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111629048B (zh) * 2020-05-22 2023-04-07 浪潮电子信息产业股份有限公司 spark集群最优配置参数确定方法、装置及设备
CN111651220B (zh) * 2020-06-04 2023-08-18 上海电力大学 一种基于深度强化学习的Spark参数自动优化方法及系统
CN111813512B (zh) * 2020-06-23 2022-11-25 重庆邮电大学 一种基于动态分区的高能效Spark任务调度方法
CN111898740B (zh) * 2020-07-31 2021-07-20 北京达佳互联信息技术有限公司 预测模型的模型参数更新方法及装置
CN112073517B (zh) * 2020-09-09 2023-07-11 鹏城实验室 一种分布式数据传输优化方法、系统及相关设备
CN112328355B (zh) * 2020-10-09 2024-04-23 中山大学 一种针对长寿命容器的自适应最优内存预留估计方法
CN114385256B (zh) * 2020-10-22 2024-06-11 华为云计算技术有限公司 系统参数的配置方法和配置装置
CN112365002A (zh) * 2020-11-11 2021-02-12 深圳力维智联技术有限公司 基于spark的模型构建方法、装置、系统及存储介质
CN112540849B (zh) * 2020-12-11 2022-07-26 清华大学 一种分布式计算作业的参数配置优化方法及系统
CN113157538B (zh) * 2021-02-02 2023-04-18 西安天和防务技术股份有限公司 Spark运行参数的确定方法、装置、设备和存储介质
CN113032367A (zh) * 2021-03-24 2021-06-25 安徽大学 面向动态负载场景的大数据系统跨层配置参数协同调优方法和系统
CN113342313B (zh) * 2021-05-21 2023-04-18 上海大学 一种基于参数服务器异步更新Spark MLlib中线性分类模型参数的方法
WO2023097661A1 (zh) * 2021-12-03 2023-06-08 中国科学院深圳先进技术研究院 基于生成对抗网络的大数据系统资源配置参数调优方法
CN116089022A (zh) * 2023-04-11 2023-05-09 广州嘉为科技有限公司 一种日志搜索引擎的参数配置调整方法、系统及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648654A (zh) * 2016-12-20 2017-05-10 深圳先进技术研究院 一种数据感知的Spark配置参数自动优化方法
CN107680040A (zh) * 2017-09-26 2018-02-09 北京空间飞行器总体设计部 一种基于贝叶斯准则的多帧盲卷积超分辨重建方法及装置
CN107992982A (zh) * 2017-12-28 2018-05-04 上海氪信信息技术有限公司 一种基于深度学习的非结构化数据的违约概率预测方法
CN109767255A (zh) * 2018-12-06 2019-05-17 东莞团贷网互联网科技服务有限公司 一种通过大数据建模实现智能运营及精准营销的方法
CN110413494A (zh) * 2019-06-19 2019-11-05 浙江工业大学 一种改进贝叶斯优化的LightGBM故障诊断方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648654A (zh) * 2016-12-20 2017-05-10 深圳先进技术研究院 一种数据感知的Spark配置参数自动优化方法
CN107680040A (zh) * 2017-09-26 2018-02-09 北京空间飞行器总体设计部 一种基于贝叶斯准则的多帧盲卷积超分辨重建方法及装置
CN107992982A (zh) * 2017-12-28 2018-05-04 上海氪信信息技术有限公司 一种基于深度学习的非结构化数据的违约概率预测方法
CN109767255A (zh) * 2018-12-06 2019-05-17 东莞团贷网互联网科技服务有限公司 一种通过大数据建模实现智能运营及精准营销的方法
CN110413494A (zh) * 2019-06-19 2019-11-05 浙江工业大学 一种改进贝叶斯优化的LightGBM故障诊断方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A boosted decision tree approach using Bayesian hyper-parameter optimization for credit scoring;Xia Yufei 等;《Expert Systems with Applications》;20170210;第225-241页 *
Spark平台的性能优化与参数配置策略研究;范天文;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20210215(第2期);第I138-662页 *
大数据环境下基于Spark的Bayes分类算法研究;张睿敏 等;《工业仪表与自动化装置》;20180711(第3期);第116-118、123页 *

Also Published As

Publication number Publication date
CN111176832A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
CN111176832B (zh) 基于内存计算框架Spark的性能优化和参数配置方法
Wang et al. A novel method for tuning configuration parameters of spark based on machine learning
Wu et al. A self-tuning system based on application profiling and performance analysis for optimizing hadoop mapreduce cluster configuration
Verma et al. Big data management processing with Hadoop MapReduce and spark technology: A comparison
CN103345514B (zh) 大数据环境下的流式数据处理方法
Nguyen et al. Towards automatic tuning of apache spark configuration
CN104750780B (zh) 一种基于统计分析的Hadoop配置参数优化方法
Bei et al. Configuring in-memory cluster computing using random forest
Gu et al. A parallel computing platform for training large scale neural networks
Mustafa et al. A machine learning approach for predicting execution time of spark jobs
Kim et al. Efficient distributed selective search
Senthilkumar et al. A survey on job scheduling in big data
Wang et al. Phase-reconfigurable shuffle optimization for Hadoop MapReduce
Lin et al. Adaptive code learning for spark configuration tuning
Davoudian et al. A workload-adaptive streaming partitioner for distributed graph stores
Ahmed et al. Performance comparison of spark clusters configured conventionally and a cloud servicE
Luo et al. Performance modeling for spark using svm
Lim et al. Graph processing platforms at scale: Practices and experiences
Migliorini et al. Machine learning pipelines with modern big data tools for high energy physics
Gu et al. Auto-tuning spark configurations based on neural network
Vrbić Data mining and cloud computing
Cai et al. A recommendation-based parameter tuning approach for Hadoop
Zhou et al. Grep: A graph learning based database partitioning system
Cheng et al. FastMFDs: a fast, efficient algorithm for mining minimal functional dependencies from large-scale distributed data with Spark
Li et al. Mux-Kmeans: multiplex Kmeans for clustering large-scale data set

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant