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

基于改进BL算法和遗传算法的Spark批量应用调度方法

文献发布时间:2024-04-29 00:47:01


基于改进BL算法和遗传算法的Spark批量应用调度方法

技术领域

本发明涉及互联网技术应用调度技术领域,尤其涉及一种基于改进BL算法和遗传算法的Spark批量应用调度方法。

背景技术

Spark作为一种分布式可扩展的通用大数据处理框架,被广泛应用于各类大数据处理场景,并逐步取代Hadoop下的传统MapReduce计算框架。Spark主要是利用内存缓存来提高应用程序的处理速度,然而随着Spark集群规模和动态性的不断增加,出现了任务分配不合理、批量应用执行时间过长等问题。现有的Spark应用调度方法是基于理想化同构集群设计的,主要聚焦于应用内的任务调度,而不特殊考虑批量应用间的调度问题,同时现有的Spark任务调度算法总是倾向于分配更多的资源给调度队列中排序靠前的任务,经常会导致部分后置任务所分配到的资源受限,使后面任务无法快速执行,进而导致批量应用的总执行时间变长。因此,很有必要设计一种针对Spark平台的批量应用调度方法。

目前,已经有大量的研究工作在探索如何优化Spark平台下的任务调度问题,这些研究工作主要集中在解决集群异构的负载均衡调度、数据倾斜调度、内存优化调度、截止日期、成本价值以及能量消耗等方面,而对于Spark平台下的批量应用调度问题的研究并不多,因此在大批量并行应用的场景下,如何保证Spark应用间的并行度和执行时间,仍然是一个有待解决的问题。

Spark应用调度中默认的调度机制是先进先出(First In First Out,FIFO)算法,其中每个应用都是一个接一个地进行调度。一方面,如果用户未对应用设置资源限制,则该项应用会消耗集群中的所有资源。另一方面,如果用户对应用所需资源设置了限制,则剩余资源可用于安排队列中的下一个应用。FIFO算法实现简单,但由于未考虑集群节点异构性及资源利用率的变化,无法满足异构集群下的高效率和负载平衡要求。

而容量调度器Capacity Scheduler允许多个用户共享集群资源,将资源分配给不同的队列,每个队列内部均按照FIFO算法的方式调度应用;当某个队列的资源空闲时,可以将该队列的剩余资源共享给其他队列;但容量调度器的队列参数及应用选择需要手动指定,且无法自动地对多个应用进行合理排序调度。

发明内容

针对上述现有技术的不足,本发明提出了一种基于改进BL(Bottom-up Left-justified)算法和遗传算法(Genetic Algorithm,GA)的Spark批量应用调度方法,旨在优化整体批量应用的调度效率和减少总执行时间。

本发明提出的一种基于改进BL算法和遗传算法的Spark批量应用调度方法,该方法包括如下步骤:

步骤1:获取Spark集群上已执行批量应用和待执行批量应用的应用运行指标,利用已执行批量应用的应用运行指标构建应用执行时间预测模型,再将待执行批量应用的应用运行指标输入所述应用执行时间预测模型,得到待执行批量应用的预测执行时间;

步骤2:对待执行批量应用进行编码,随机生成待执行批量应用的应用执行顺序并构建初始种群作为当前种群开始迭代:基于当前种群和待执行批量应用的预测执行时间,利用改进的BL算法计算待执行批量应用的总执行时间;再采用遗传算法对当前种群进行选择、交叉和变异,生成下一代种群作为当前种群同时完成一次迭代,判断当前迭代次数是否达到预设的迭代轮次,若是则停止迭代;若否则继续迭代;当迭代停止后,从所有迭代结果中选择与待执行批量应用中总执行时间最短的应用执行顺序作为待执行批量应用的调度顺序;

所述应用运行指标,包括:应用名、应用执行所需的处理机核数、数据量及各阶段的执行时间;

所述步骤1进一步包括:

