掌桥专利:专业的专利平台
掌桥专利
首页

应用于Spark的作业分配方法及装置

文献发布时间:2024-04-18 19:54:45


应用于Spark的作业分配方法及装置

技术领域

本发明涉及大数据处理技术领域,具体而言,涉及一种应用于Spark的作业分配方法及装置。

背景技术

随着企业需要处理的数据量级越来越大,Spark以其持久化数据以及少量IO读写大量内存执行导致的高处理效率的优势,被广泛用于大规模数据处理中。在许多Spark应用程序中,Map节点输出的数据在Reduce节点上分布不均匀,浪费了高容量Reduce节点的许多负载空间。通过对Spark的内部原理和数据处理过程进行分析和研究,发现Shuffle阶段的分区算法对数据的处理效率对整个任务的完成时间有着严重的影响。在Spark系统中,作业的总完成时间由最慢的Reduce任务决定,为某些低性能的Reduce分配大量数据会导致数据处理效率低,当其他Reduce处于空闲状态,都在等待当前Reduce处理完毕的时候,称为发生了数据倾斜问题。数据倾斜问题被认为是大数据处理平台中的瓶颈,它对大数据分析系统的性能产生了极大的影响。

如何解决Spark中因数据倾斜问题而导致数据处理性能下降,进而提高Reduce阶段的数据处理效率是目前急需解决的技术问题。

发明内容

本发明为了解决Spark中因数据倾斜问题而导致数据处理性能下降的技术问题,提出了一种应用于Spark的作业分配方法及装置。

为了实现上述目的,根据本发明的一个方面,提供了一种应用于Spark的作业分配方法,该方法包括:

在进行第t次作业分配时,确定待分配作业的作业类型,其中,t为大于等于1的整数;

进行N轮Reducer节点选择直至从Reducer节点集合中选择出一个目标Reducer节点,然后将所述待分配作业分配到该目标Reducer节点;其中,在进行每轮Reducer节点选择时,先根据第t次作业分配时所述Reducer节点集合中各Reducer节点的选择概率从所述Reducer节点集合中选择出一个Reducer节点,然后计算该选择出的Reducer节点在所述作业类型上的负载阈值,若该选择出的Reducer节点在所述作业类型上的当前负载小于所述负载阈值,则将该选择出的Reducer节点确定为目标Reducer节点;若该选择出的Reducer节点在所述作业类型上的当前负载大于或等于所述负载阈值,则将该选择的Reducer节点从所述Reducer节点集合中删除,然后更新所述Reducer节点集合中剩余各Reducer节点的选择概率,进而进入下一轮Reducer节点选择,N为大于等于1的整数;

根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率,重新确定所述目标Reducer节点的选择概率,然后基于重新确定的所述目标Reducer节点的选择概率缩放所述Reducer节点集合中其他Reducer节点的选择概率,得到第t+1次作业分配时所述Reducer节点集合中各Reducer节点的选择概率。

可选的,所述应用于Spark的作业分配方法,还包括:

在第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率的基础上,根据预设的奖惩更新模型进行选择概率更新,得到第t+1次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t+1次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率。

为了实现上述目的,根据本发明的另一方面,提供了一种应用于Spark的作业分配装置,该装置包括:

作业类型确定单元,用于在进行第t次作业分配时,确定待分配作业的作业类型,其中,t为大于等于1的整数;

节点选择单元,用于进行N轮Reducer节点选择直至从Reducer节点集合中选择出一个目标Reducer节点,然后将所述待分配作业分配到该目标Reducer节点;其中,在进行每轮Reducer节点选择时,先根据第t次作业分配时所述Reducer节点集合中各Reducer节点的选择概率从所述Reducer节点集合中选择出一个Reducer节点,然后计算该选择出的Reducer节点在所述作业类型上的负载阈值,若该选择出的Reducer节点在所述作业类型上的当前负载小于所述负载阈值,则将该选择出的Reducer节点确定为目标Reducer节点;若该选择出的Reducer节点在所述作业类型上的当前负载大于或等于所述负载阈值,则将该选择的Reducer节点从所述Reducer节点集合中删除,然后更新所述Reducer节点集合中剩余各Reducer节点的选择概率,进而进入下一轮Reducer节点选择,N为大于等于1的整数;

