浅析Spark作业调度算法论文_曹廷 付宇

浅析Spark作业调度算法论文_曹廷 付宇

(武汉软件工程职业学院,湖北 武汉 430205)

摘要:随着云计算与大数据技术的迅速发展,Spark作为一种基于内存计算的大型数据处理框架已被广泛应用。Spark作业调度有两种模式:FIFO模式和FAIR模式,本文介绍了这两种模式下的作业调度算法,阐述了调度策略的执行步骤。

关键词:作业调度;Spark;大数据处理;FAIR算法

Spark诞生于伯克利大学AMP实验室,是一种通用大数据处理框架。2013年6月Spark成为Apache的孵化项目,进入高速发展时期,围绕Spark先后推出了Spark SQL、Spark Streaming、MLlib、GraphX和SparkR等组件,逐渐形成了大数据处理一站式解决平台。Spark作业调度的目的是将资源按需分配,提高资源利用率,提高Spark框架的计算性能。其默认的作业调度模式是FIFO调度模式,同时也支持FAIR调度模式[1],下面将具体介绍作业执行原理和这两种调度模式的调度算法。

一、作业执行原理

Spark的作业和任务调度系统是Spark的核心,由于它对任务划分DAG和容错机制,使得作业调度和执行能够高效执行。提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据使用的部署模式(deploy-mode),Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程会根据我们设置的参数向集群管理器申请运行资源。在申请到了作业执行所需的资源之后,Driver进程就会开始调度和执行作业。Driver进程会将Spark作业分拆为多个stage,并为每个stage创建一批task,然后将这些task分配到各个Executor进程中执行。下一个stage的task的输入数据就是上一个stage输出的中间结果。如此循环往复,直到执行完所有代码,并且计算出所有的数据,得到我们想要的结果为止。

二、调度算法

Spark根据RDD依赖关系划分作业后,对作业之间的调度提供了两种调度策略,一种是FIFO模式,这种模式是调度算法的默认模式,谁先提交谁先执行;另一种是FAIR模式,该模式支持在调度池中为任务进行分组,不同的调度池权重不同,任务可以按照权重来决定执行顺序[2]。下面将具体介绍调度策略的执行步骤。

期刊文章分类查询,尽在期刊图书馆

1、创建调度池

在提交作业的过程中,TaskScheduler会创建根调度池rootPool对象,然后根据schedulingMode的值是FIFO还是FAIR来创建调度创建器schedulableBuilder,最后使用调度创建器创建调度池。在创建FAIR调度创建器时,会根据配置文件设置调度算法的最小任务数和任务权重。

2、加入调度内容

在提交任务阶段,DAGScheduler对任务进行划分并以任务集(TaskSet)的形式提交给TaskScheduler,TaskScheduler会为每个TaskSet创建一个TaskSetManager对其进行管理,最后把TaskSetManager加入到调度池等待分配执行。

3、对任务集管理器进行排序

在TaskSchedular方法中进行资源分配时,根调度池rootPool会根据两种调度策略的排序算法将任务管理器进行排序。从算法的实现代码可以看出,在FIFO调度策略中FIFOSchedulingAlgorithm的compare方法会先比较作业的优先级,如果是同一个作业,再比较调度阶段(stage)的优先级,来决定任务管理器的顺序。而FAIR调度策略包含两层调度,第一层调度是指对根调度池中包含的下级调度池进行调度,第二层调度是指对下级调度池中TaskManager的调度。在FAIR算法中,先判断某个调度的当前任务数是否小于最小任务数,如果是这说明当前调度处于饥饿状态,如果调度处于饥饿状态则优先处理。如果两个调度都处于饥饿状态则比较它们的资源比(正在运行任务书/最小任务数),资源比小的优先级高,如果两个调度都处于非饥饿状态,则比较它们的权重比(正在运行任务书/权重值),权重比小的调度优先级高。

三、结语

为了应对如今企业界对计算引擎性能的要求不断提高,对于Spark平台中的作业调度策略的研究已经层出不穷[3]。本文介绍的两种作业调度算法是Spark最经典的作业调度策略,对提升大数据计算性能具有重大意义。

参考文献

[1]郭景瞻.《图解Spark核心技术与案例实战》.2017.

[2]翁利国,陈杰,汪宇杰,吴亦灵.基于Spark平台的资源调度策略研究现状.《电脑知识与技术》2019.1.

[3]刘恒.Spark缓存机制和作业调度策略研究.四川师范大学,2019.

作者简介:曹廷(1990.05-),女,湖北荆门人,硕士,工程师,主要研究方向:移动互联、前端技术。

付宇(1986.09-),男,湖北荆门人,硕士,工程师,主要研究方向:大数据、云计算。

论文作者:曹廷 付宇

论文发表刊物:《知识-力量》2019年11月50期

论文发表时间:2019/11/12

标签:;  ;  ;  ;  ;  ;  ;  ;  

浅析Spark作业调度算法论文_曹廷 付宇
下载Doc文档

猜你喜欢