步骤1-1:获取Spark集群上已执行批量应用的历史数据,并从历史数据中获取Spark集群上已执行批量应用的应用运行指标;

步骤1-2:利用多元线性回归模型和已执行批量应用的应用运行指标构建应用执行时间预测模型;

步骤1-3:获取Spark集群上待执行批量应用的应用运行指标,并将获取的应用运行指标输入应用执行时间预测模型,预测待执行批量应用的执行时间;

所述步骤1-2进一步包括:

步骤1-2-1:在不考虑内存影响的前提下,对应用执行时间建立多元线性回归模型;

步骤1-2-2:根据已执行批量应用的应用运行指标计算执行阶段时间T

步骤1-2-3:利用已执行批量应用的应用运行指标、执行阶段时间T

步骤1-2-4:根据多元线性回归模型及其线性回归系数构建应用执行时间预测模型;

所述应用执行时间预测模型为:

T

其中T

所述步骤2进一步包括:

步骤2-1:对待执行批量应用中的k个应用进行编码并采用随机方式生成M组待执行批量应用的应用执行顺序,将每一组待执行批量应用的应用执行顺序作为一条染色体,将每个应用的编码作为染色体中的一个基因,利用得到的M条染色体构建初始种群并作为当前种群;

步骤2-2:基于当前种群和待执行批量应用的预测执行时间,利用改进的BL算法计算待执行批量应用的总执行时间,并设计适应度函数;

步骤2-3:利用适应性函数计算对当前种群中的每个染色体的选择概率,并根据选择概率对当前种群进行选择,生成下一代种群;

步骤2-4:从下一代种群中选择两个父代染色体,利用交叉算法在选择出的两个父代染色体上选择交叉区间并进行交叉,生成两个子代染色体并加入下一代种群中;

步骤2-5:从步骤2-4得到的下一代种群中随机选择一个染色体进行变异,采用变异策略生成一个新的染色体并加入该种群中;

步骤2-6:将步骤2-5中得到的下一代种群作为当前种群,并重新执行步骤2-2进行迭代,直到达到预设的迭代轮次后停止迭代,并从得到的迭代结果中选择待执行批量应用的总执行时间最短的染色体代表的应用执行顺序作为待执行批量应用的调度顺序;

所述步骤2-2中进一步包括:

步骤2-2-1:将Spark集群的批量应用调度问题转换为二维装箱问题,定义箱体的宽度W为Spark集群提供的处理机总核数,箱体的高度H为完成装箱后箱体中批量应用的总执行时间,其中箱体的宽度W是固定的;将批量应用中的一个应用视为一个待装箱的矩形,定义该矩形的宽度w为应用i执行所需的处理机核数

步骤2-2-2:采用改进BL算法放置批量应用,计算箱体高度,进而得到待执行批量应用的总执行时间;

步骤2-2-3:构建适应度函数F;

所述适应度函数F的公式如下:

其中X

所述采用改进BL算法放置批量应用的过程为:对于当前种群中的任意染色体,按照该染色体代表的应用执行顺序放置批量应用,将表示该染色体中第一个应用的矩形放置于箱体的左下角,对于该染色体中剩下的应用按照应用执行顺序依次进行放置,其过程为:

a)从箱体的右上角开始垂直向下放置应用i,直到无法移动为止;其中2≤i≤k;

b)将应用i从当前位置开始竖直向上移动,直到找到一个足够放置应用i的空间,且放置后的应用i不与其他已放置应用重叠;

c)将应用i放置在经步骤b)找到的空间内的右下角;

d)将应用i从当前位置开始沿水平方向左移,直到无法移动为止;如果表示应用i的矩形高出其左侧矩形的顶部,则将表示应用i的矩形高出的部分沿水平方向切割,并将切割部分继续沿水平方向左移,直到碰到高度高于切割部分的矩形高度的矩形或者箱体边缘为止;如果表示应用i的矩形低出其左侧矩形的顶部,则完成应用i的放置。