选择概率更新单元,用于根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率,重新确定所述目标Reducer节点的选择概率,然后基于重新确定的所述目标Reducer节点的选择概率缩放所述Reducer节点集合中其他Reducer节点的选择概率,得到第t+1次作业分配时所述Reducer节点集合中各Reducer节点的选择概率。

可选的,所述应用于Spark的作业分配装置,还包括:

奖惩更新模型单元,用于在第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率的基础上,根据预设的奖惩更新模型进行选择概率更新,得到第t+1次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t+1次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述应用于Spark的作业分配方法的步骤。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现上述应用于Spark的作业分配方法的步骤。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述应用于Spark的作业分配方法的步骤。

本发明的有益效果为:

本发明实施例在进行第t次作业分配时,先确定待分配作业的作业类型,然后进行N轮Reducer节点选择直至从Reducer节点集合中选择出一个目标Reducer节点,然后根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率,重新确定所述目标Reducer节点的选择概率,然后基于重新确定的所述目标Reducer节点的选择概率缩放所述Reducer节点集合中其他Reducer节点的选择概率,得到第t+1次作业分配时所述Reducer节点集合中各Reducer节点的选择概率,本发明解决了Spark中因数据倾斜问题而导致数据处理性能下降的问题,有助于提高Reduce阶段的数据处理效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是本发明实施例应用于Spark的作业分配方法的流程图;

图2是本发明实施例确定作业类型流程图;

图3是本发明重新确定目标Reducer节点的选择概率的第一流程图;

图4是本发明重新确定目标Reducer节点的选择概率的第二流程图;

图5是本发明的应用场景使用图;

图6是本发明基于动态分区的Spark集群优化算法大纲图;

图7是本发明Reducer负载量预测说明图;

图8是本发明基于作业分类与增强学习的节点选择说明图;

图9是本发明实施例应用于Spark的作业分配装置的结构框图;

图10是本发明实施例计算机设备示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

需要说明的是,本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。

需要说明的是,本发明应用于Spark的作业分配方法和装置可用于金融领域,也可用于除金融领域之外的任意领域,本发明应用于Spark的作业分配方法和装置的应用领域不做限定。

本发明主要的目标是解决Spark中因数据倾斜问题而导致数据处理性能下降的问题,旨在通过Shuffle Read的算法提升提高Reduce阶段的数据处理效率。为了实现上述目标,本发明提供了一种分区方法,如图6所示该方法包括:1.作业的类型检测,本发明将作业及节点分为I/O或是CPU类型,以便后续算法考虑作业类型及节点类型;2.Reducer节点的负载预测,根据总的负载量,以及处理样本50M样本作业的各节点耗时,预估各Reducer节点的作业处理能力,将其量化为一个固定负载值,能力强则预估的负载量就大;3.资源分配与增强学习模型,实时选择最佳Reducer节点以解决Reduce阶段数据倾斜的问题。利用环境反馈对数据簇进行动态分区,选择Reducer节点的选择进行评价,获得奖励或是惩罚,以此更新动作选择概率。

图5是本发明的应用场景使用图,如图5所示,本发明的应用场景中具体包含:Map节点、节点选择器以及r个Reducer节点。在本发明一个可选实施例中,本发明在每个Map节点上设置了对应的节点选择器。需要说明的是,本发明以下实施例的应用于Spark的作业分配方法应用于节点选择器,即本发明应用于Spark的作业分配方法的执行主体为节点选择器。

图1是本发明实施例应用于Spark的作业分配方法的流程图,如图1所示,在本发明一个实施例中,本发明的应用于Spark的作业分配方法包括步骤S101至步骤S103。

步骤S101,在进行第t次作业分配时,确定待分配作业的作业类型,其中,t为大于等于1的整数。

在本发明中,待分配作业为节点选择器从Map节点获取的。节点选择器用于进行负载均衡,将待分配作业分配到最优的Reducer节点。

在本发明中,待分配作业的作业类型具体为CPU类型和I/O类型两种。

