一种基于资源估算的大数据系统任务调度策略
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 44
•
大数据系统一般都具有存储数据量大、结构复杂、运行的任务繁多,以及任务处理的数据量大、任务间的依赖关系复杂等特点。仅就一个具体的大数据系统而
言,在一定时期内,其系统资源都已确定,因此,只有合理地对系统中的任务进行调度,让任务协调地执行,才能使得系统有限的资源充分发挥作用,实现大数据系统的真正价值。本文从工程实践的角度,阐述了一种大数据系统中基于资源估算的任务调度策略,实现对任务资源的估算,准确、高效地完成任务规划调度。
引言:大数据系统在计算和存储等方面的能力都很强大,但就某个具体的大数据系统而言,在一定时期内,其时间资源和存储资源都已确定。如何合理地调度系统中的任务,让任务协调地执行,以高效利用系统的有限资源,是大数据系统待解决的问题。完整的任务调度过程至少要包括任务资源估算及任务执行规划两部分,虽然分布式系统中的某些方法(Yi Pan,Ding Hui,Ramamurthy Byrav,Budget-Minimized Resource Al-location and Task Scheduling in Dis-tributed Grid/Clouds,2013-IEEE会议论文,10.1109/ICCCN.2013.6614111)和一些生产调度理论(徐俊刚,戴国忠,王宏
的大数据系统任咪安.生产调度理论和方法研究综述:计算机研究与发展,2004)可供参考,但因大数据系统数据量的庞大和任务繁杂,目前尚无有效的方法实现资源估算,实际工程中,一般都放弃对任务资源估算;在任务执行规划方面,通常采用基于控制流的原理来实现,该方法在任务规模较小的情况下具有一定的可操作性,但是随着任务数量的增加,任务依赖关系变得复杂,不仅效率下降而且实现难度非常大。本文提供实际工程中的一种基于资源估算的大数据系统任务调度策略,供大数据系统开发人员参
考。
1 基于资源估算的大数据系统任务调度策略
通常情况下,大数据系统的存储策略为尽可能随机地均匀分布于集群的各个节点。对任务规划与调度则主要基于两个方面:运行该任务所需要的时间成本和存储成本;在系统环境不变的情况下,时间成本和存储成本主要取决于任务处理的数据量、计算逻辑和算法时间复杂度。对
于一个既定任务,处理逻辑和算法复杂度都是确定的,因此,该任务的时间成本与存储成本与任务处理的数据量呈正比。本文所述的大数据系统任务调度策略包含了两个关键环节:对所接收的任务进行资源估算,并将任务加入任务列表;对当前的系统空闲资源进行估算,并依据任务列表中的任务所需的资源总量与当前的系统空闲资源的大小关系,对任务列表中的任务进行调度。1.1 接收的任务所需资源估算
这里所说的任务是指一个或多个数据处理任务。解析所接收任务的任务描述文件,获取任务的数据源信息,当确定该数据源包含的数据块总量达到系统预设的数据块阈值(可依据系统资源进行设定)时,则从数据源包含的数据块中选取N(N为正整数)个数据块作为估算任务的数据源,运行估算任务并记录估算任务消耗的资源,依据估算任务消耗的资源估算所接收任务所需的资源。具体方法如下:
(1)N个数据块的选取:对数据源包含的数据块进行排序(可随机排序或依据预设的规则排序),选取一个数据块作为第一数据块,然后每隔[
]个数据块选取一个数据
块,直到选取N个数据块为止。这里,M为数据源包含的数据块个数,[
]为值不超过的最大正整数。N的大小可以依据
需要进行设定,在实际工程中可优选N的值为[],即用等
间隔的每隔[
]个数据块选取一个数据块的抽样方式,有
效降低资源估算的系统误差。这里,可以大数定律计算抽样误差率:
其中:为可靠性系数,即置信度,当置信度为
95%时,该可靠性系数值为1.96,置信度越高需要的样本量越多;为方差,体现抽样个体值和整体均值之间的偏离程度,抽样数值分布越分散方差越大,需要的采样量越多;N 为样本量,样本越多误差越小。
(2)运行估算任务并记录估算任务消耗的资源:对选取的N个数据块分别执行接收的任务,采集并记录N个数据块从任务提交到任务完成期间的CPU消耗、存储消耗等运行信息。这里,所说的CPU消耗,即是运行任务所占用的时间资源,存储消耗也即运行任务所占用的存储资源。
(3)依据估算任务消耗的资源估算接收的任务所需资源:依据估算任务消耗的资源确定选取的N个数据块中每个数据块所需的资源均值,并依据每个数据块所需的资源均值及数据源对应的数据块总量,确定处理任务所需的总资源,并将该任务加入任务列表。
• 45
•
1.2 任务调度策略
之后,对当前的系统空闲资源进行估算,并依据任务列表中的任务所需的资源总量与当前的系统空闲资源的大小关系,对任务列表中的任务进行调度。当前的系统空闲资源可通过查询系统获得,其具体方法不作赘述。任务调度的策略如下:
(1)若确定任务列表中的任务所需的资源总量不大于当前的系统空闲资源,则启动任务列表中所有任务。
(2)若确定任务列表中的任务所需的资源总量大于当前的系统空闲资源,则依据任务列表中任务的优先级,并依据任务的优先级依次启动资源占用申请成功的任务。具体方法是:依次对任务列表中的任务进行资源占用申请。如果当前的系统空闲资源满足当前任务需求时,预分配给该任务所需的资源量,并从当前的系统空闲资源中减去该任务所需的资源量,同时确定当前任务资源占用申请成功,直至任务列表中的全部任务资源占用申请成功。
(3)对优先级相同的任务,优先启动资源占用较少的任务,如此,可以避免大任务阻塞小任务,提高任务调度效率。需要指出的是:任务的优先级可依据工程的实际需要进行设定;此外,在确定当前的系统空闲资源不满足当前任务需求时,每间隔一定时间可再次判断系统空闲资源是否满足需求,时间间隔亦可依据工程的实际需要进行设定。
(4)上述步骤反复运行直至任务列表中所有任务全部启动,并收集任务的运行结果,将任务的运行结果以文件方式输出。
上述1.1和1.2所阐述的资源估算和任务调度策略的流程示意图如下:
图1 基于资源估算的任务调度方法流程示意图
2 一个工程开发实例
这里将简要阐述一种大数据系统中基于资源估算的任务调度子系统的工程开发实例。该子系统由处理模块、调度模块和反馈模块组成,其所涉及的大数据系统的应用场景则是互联网用户行为海量数据的挖掘。
(1)处理模块
此模块实现1.1所述的功能,即对接收的任务进行资源估算,并将
任务加入任务列表。它对选取的N个数据块分别执行接收的任务,采集并记录N个数据块从任务提交到任务完成期间的CPU消耗、存储消耗等运行信息。从而计算出N个数据块中每个数据块所需的资源均值,依据每个数据块所需的资源均值及数据源对应的数据块总量,估算出接收的任务所需的资源总量。
(2)调度模块
此模块实现1.2所述的任务调度策略,即:依据任务列表中的任务所需的资源总量与当前的系统空闲资源的大小关系对任务列表中的任务进行调度。当任务列表中的任务所需的资源总量不大于当前的系统空闲资源时,启动任务列表中所有任务;否则,依据任务列表中任务的优先级依次启动任务列表中的任务,并对优先级相同的任务,优先启动资源占用较少的任务。
(3)反馈模块
此模块在任务调度完成之后,对运行结果进行记录,并以文件方式反馈结果。
上述各模块均可由服务器中的中央处理器(CPU)或数字信号处理器(DSP)、或现场可编程门阵列(FPGA)实现。
这里,可将此大数据系统中基于资源估算的任务调度子
系统组成结构示意如下:
图2 任务调度子系统组成结构示意图
3 结论
任务调度在大数据系统中承担了很重要的承上启下的角色,贯穿了整个数据的生产、交付过程,本文的重点未当前大数据系统任务调度的框架理论进行深入讨论,而是侧重于工
程实践,介绍了一种简单且易行的基于资源估算的大数据系统的任务调度策略,同时从工程实践的角度,也介绍了一个高可
用、高效率、灵活性的大数据任务调度子系统的结构,希望可以给相关开发人员提供有益的参考。
作者简介:曾东(1973—),男,四川遂宁人,硕士研究生,咪咕音乐有限公司高级工程师,研究方向为项目管理、大数据挖掘等。