采用上述技术方案所产生的有益效果在于:

1.提高调度效率:本发明方法通过精确预测各应用执行时间并结合空间优化放置,有效地减少了批量应用的调度时间和等待时间。

2.资源利用最大化:本发明方法中改进的BL算法考虑了集群的实际资源限制,通过空间优化确保了资源的最大化利用。

3.提升调度的公平性:本发明方法通过遗传算法的自然选择机制,使得批量应用调度队列中的后置任务也有机会获得足够得资源,避免了资源分配的不公平性。

附图说明

图1为本实施方式中基于改进BL算法和遗传算法的Spark批量应用调度方法的流程图;

图2为本实施方式中基于改进BL算法和遗传算法的Spark批量应用调度方法的原理图;

图3为本实施方式中改进的BL算法中装箱过程的原理示意图;其中图(a)为向箱体中装入第2个矩形的过程示意图;图(b)为为向箱体中装入第6个矩形的过程示意图;

图4为本实施方式中利用不同应用验证应用执行时间预测模型的准确性时得到的预测时间和执行时间的对比图;其中图(a)为运行WordCount应用时的预测时间和执行时间的对比图;图(b)为运行Kmeans应用时的预测时间和执行时间的对比图;图(c)为运行Eafim应用时的预测时间和执行时间的对比图;图(d)为运行Apriori应用时的预测时间和执行时间的对比图;

图5为本实施方式中使用改进的BL算法和遗传算法以及使用BL算法和遗传算法进行若干次迭代后资源利用率的对比图;

图6为本实施方式中不同调度算法下应用执行时间的对比图;

图7为本实施方式中模拟数据不同应用量执行时间的对比图;

图8为本实施方式中不同集群规模下执行时间的对比图;

图9为本实施方式中改进BL算法和遗传算法与其他现有算法的结果对比图。

具体实施方式

为了便于理解本申请,下面结合附图和实施方式,对本发明的具体实施方式作进一步详细描述。以下实施方式用于说明本发明,但不用来限制本发明的范围。相反地,提供这些实施方式的目的是使对本申请的公开内容理解的更加透彻全面。

本实施方式的一种基于改进BL算法和遗传算法的Spark批量应用调度方法,如图1所示,该方法包括如下步骤:

步骤1:获取Spark集群上已执行批量应用和待执行批量应用的应用运行指标,利用已执行批量应用的应用运行指标构建应用执行时间预测模型,再将待执行批量应用的应用运行指标输入所述应用执行时间预测模型,得到待执行批量应用的预测执行时间。

所述应用运行指标,包括:应用名、应用执行所需的处理机核数、数据量及各阶段的执行时间。

步骤1-1:获取Spark集群上已执行批量应用的历史数据,并从历史数据中获取Spark集群上已执行批量应用的应用运行指标。

步骤1-2:利用多元线性回归模型和已执行批量应用的应用运行指标构建应用执行时间预测模型。

步骤1-2-1:在不考虑内存影响的前提下,对应用执行时间建立多元线性回归模型。

所述多元线性回归模型如公式(1)所示:

T

其中T

步骤1-2-2:根据已执行批量应用的应用运行指标计算执行阶段时间T

在本实施方式中,应用执行的过程中共分为四个阶段,分别是:初始化阶段、准备阶段、执行阶段和拉取阶段;其中,由于执行阶段时间T

T

其中cf

在数据拉取阶段,拉取阶段的时间T

T

其中cf

步骤1-2-3:利用已执行批量应用的应用运行指标、执行阶段时间T

在本实施方式中,如图1所示,将执行阶段时间T

步骤1-2-4:根据多元线性回归模型及其线性回归系数构建应用执行时间预测模型。

所述应用执行时间预测模型为:

T

步骤1-3:获取Spark集群上待执行批量应用的应用运行指标,并将获取的应用运行指标输入应用执行时间预测模型,预测待执行批量应用的执行时间。