步骤S102,进行N轮Reducer节点选择直至从Reducer节点集合中选择出一个目标Reducer节点,然后将所述待分配作业分配到该目标Reducer节点;其中,在进行每轮Reducer节点选择时,先根据第t次作业分配时所述Reducer节点集合中各Reducer节点的选择概率从所述Reducer节点集合中选择出一个Reducer节点,然后计算该选择出的Reducer节点在所述作业类型上的负载阈值,若该选择出的Reducer节点在所述作业类型上的当前负载小于所述负载阈值,则将该选择出的Reducer节点确定为目标Reducer节点;若该选择出的Reducer节点在所述作业类型上的当前负载大于或等于所述负载阈值,则将该选择的Reducer节点从所述Reducer节点集合中删除,然后更新所述Reducer节点集合中剩余各Reducer节点的选择概率,进而进入下一轮Reducer节点选择,N为大于等于1的整数。

在本发明中,第1次作业分配时所述Reducer节点集合中各Reducer节点的选择概率均为1/r,r为Reducer节点集合中Reducer节点的数量。

在本发明中,初始的Reducer节点集合包含了Spark的所有Reducer节点。

在本发明一个实施例中,本步骤具体可以根据默认Spark的默认分区算法来从Reducer节点集合中选择出一个Reducer节点。

在本发明另一个实施例中,本步骤具体可以采用以下公式(1)来进行Reducer节点选择:

p

式中,p

步骤S103,根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率,重新确定所述目标Reducer节点的选择概率,然后基于重新确定的所述目标Reducer节点的选择概率缩放所述Reducer节点集合中其他Reducer节点的选择概率,得到第t+1次作业分配时所述Reducer节点集合中各Reducer节点的选择概率。

本发明在每次作业分配完成后,需要对各Reducer节点的选择概率进行更新,得到下一次作业分配时的所述Reducer节点集合中各Reducer节点的选择概率。

由于本发明考虑了作业的类型,因此将每个节点的选择概率都分为CPU类型选择概率与I/O类型选择概率,一个节点的选择概率为该节点CPU类型选择概率

在本发明一个实施例中,在上述步骤S103之后本发明的应用于Spark的作业分配方法,还包括:

在第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率的基础上,根据预设的奖惩更新模型进行选择概率更新,得到第t+1次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t+1次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率。

在本发明中,本发明在每次作业分配完成后,还利用增强学习的奖惩更新模型对目标节点的CPU类型选择概率和I/O类型选择概率进行更新,供下一次作业分配时使用。

本发明对各Reducer节点的负载进行预测,节点的计算能力与节点每秒的作业处理时间成正比,本发明根据节点计算能力预测每个Reducer节点的负载量。

