一种任务调度方法及装置的制造方法

文档序号:8395759阅读:174来源:国知局
一种任务调度方法及装置的制造方法
【技术领域】
[0001] 本发明涉及数据处理技术领域,尤其涉及一种任务调度方法及装置。
【背景技术】
[0002] 随着信息技术的不断发展,信息量呈爆炸式增长,如何快速地从海量数据中挖掘 出有价值的信息变得日益重要,大数据系统正是这样一个数据处理和服务平台,作为提供 数据计算服务的平台,通常承担了成百上千甚至更多的任务,数据处理过程通常涉及到复 杂的流程,一次完整的数据处理任务通常包括多个子任务,如何有效管理和控制好这些任 务,让它们协调地工作,是影响到大数据系统能否实现其价值的重要性因素之一。
[0003] 大数据系统的主要特点包括:
[0004] ( 1)数据量巨大:系统通常拥有若干TB甚至上PB的数据量;
[0005] (2)任务数量庞大:作为数据服务平台,随时接收用户提交的处理任务;
[0006] (3)任务通常以数据处理为中心:任务的主要职责是对数据进行清洗、转化、分析、 挖掘等,各个任务之间构成一个数据处理流;
[0007] (4)任务之间的关系通常通过数据来建立。
[0008]目前,任务调度方式普遍采用控制流的原理,即根据任务状态来控制任务的执行 流程,所谓任务状态,是指任务的运行结果情况,即成功或者失败。任务调度通常按照这样 的逻辑来进行:假如任务执行计划中包括A、B、C三个任务,三者的依赖关系为:C > B > A, 即C能否启动取决于B的运行状态是否成功,B能否启动,取决于A的运行状态是否成功。
[0009] 现有技术中,普遍采用的是基于控制流和任务状态的任务调度方式,该方式在任 务数较少的时候,很容易实现,但是当任务量非常庞大的时候,尤其是任务之间的依赖关系 非常复杂的时候,对任务关系的维护将是个很大的挑战。另一方面,假如在A、B、C构成的 任务链中,如果A任务产生多个输出结果,B将使用到其中某一部分输出结果,这些输出结 果之间存在一定的时间间隔,设任务A在时刻tl输出B所依赖的资源,在t2时刻A任务完 成,那么在这种调度机制下,任务B最早启动时间为t2--即任务A全部完成,对于B来说, 其所依赖的资源在tl时刻就存在,则(t2-tl)为任务B的空闲等待时间。
[0010] 综上所述,现有方案的缺点主要体现在以下几个方面:
[0011] 1、调度系统必须对任务之间的关系进行维护,这增加了调度系统的实现难度和运 行成本;
[0012] 2、任务之间存在空闲等待时间,会造成资源上的浪费和任务的延迟现象。

【发明内容】

[0013] 为了解决在大数据系统中任务调度复杂且存在延迟的技术问题,本发明提出一种 任务调度方法及装置。
[0014] 本发明的一个方面,提供一种任务调度方法,包括:
[0015] 从第一任务的任务配置文件中解析得到任务配置项;
[0016] 根据所述任务配置项查询所述第一任务完成的依赖条件;
[0017] 根据所述第一任务完成的依赖条件调度所述第一任务。
[0018] 本发明的另一个方面,提供一种任务调度装置,包括:
[0019] 解析模块,用于从第一任务的任务配置文件中解析得到任务配置项;
[0020] 查询模块,用于根据所述任务配置项查询所述第一任务完成的依赖条件;
[0021] 调度模块,用于根据所述第一任务完成的依赖条件调度所述第一任务。本发明的 任务调度方法及装置,通过对任务执行的依赖条件进行判断,来对任务进行执行调度,无需 维护任务之间的关系,降低了系统的复杂度,提升系统效率;使得大规模任务群的调度管理 得以实现;最大程度减少任务空闲等待时间,提_系统的效率。
【附图说明】
[0022] 图1是本发明任务调度方法实施例的流程图;
[0023] 图2是本发明任务调度方法另一实施例的流程图;
[0024] 图3是本发明任务调度方法再一实施例的流程图;
[0025] 图4是本发明任务调度装置实施例的结构图。
【具体实施方式】
[0026] 本发明采用基于数据状态来进行任务调度的思路。数据状态,即数据的存在状态 (是否就绪),将任务视为数据处理单元,只关注任务所依赖的数据和输出的数据,不关注任 务的状态以及任务之间的关系。是否启动一个任务的唯一判断依据就是该任务所依赖的数 据是否就绪。以下结合附图对本发明进行详细说明。
[0027] 如图1所示,本发明提供一种任务调度方法实施例,包括以下步骤:
[0028] 步骤101,从第一任务的任务配置文件中解析得到任务配置项;
[0029] 步骤102,根据任务配置项查询第一任务完成的依赖条件;
[0030] 步骤103,根据第一任务完成的依赖条件调度第一任务。
[0031] 本实施例中,通过对任务执行的依赖条件进行判断,来对任务进行执行调度,无需 维护任务之间的关系,降低了系统的复杂度,提升系统效率;使得大规模任务群的调度管理 得以实现;最大程度减少任务空闲等待时间,提_系统的效率。
[0032] 实际操作中,步骤101中,从任务(Job)的任务配置文件(JobConfig)中解 析任务配置项,并将其装配成可执行的任务脚本(新任务Task)后加入新任务队列 (NewTaskList)。
[0033] 步骤103中,轮询NewTaskList中的所有任务,将依赖条件准备就绪的任务从新任 务队列中迁移到准备队列(ToRunList)中,直到新任务队列为空。
[0034] 例如:当前的新任务为T1,则根据T1的依赖任务名称T2,从任务完成队列中查询 所依赖的任务,查询结果分两种情况:
[0035] (1)如果得到的T2为空,表示T2还未执行,则放弃T1的条件判断,转入下一新任 务条件判断;
[0036] (2)如果T2不为空,判断T2的完成状态:
[0037] 如果完成状态为"失败"或"放弃",则放弃T1的条件判断,并将T1的完成状态设 为"放弃"后加入完成队列(FinisedList);
[0038] 如果状态为"成功",则判断T1的依赖条件,如果条件满足,则将任务加入 ToRunList,否则,转入下一个新任务的判断。
[0039]当第一任务完成的依赖条件包括第二任务时,根据第二任务的状态调度第一任 务,具体包括:
[0040] 当第二任务的状态为未执行时,不执行第一任务;
[0041] 当第二任务的状态为完成失败时,不执行第一任务;
[0042]当第二任务的状态为完成成功时,判断第一任务完成的其他依赖条件,当其他依 赖条件满足时,执行第一任务。
[0043] 本实施例中,当第一任务的完成需要依赖于第二任务的完成状态时,对第二任
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1