在本实施方式中,Spark集群中待执行应用的应用名、应用执行所需的处理机核数、数据量由待执行批量应用的应用队列直接提供,将Spark集群中待执行应用的应用名、应用执行所需的处理机核数、数据量输入应用执行时间预测模型中,预测待执行应用的执行时间

步骤2:对待执行批量应用进行编码,随机生成待执行批量应用的应用执行顺序并构建初始种群作为当前种群开始迭代:基于当前种群和待执行批量应用的预测执行时间,利用改进的BL算法计算待执行批量应用的总执行时间;再采用遗传算法对当前种群进行选择、交叉和变异,生成下一代种群作为当前种群同时完成一次迭代,判断当前迭代次数是否达到预设的迭代轮次,若是则停止迭代;若否则继续迭代;当迭代停止后,从所有迭代结果中选择与待执行批量应用中总执行时间最短的应用执行顺序作为待执行批量应用的调度顺序。

在本实施方式中,将批量应用输入到改进BL算法和遗传算法中进行应用调度排序,首先采用改进BL算法进行应用放置并计算箱体高度,然后利用GA算法来近似求解最优的应用放置的顺序,从而实现对批量应用的高效调度处理。

步骤2-1:对待执行批量应用中的k个应用进行编码并采用随机方式生成M组待执行批量应用的应用执行顺序,将每一组待执行批量应用的应用执行顺序作为一条染色体,将每个应用的编码作为染色体中的一个基因,利用得到的M条染色体构建初始种群并作为当前种群。

在本实施方式中,如图2所示,对于一组待执行批量应用来说,采用整数1~k来对该组待执行批量应用中所有应用进行编码;在构建初始种群时,随机生成M组包含k个应用的执行顺序作为初始种群中的初代染色体,采用随机生成方式得到的应用执行顺序消除了相关解在表达中的不可行性;其中每个应用i均具备两个特征:该应用执行所需的处理机核数

步骤2-2:基于当前种群和预测得到的待执行批量应用的执行时间,利用改进的BL算法设计适应度函数。

在本实施方式中,由于遗传算法是根据适应度值的大小衡量每个染色体的优劣,且适应度值大的染色体质量高,因此需要采用改进的BL算法设计适应度函数,建立每个染色体所代表的用于调度的应用执行顺序和适应度值的关系,进而可以根据每个染色体所代表的应用执行顺序判断每个染色体的优劣。

步骤2-2-1:将Spark集群的批量应用调度问题转换为二维装箱问题,定义箱体的宽度W为Spark集群提供的处理机总核数,箱体的高度H为完成装箱后箱体中批量应用的总执行时间,其中箱体的宽度W是固定的;将批量应用中的一个应用视为一个待装箱的矩形,定义该矩形的宽度w为应用i执行所需的处理机核数

在本实施方式中,将Spark集群下的批量应用调度问题描述为一个二维装箱问题,对于Spark集群,定义箱体的宽度W为Spark集群提供的处理机总核数,箱体的高度H为装箱后批量应用的总执行时间;其中箱体的宽度W是固定的;将待执行批量应用中一个应用表示为一个宽度为w且高度为h的矩形,其中矩形宽度w表示应用i执行所需的处理机核数

步骤2-2-2:采用改进BL算法放置批量应用,计算箱体高度,进而得到待执行批量应用的总执行时间。

所述采用改进BL算法放置批量应用的过程为:对于当前种群中的任意染色体,按照该染色体代表的应用执行顺序放置批量应用,将表示该染色体中第一个应用的矩形放置于箱体的左下角,对于该染色体中剩下的应用按照应用执行顺序依次进行放置,其过程为:

a)从箱体的右上角开始垂直向下放置应用i,直到无法移动为止;其中2≤i≤k;

b)将应用i从当前位置开始竖直向上移动,直到找到一个足够放置应用i的空间,且放置后的应用i不与其他已放置应用重叠;

c)将应用i放置在经步骤b)找到的空间内的右下角;