本发明利用同样的一个数据块在不同Reducer节点上执行的时间,计算每个Reducer节点的计算能力RC={RC

(1)定义总CPU负载量RP

(2)定义Reduce中CPU类型可用负载量和I/O类型可用负载量。

假设当前作业类型是CPU类型,执行样本,假设样本被分为10个数据块,共有3个reducer,数据块的reducer执行编号以及耗时记录在CPU时间表中,如图7。当样本中所有数据块执行完毕,计算各Reducer节点的数据处理能力。

定义Reducer节点的CPU计算能力如公式(2),根据各Reducer节点计算能力得到Reducer节点所分配CPU的负载量RP

式中,RC

式中,

表示在Reducer节点1上,处理了编号为1、4、7的数据块,I/O类型Reducer节点负载定义同理,节点的I/O计算能力表示为io

式中,RC

式中,

如图2所示,在本发明一个实施例中,上述步骤S101的确定待分配作业的作业类型,具体包括步骤S201至步骤S203。

步骤S201,从所述待分配作业中取出作业样本。

步骤S202,将所述作业样本输入Spark中,利用Map阶段的输入输出量以及Shuffle阶段的输入输出量来计算所述作业样本对应的吞吐量。

步骤S203,若所述作业样本对应的吞吐量小于磁盘平均吞吐量,则确定所述待分配作业的作业类型为CPU类型,若所述作业样本对应的吞吐量大于磁盘平均吞吐量,则确定所述待分配作业的作业类型I/O类型。

本发明首先从待分配作业中取出10~50M的作业样本(经实验得知性价比最高的作业输入量为50M),将样本输入Spark中,利用Map阶段的输入输出量以及Shuffle阶段的输入输出量来计算作业吞吐量,与Spark处理集群磁盘平均数据吞吐量进行对比,若该作业的吞吐量小于磁盘平均吞吐量,则判定为CPU类型的作业,若作业的吞吐量大于磁盘平均吞吐量,则判定为I/O类型的作业。

在本发明一个实施例中,上述步骤S102中的计算该选择出的Reducer节点在所述作业类型上的负载阈值,具体包括:

根据该选择出的Reducer节点在所述作业类型上的计算能力、所有Reducer节点在所述作业类型上的总计算能力、所有Reducer节点在所述作业类型上的当前总负载以及预设的负载溢出百分比,计算该选择出的Reducer节点在所述作业类型上的负载阈值。

如何判定选出来的Reducer节点是否符合条件呢,本发明规定,根据当前状态求出选择出的Reducer节点在当前的作业类型type

式(1)中,pth(j)为选出来的Reducer节点re

式(7)中,

如图3所示,在本发明一个实施例中,上述步骤S103中的根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率,重新确定所述目标Reducer节点的选择概率,具体包括步骤S301至步骤S303。

步骤S301,根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率、所述目标Reducer节点在所述作业类型上的负载量、所有Reducer节点在所述作业类型上的总负载量、所述目标Reducer节点在所述作业类型上的当前负载以及所有Reducer节点在所述作业类型上的当前总负载,计算出第一概率。

步骤S302,根据第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率、所述目标Reducer节点在非所述作业类型上的负载量、所有Reducer节点在非所述作业类型上的总负载量、所述目标Reducer节点在非所述作业类型上的当前负载以及所有Reducer节点在非所述作业类型上的当前总负载,计算出第二概率。

步骤S303,对所述第一概率和所述第二概率进行加权求和,得到重新确定的所述目标Reducer节点的选择概率,其中,所述第一概率对应的权重值大于所述第二概率对应的权重值。

具体的,type为当前作业类型,type2为非当前作业类型,因为本发明选择一个Reducer节点的初衷有三点,一是考虑当前节点选择器赋予的选择概率的同时,也要考虑当前节点的类型是否与作业类型匹配,第三点要考虑当前节点的负载量大小。为了不错失某些总负载量大,某种类型负载量较小的Reducer节点,概率值更新公式如(8),接下来运用公式(9)对Reducer节点h的动作选择概率作规范化。

式中,type为当前作业类型,type2为非当前作业类型,

在本发明一个实施例中,第一概率对应的权重值为0.8,第二概率对应的权重值为0.2。

在本发明另一个实施例中,本发明的应用于Spark的作业分配方法,还包括:

根据所述目标Reducer节点在所述作业类型上的计算能力以及所述目标Reducer节点在非所述作业类型上的计算能力,计算所述目标Reducer节点在所述作业类型上的计算能力比例以及所述目标Reducer节点在非所述作业类型上的计算能力比例。

本发明利用以下公式计算所述目标Reducer节点在所述作业类型上的计算能力比例以及所述目标Reducer节点在非所述作业类型上的计算能力比例:

A

式中,A

如图4所示,在本发明另一个实施例中,上述步骤S103中的根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率,重新确定所述目标Reducer节点的选择概率,具体包括步骤S401至步骤S403。

步骤S401,根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率、所述目标Reducer节点在所述作业类型上的负载量、所有Reducer节点在所述作业类型上的总负载量、所述目标Reducer节点在所述作业类型上的当前负载、所有Reducer节点在所述作业类型上的当前总负载以及所述目标Reducer节点在所述作业类型上的计算能力比例,计算出第一概率。

步骤S402,根据第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率、所述目标Reducer节点在非所述作业类型上的负载量、所有Reducer节点在非所述作业类型上的总负载量、所述目标Reducer节点在非所述作业类型上的当前负载、所有Reducer节点在非所述作业类型上的当前总负载以及所述目标Reducer节点在非所述作业类型上的计算能力比例,计算出第二概率。

步骤S403,对所述第一概率和所述第二概率进行加权求和,得到重新确定的所述目标Reducer节点的选择概率,其中,所述第一概率对应的权重值大于所述第二概率对应的权重值。

在本发明另一个实施例中,在上述步骤S103的基于重新确定的所述目标Reducer节点的选择概率缩放所述Reducer节点集合中其他Reducer节点的选择概率之前,还包括:

若在选择所述目标Reducer节点时从所述所述Reducer节点集合中删除了Reducer节点,则初始化所述Reducer节点集合。

在本发明一个实施例中,在上述步骤S103中,基于重新确定的所述目标Reducer节点的选择概率缩放所述Reducer节点集合中其他Reducer节点的选择概率,得到第t+1次作业分配时所述Reducer节点集合中各Reducer节点的选择概率。本发明可以按照概率缩放所述Reducer节点集合中其他Reducer节点的选择概率,规则如公式(13),

式中,p′

如图8所示,本发明在选定目标Reducer节点后,参照增强学习中的奖惩模型,获得上一回合的选择反馈,判定上一回合选定的节点是否为“好”节点,若为“好”,则对该节点当前作业类型的选择概率进行奖励更新,否则进行惩罚更新。增强学习最重要的知识点之一就是学习能力,每一状态智能体自行做决策,智能体选择了动作之后,环境会给出正面或负面反馈,本发明使用公式(14)决定当前动作的选择的环境反馈为奖励还是惩罚。定义当前的平均动态负载成本率ALPTR作为衡量环境反馈的标准,type表示当前作业的类型。

式中,m为当前动作集中动作数量,

本发明利用公式(14)计算当前的动态负载,若满足公式(15),则获得奖励,设置β=0,否则获得惩罚,设置β=1。

本发明将所有当前不在动作集的Reducer节点重新加入动作集,并根据反馈值β,利用公式(16)更新概率向量P。j为Hash算法选出的Reducer节点,i为节点选择器选出的Reducer节点,若Hash选择的动作满足公式(15),即未使用节点选择器,i为-1,采用公式(16)的(1.1)式,否则采用(16)中的(1.2)式。

式中,p

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

基于同一发明构思,本发明实施例还提供了一种应用于Spark的作业分配装置,可以用于实现上述实施例所描述的应用于Spark的作业分配方法,如下面的实施例所述。由于应用于Spark的作业分配装置解决问题的原理与应用于Spark的作业分配方法相似,因此应用于Spark的作业分配装置的实施例可以参见应用于Spark的作业分配方法的实施例,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图9是本发明实施例应用于Spark的作业分配装置的结构框图,如图9所示,在本发明一个实施例中,本发明的应用于Spark的作业分配装置包括:

作业类型确定单元1,用于在进行第t次作业分配时,确定待分配作业的作业类型,其中,t为大于等于1的整数;

节点选择单元2,用于进行N轮Reducer节点选择直至从Reducer节点集合中选择出一个目标Reducer节点,然后将所述待分配作业分配到该目标Reducer节点;其中,在进行每轮Reducer节点选择时,先根据第t次作业分配时所述Reducer节点集合中各Reducer节点的选择概率从所述Reducer节点集合中选择出一个Reducer节点,然后计算该选择出的Reducer节点在所述作业类型上的负载阈值,若该选择出的Reducer节点在所述作业类型上的当前负载小于所述负载阈值,则将该选择出的Reducer节点确定为目标Reducer节点;若该选择出的Reducer节点在所述作业类型上的当前负载大于或等于所述负载阈值,则将该选择的Reducer节点从所述Reducer节点集合中删除,然后更新所述Reducer节点集合中剩余各Reducer节点的选择概率,进而进入下一轮Reducer节点选择,N为大于等于1的整数;

选择概率更新单元3,用于根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率,重新确定所述目标Reducer节点的选择概率,然后基于重新确定的所述目标Reducer节点的选择概率缩放所述Reducer节点集合中其他Reducer节点的选择概率,得到第t+1次作业分配时所述Reducer节点集合中各Reducer节点的选择概率。

在本发明一个实施例中,所述应用于Spark的作业分配装置,还包括:

奖惩更新模型单元,用于在第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率的基础上,根据预设的奖惩更新模型进行选择概率更新,得到第t+1次作业分配时所述目标Reducer节点在所述作业类型上的选择概率以及第t+1次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率。

在本发明一个实施例中,所述作业类型确定单元1,具体包括:

作业样本提取模块,用于从所述待分配作业中取出作业样本;

吞吐量计算模块,用于将所述作业样本输入Spark中,利用Map阶段的输入输出量以及Shuffle阶段的输入输出量来计算所述作业样本对应的吞吐量;

作业类型确定模块,用于若所述作业样本对应的吞吐量小于磁盘平均吞吐量,则确定所述待分配作业的作业类型为CPU类型,若所述作业样本对应的吞吐量大于磁盘平均吞吐量,则确定所述待分配作业的作业类型I/O类型。

在本发明一个实施例中,所述节点选择单元2,具体包括:

负载阈值计算模块,用于根据该选择出的Reducer节点在所述作业类型上的计算能力、所有Reducer节点在所述作业类型上的总计算能力、所有Reducer节点在所述作业类型上的当前总负载以及预设的负载溢出百分比,计算该选择出的Reducer节点在所述作业类型上的负载阈值。

在本发明一个实施例中,所述选择概率更新单元3,具体包括:

第一概率计算模块,用于根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率、所述目标Reducer节点在所述作业类型上的负载量、所有Reducer节点在所述作业类型上的总负载量、所述目标Reducer节点在所述作业类型上的当前负载以及所有Reducer节点在所述作业类型上的当前总负载,计算出第一概率;

第二概率计算模块,用于根据第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率、所述目标Reducer节点在非所述作业类型上的负载量、所有Reducer节点在非所述作业类型上的总负载量、所述目标Reducer节点在非所述作业类型上的当前负载以及所有Reducer节点在非所述作业类型上的当前总负载,计算出第二概率;

加权计算模块,用于对所述第一概率和所述第二概率进行加权求和,得到重新确定的所述目标Reducer节点的选择概率,其中,所述第一概率对应的权重值大于所述第二概率对应的权重值。

在本发明一个实施例中,所述应用于Spark的作业分配装置,还包括:

计算能力比例计算单元,用于根据所述目标Reducer节点在所述作业类型上的计算能力以及所述目标Reducer节点在非所述作业类型上的计算能力,计算所述目标Reducer节点在所述作业类型上的计算能力比例以及所述目标Reducer节点在非所述作业类型上的计算能力比例。

在本发明一个实施例中,所述第一概率计算模块,具体用于根据第t次作业分配时所述目标Reducer节点在所述作业类型上的选择概率、所述目标Reducer节点在所述作业类型上的负载量、所有Reducer节点在所述作业类型上的总负载量、所述目标Reducer节点在所述作业类型上的当前负载、所有Reducer节点在所述作业类型上的当前总负载以及所述目标Reducer节点在所述作业类型上的计算能力比例,计算出第一概率。

在本发明一个实施例中,所述第二概率计算模块,具体用于根据第t次作业分配时所述目标Reducer节点在非所述作业类型上的选择概率、所述目标Reducer节点在非所述作业类型上的负载量、所有Reducer节点在非所述作业类型上的总负载量、所述目标Reducer节点在非所述作业类型上的当前负载、所有Reducer节点在非所述作业类型上的当前总负载以及所述目标Reducer节点在非所述作业类型上的计算能力比例,计算出第二概率。

在本发明一个实施例中,所述加权计算模块,具体用于对所述第一概率和所述第二概率进行加权求和,得到重新确定的所述目标Reducer节点的选择概率,其中,所述第一概率对应的权重值大于所述第二概率对应的权重值。

在本发明一个实施例中,所述应用于Spark的作业分配装置,还包括:

Reducer节点集合初始化单元,用于若在选择所述目标Reducer节点时从所述所述Reducer节点集合中删除了Reducer节点,则初始化所述Reducer节点集合。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机设备。如图10所示,该计算机设备包括存储器、处理器、通信接口以及通信总线,在存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例方法中的步骤。

处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及单元,如本发明上述方法实施例中对应的程序单元。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及作品数据处理,即实现上述方法实施例中的方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个单元存储在所述存储器中,当被所述处理器执行时,执行上述实施例中的方法。

上述计算机设备具体细节可以对应参阅上述实施例中对应的相关描述和效果进行理解,此处不再赘述。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述应用于Spark的作业分配方法中的步骤。本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard DiskDrive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述应用于Spark的作业分配方法的步骤。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120116380746