d)将应用i从当前位置开始沿水平方向左移,直到无法移动为止;如果表示应用i的矩形高出其左侧矩形的顶部,则将表示应用i的矩形高出的部分沿水平方向切割,并将切割部分继续沿水平方向左移,直到碰到高度高于切割部分的矩形高度的矩形或者箱体边缘为止;如果表示应用i的矩形低出其左侧矩形的顶部,则完成应用i的放置。

在本实施方式中,采用改进BL算法来放置批量应用,并计算出得到的箱体高度H,且H越小代表该染色体质量越高,如图3所示,以初始种群为例,放置初始种群中某一染色体中的第一个应用:将代表编号为1的应用的矩形直接放置到箱体的左下角;将代表编号为2的应用的矩形从箱体右上角开始沿箱体内壁垂直向下放置,直到无法移动为止;由于当前位置存在足够放置代表编号为2的应用的矩形,所以该矩形直接从当前位置出发,沿水平方向左移直到无法移动为止;由于应用2对应的矩形高于应用1对应的矩形,所以沿水平方向将高出的部分切除,并将切除部分从当前位置开始沿水平方向左移直到箱体边缘为止,完成应用2的放置;同理继续放置应用3、应用4、应用5;对于应用6,首先将应用6从箱体右上角开始沿箱体内壁垂直向下放置,直到无法移动为止;再从当前位置出发沿箱体边缘竖直上移,直到找到一个足够放置应用6的空间并将应用6放置在空间内的右下角,且放置后的应用6不与其他已放置应用重叠;由于应用6正好与该空间尺寸相同,所以不需要继续移动,直接完成放置。

步骤2-2-3:构建适应度函数。

所述适应度函数的公式如下:

其中X

步骤2-3:利用适应性函数计算对当前种群中的每个染色体的选择概率,并根据选择概率对当前种群进行选择,生成下一代种群。

在本实施方式中,采用轮盘赌选择算法根据适应性函数对当前种群进行选择;所述选择旨在模拟自然选择过程中的“适者生存”原则。

步骤2-3-1:利用适应性函数计算当前种群中的每个染色体的适应度值。

在本实施方式中,当前种群中的每个染色体的适应度值用于衡量每个调度方案的效率和效果。

步骤2-3-2:根据当前种群中的每个染色体的适应度值计算每个染色体的选择概率。

在本实施方式中,计算每个染色体的选择概率,选择概率等于该染色体的适应度值除以当前种群中所有染色体的适应度值的总和,如公式(6)所示,其中总选择概率为1,且每个染色体的选择概率与其适应度值成正比。

其中P(m)是当前种群中第m个染色体的选择概率;F(X

步骤2-3-3:根据得到的选择概率创建一个累积概率轮盘,并根据累积概率轮盘计算当前种群中每个染色体的累积概率;其中累积概率轮盘的每个段代表一个染色体,且每个染色体在累积概率轮盘上占据的段的大小与该染色体选择概率成正比。

步骤2-3-4:根据累积概率轮盘对当前种群中的染色体进行轮盘赌选择,生成下一代种群。

步骤A1:生成一个介于0到1之间的随机数。

步骤A2:从当前种群的第一个染色体开始,顺序检查当前种群中每个染色体的累积概率。

步骤A3:根据检查结果选择当前种群中第一个累积概率大于或等于随机数的染色体,并将该染色体作为下一代种群中的第一个染色体;

步骤A4:重复上述选择过程直到将当前种群中所有的染色体都填入下一代种群;

步骤2-4:从下一代种群中选择两个父代染色体,利用交叉算法在选择出的两个父代染色体上选择交叉区间并进行交叉,生成两个子代染色体并加入下一代种群中。

在本实施方式中,为了模仿生物基因的交叉重组并保证多样性,同时避免因持续选择适应度最高的染色体导致的局部最优解,采用交叉(Order Crossover,OX)算法进行交叉操作,防止选出局部最优。

步骤2-4-1:从步骤2-3得到的下一代种群中随机选择两个染色体作为两个父代染色体。

在本实施方式中,采用随机选择的方式,有助于保持多样性,减少局部最优的风险。

步骤2-4-2:在两个父代染色体上随机选择任意长度区间作为交叉区间,并在两个父代染色体之间交换各自交叉区间内的基因。

步骤2-4-3:利用交叉算法生成两个子代染色体并加入步骤2-3得到的下一代种群中。

所述利用交叉算法生成两个子代染色体的过程为:

步骤B1:从两个父代染色体中任选一个父代染色体,复制该父代染色体中交叉区间内的基因到新的染色体中的对应位置,生成一个子代染色体,并保持该交叉区间内基因的顺序不变。

步骤B2:找到子代染色体中的基因在另一个父代染色体中的位置,并将另一个父代染色体中剩余位置的基因按顺序填入该子代染色体中的剩余位置中。

步骤B3:将步骤B1和步骤B2中两个父代染色体的位置对调后重复上述步骤B1-B2,生成新的子代染色体。

步骤2-5:从步骤2-4得到的下一代种群中随机选择一个染色体进行变异,采用变异策略生成一个新的染色体并加入该种群中。

在本实施方式中,采用两点变异策略对随机选定的染色体进行变异,通过变异操作使基因以最小的概率发生简单的变化,使染色体朝向最优解靠近。

步骤2-5-1:从步骤2-4得到的下一代种群中随机选择一个染色体。

步骤2-5-2:在选出的染色体上随机选择两个位置作为变异点,并获取两个位置对应的应用编码。

步骤2-5-3:交换两个位置对应的应用编码,生成一个新的染色体并加入步骤2-4得到的下一代种群中。

在本实施方式中,通过交换两个位置对应的应用编码使原本的调度顺序被轻微调整,得到了一个新的调度顺序,即生成了一个新的染色体。

步骤2-6:将步骤2-5中得到的下一代种群作为当前种群,并重新执行步骤2-2进行迭代,直到达到预设的迭代轮次后停止迭代,并从得到的迭代结果中选择待执行批量应用的总执行时间最短的染色体代表的应用执行顺序作为待执行批量应用的调度顺序。

在本实施方式中,将步骤2-5中得到的下一代种群作为当前种群,并重新执行步骤2-2进行迭代,直到完成300次迭代后停止迭代,并从得到的300次迭代结果中选择待执行批量应用的总执行时间最短的染色体代表的应用执行顺序作为待执行批量应用的调度顺序。

在本实施方式中,搭建由5台IBM X3650 M4服务器构成的Spark集群作为测试运行环境,其中一台服务器作为Master节点,其余服务器作为Worker节点。每个节点的内存配置、网卡配置、硬盘配置以及CPU配置等配置均相同,具体如表1所示。

表1服务器配置表

本实施方式采用了IntelliJ IDEA作为开发环境,Scala作为编程语言,运行的软件环境包括:操作系统CentOS 6.4,运行环境包括Scala、Java、Hadoop以及Spark集群系统,具体软件环境如表2所示。

表2软件环境配置表

在本实施方式中,实验数据主要分为两类,其中第一类实验数据包括:Hibench基准测试程序生成的Wordset数据集Dataset1和来自1991年-2007年的西北太平洋台风轨迹数据相关数据集Dataset2,上述两个数据集的具体信息说明如表3所示;这两个数据集主要用于验证本实施方式中应用执行时间预测模型的准确性。

表3第一类实验数据中Spark应用程序的数据集信息表

第二类实验数据包括:来自ILHL算法和HEMAGA算法的装箱数据集Dataset3和Dataset4,以及随机生成的数据集Dataset5,具体说明如表4所示;数据集中,每个矩形模拟一个应用,矩形的高和宽分别代表应用需要的核数和预测的执行时间,箱子的宽度代表集群中处理器核数。数据集Dataset3用于改进的BL算法和传统BL算法的实验对比,数据集Dataset5用于改进的BL算法和遗传算法的参数设定和与Spark平台调度算法FIFO和Capacity的对比实验。

表4第二类实验数据中Spark应用程序的数据集信息表

(1)验证应用执行时间预测模型的准确性;

基于数据集Dataset1在Spark集群上运行词频统计(WordCount)算法,将处理器核数设置为10,数据集Dataset1的大小从1G到10G依次增加,分别得到Spark集群对应的实际运行时间,同时利用应用执行时间预测模型对数据集Dataset1的应用执行时间进行预测,得到图4(a)所示结果。同样基于Dataset2,将在Spark集群上分别运行Kmeans、Apriori、Eafim,设置处理机核数分别为12、16、32,开始执行并得到相应的执行时间,将该执行时间与采用应用执行时间预测模型得到的预测结果进行比较,得到图4(b)、图4(c)和图4(d)所示的对比结果。

从图4中可以看出,在给定所需处理机核数的情况下,4个程序的执行时间均随数据规模的增长而基本呈线性增长,且实际执行时间和预测时间基本保持一致,4个程序的预测误差在4.1%到6.3%之间,能够达到较好的拟合效果。这也说明本实施方式中提出的应用执行时间预测模型是准确的,具有较好的拟合效果,为应用的调度提供了相应的支持。

(2)改进的BL算法性能分析;

采用改进的BL算法对数据集Dataset3和数据集Dataset5进行装箱,并和采用传统BL算法对数据集Dataset3和数据集Dataset5进行装箱进行了对比。由于箱体宽度固定,故将箱体的容器利用率作为对比指标。容器利用率

其中w

在本实施方式中,表5为在数据集Dataset3上,按照相同的应用执行顺序执行装箱时,分别使用改进的BL算法与BL算法得到装填高度和容器利用率的结果对比表,从表5中可以看出改进的BL算法相较于BL算法对容器的利用率更高,装填高度更低。这是由于改进的BL算法增加了应用的分割放置和插入放置,因而其放置效果明显优于BL算法。

表5两种算法装填高度和容器利用率的结果对比表

在本实施方式中,从数据集Dataset5中随机抽取了100个应用进行装箱,在装箱时分别使用两种组合算法对应用执行顺序进行优化,分别为:改进的BL算法和遗传算法,即IBL+GA算法,以及BL算法和遗传算法,即BL+GA算法,得到的结果图5所示。从图5中可以看出,随着遗传算法迭代次数的增大,两种算法的资源利用率都有所增加。BL+GA算法的资源利用率增加明显,而由于改进的BL算法可以快速达到较高的利用率,因而后续并未随迭代次数的增加明显变化。同时,IBL+GA算法的资源利用率始终高于BL+GA算法,即改进的BL算法在不同的应用执行顺序下对资源利用率一直高于BL算法,与预期一致,也就是说采用IBL+GA算法装箱后得到的待执行批量应用的总执行时间即箱子高度始终少于采用BL+GA算法装箱后得到的待执行批量应用的总执行时间。

(3)改进的BL算法和遗传算法与Spark平台调度算法的性能比较:

基于上述实验环境和实验数据集,对本实施方式中提出的改进的BL算法和遗传算法的性能进行了测试分析,并与Spark平台本身调度算法FIFO算法和Capacity算法进行实验对比。

对于不同应用数量来说:

当集群规模相同时,集群中的应用数量直接影响批量应用调度算法执行时间,因此,集群中应用数量对算法性能具有关键影响。分别采用Dataset5、Dataset1和Dataset2数据集,测试了改进的BL算法和遗传算法的性能,并和Spark平台本身调度算法FIFO和Capacity算法进行了比较。其中图6是在Dataset1和Dataset2上进行300次迭代时三种调度算法的执行时间的变化情况;图7是在Dataset5模拟数据集上进行300次迭代时三种调度算法的执行时间的变化情况。

对于表3中的两个真实情况数据集Dataset1和Dataset2,以及对应的5个Spark算法,分别从数据集中抽取6、8、10个不同大小数据子集,结合5个算法共形成30、40、50个应用,并在总核数为48的Spark集群上运行。三种调度算法的总执行时间随着应用数的变化情况如图6所示,从图中可以看出三种调度算法的执行时间随着应用数量的增加而平稳增加,而本实施方式提出的改进的BL算法和遗传算法相较于FIFO和Capacity调度方法的总执行时间最短。

图7展示了改进的BL算法和遗传算法在模拟数据中不同应用量下的运行时间变化情况,从图7中可看出,三种调度算法的执行时间随着应用数量的增加而增加,在相同的应用数量下,本实施方式提出的改进的BL算法和遗传算法的执行时间少于FIFO算法和Capacity算法,并且随着应用数增加,优势越来越明显。这是因为采用改进的BL算法来进行应用调度并作为设计适应度函数的依据,同时使用交叉算子来探索空间,得到近似最优的应用调度顺序;Dataset5上的实验结果表明改进的BL算法和遗传算法优于传统FIFO算法和capacity算法。

综上所述,如图6-7所示,在不同应用数量下,本实施方式中提出的基于改进BL算法和遗传算法的Spark批量应用调度方法的性能都要优于FIFO和Capacity调度方法。

对于不同集群规模来说:

集群规模指的是Spark集群中的处理机核的数量,对算法性能有直接影响,分别测试不同集群规模下改进BL算法和遗传算法性能的变化情况。将应用数量固定为50,迭代次数设置为300,测试过程中的集群规模即为Processor Cores的数量。集群中的处理器核数量增加从36开始依次增加,图8展示了改进BL算法和遗传算法在不同集群规模下运行时间的变化情况。从图中可看出,随着集群中处理机核数量的增加,三种调度算法的执行时间快速下降,当处理机核数量持续增大时,执行时间减少的幅度在减弱。这是由于处理机核数量的增加,增加了应用的并行性,因而算法执行时间降低,当处理机核数量持续增大时,通讯开销增加,因而造成下降幅度的减缓,与理论预期一致。如图8所示,在不同集群规模下,本实施方式提出的基于改进的BL算法和遗传算法的Spark批量应用调度方法的性能都要优于FIFO和Capacity调度方法。

改进的BL算法和遗传算法与现有调度算法的性能比较:

将改进的BL算法和遗传算法和8个现有调度算法进行对比,8个现有调度算法分别为:待排序宽度和最低水平线算法(GA+LLL)、基于改进的最低水平线算法(ImprovedLowest Level Line Algorithm,ILLL)、基于最低水平线的择优算法(GA+LLLI)、HEMAGA算法、传统GA算法、自适应多岛遗传算法(Adaptive Multi-Island Genetic Algorithm,AMGA)、改进遗传禁忌搜索混合算法IGTSHA和分布估计算法(EstimationofDistributionAlgorithm,DEA)。采用表4中的数据集Dataset2进行模拟应用调度实验。其中利用59个矩形代表59个应用,每个矩形的宽度代表应用执行所需的处理机核数,高度代表应用的执行时间。箱子宽度代表Spark集群提供的处理机总核数。59个应用中包含20种不同的应用类型,每种应用包含其所需的处理机核数和应用执行时间,集群中总处理机核数设置为400,完成调度后箱子的高度即为59个应用的总执行时间。9种调度算法的应用执行时间比值如图9所示;从图9中可以看出,本实施方式提出的改进BL算法和遗传算法生成的调度策略具有最少的总执行时间,说明本实施方式提出的调度方法是有效的,其调度性能优于现有的方法。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。

相关技术
  • 基于改进遗传算法的云计算资源负载均衡调度方法及应用
  • 一种基于改进遗传算法的车间调度系统及调度方法
技术分类

06120116593751