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

文档序号:9249154阅读:256来源:国知局
任务调度方法及任务调度装置的制造方法
【技术领域】
[0001]本发明涉及信息处理领域,特别涉及一种任务调度方法及一种任务调度装置。
【背景技术】
[0002]Hadoop是一个基于Java实现的、开源的、包含分布式文件系统和MapReduce计算框架的项目,分布式开源系统Hadoop通过文件系统和计算系统的分离,各个计算节点无共享数据,实现机器的线性扩展,通过使用MapReduce计算模型实现计算方法的归一化,MapReduce计算模型将数据分析过程分为两个阶段:用以实现数据分拣&分堆的map阶段、用以实现数据汇总的reduce阶段,从而解决了海量数据的线性计算,主要是解决数据量大的问题。
[0003]Hive是Apache名下的开源SQL解析引擎,是基于Hadoop的一个数据仓库工具,可以将SQL (Structured Query Language,结构化查询语言,一种用于访问和处理数据库的标准的计算机语言)语句转换为MapReduce任务运行,从而实现了编程方法的简单化和结构化,熟悉SQL语句,就可以快速实现复杂的计算,提高了开发效率。
[0004]但是基于Hadoop+Hive的解决方案,当任务之间存在依赖关系时,比如数据的计算必须等待数据的入库完成之后,需要通过其他方法来保证任务的顺序执行。目前保证任务能够顺序执行的方式,以数据的计算必须等待数据的入库完成为例,是在数据入库任务脚本完成之后生成一个文件,数据计算任务脚本启动之前先检测这个文件是否存在,不存在则需要等待,直至检测到有这个文件。基于这种方式,需要配置各任务执行的共享文件,配置过程比较复杂,且在各任务执行过程中,需要持续不断地向该共享区域写文件和读文件,过多的读写次数会严重影响到任务执行的效率。

【发明内容】

[0005]基于此,本发明实施例的目的在于提供一种任务调度方法及一种任务调度装置,其可以提尚存在依赖关系的各任务进行调度时的任务执行效率。
[0006]为达到上述目的,本发明实施例采用以下技术方案:
[0007]一种任务调度方法,包括步骤:
[0008]在达到当前任务触发条件时,触发当前任务;
[0009]根据任务依赖图判断该当前任务是否有依赖的任务,若有,获取所依赖的各任务的任务执行结果状态,所述任务依赖图为各任务之间的依赖关系的有向无环图;
[0010]根据所依赖的各任务的任务结果执行状态,判断所依赖的各任务是否均执行成功;
[0011]若是,将所述当前任务下发给任务执行节点执行。
[0012]一种任务调度装置,包括:
[0013]任务触发模块,用于判断是否达到任务触发条件,并在达到当前任务触发条件时,触发当前任务;
[0014]任务依赖性确定模块,用于根据任务依赖图判断所述当前任务是否有依赖的任务,所述任务依赖图为各任务之间的依赖关系的有向无环图;
[0015]任何可执行性确定模块,用于在所述任务依赖性确定模块的判定结果为是时,获取所依赖的各任务的任务执行结果状态,根据所依赖的各任务的任务结果执行状态,判断所依赖的各任务是否均执行成功;
[0016]任务处理模块,用于在所述任务依赖性确定模块的判定结果为否时,或者所述任务可执行性确定模块的判定结果为是时,将所述当前任务进行下发给任务执行节点执行。
[0017]根据如上所述的本发明实施例的方案,其基于任务依赖图来体现数据任务流、计算任务流等任务之间的依赖关系,在达到当前任务的触发条件时,先基于任务依赖图获得该当前任务所依赖的任务,并在所依赖的各任务的任务执行结果状态均为执行成功的情况下,才将该任务下发执行。其无需频繁地进行写文件和读文件的操作,直接基于任务执行结果状态即可确定所依赖的任务是否执行成功,克服了频繁的文件检查操作造成的任务执行效率低和由于文件错误导致的可靠性低的问题,提高了存在依赖关系的各任务进行调度时的任务执行效率。
【附图说明】
[0018]图1是一个实施例中本发明方案的工作环境示意图;
[0019]图2是另一个实施例中本发明方案的工作环境示意图;
[0020]图3是一个实施例中的调度服务器的组成结构示意图;
[0021]图4是一个实施例中的任务调度方法的流程示意图;
[0022]图5是一个具体示例中的任务依赖图;
[0023]图6是一个具体示例中的任务调度方法的交互流程示意图;
[0024]图7是一个具体示例中的任务调度装置的结构示意图。
【具体实施方式】
[0025]为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的【具体实施方式】仅仅用以解释本发明,并不限定本发明的保护范围。
[0026]图1示出了本发明一个实施例中的工作环境示意图。任务调度节点101与一个以上的任务执行节点102连接,任务调度节点101在检测到达到某个任务的触发条件时,分析该任务是否可以下发执行,若可以,将该任务下发给任务执行节点102进行执行。任务调度节点101下发的各任务之间可能会存在某种依赖关系,例如对数据的计算必须等待数据的入库,那么,数据计算任务依赖于数据入库任务的完成,需在数据入库任务完成之后才能保证该数据计算任务的正确执行。各任务之间的依赖关系可以通过任务依赖图来表示,该任务依赖图可以是一个有向无环图。该任务依赖图可存储在元数据存储节点103。元数据存储节点103中,还可以存储各任务的任务结果执行状态,例如执行成功、执行失败等等。
[0027]图2示出了本发明另一个实施例的工作环境示意图,在该实施例中,相对于图1中所示的工作环境而言,还包括有配置展示节点100,用以对各任务的依赖关系进行配置,得到上述依赖关系图,得到的依赖关系图可以存储到元数据存储节点103。
[0028]在图1、图2所示的工作环境中,各节点,包括配置展示节点100、任务调度节点101、任务执行节点102以及元数据存储节点103,可以分别采用独立的机器设备实现,以实现机器级别的任务调度。
[0029]以各节点分别采用独立的机器设备实现为例,假设该任务调度节点101为任务调度设备服务器,图3中示出了一个实施例中的任务调度服务器101的结构示意图。如图3所示,该任务调度服务器101包括通过系统总线连接的处理器、存储介质、通信接口、电源接口和内存。其中,任务调度服务器101的存储介质存储有一种任务调度装置,该装置用于实现一种任务调度方法。任务调度服务器101的通信接口用于与配置展示节点100、各任务执行节点102以及元数据存储节点103连接和通信,任务调度服务器101的电源接口用于与外部电源连接,外部电源通过该电源接口向任务调度服务器101供电。
[0030]结合图1、图2、图3所示的示意图,图4中示出了一个实施例中的任务调度方法的流程示意图,该方法实施于上述任务调度节点101。
[0031 ] 如图4所示,本实施例中的任务调度方法包括步骤:
[0032]S401:在达到当前任务触发条件时,触发当前任务;
[0033]S402:根据任务依赖图判断该当前任务是否有依赖的任务,若有,进入步骤S403 ;
[0034]步骤S403:获取所依赖的各任务的任务执行结果状态,所述任务依赖图为各任务之间的依赖关系的有向无环图;
[0035]步骤S404:根据所依赖的各任务的任务结果执行状态,判断所依赖的各任务是否均执行成功,若是,进入步骤S405 ;
[0036]步骤S405:将所述当前任务下发给任务执行节点执行。
[0037]根据如上所述的本发明实施例的方案,其基于任务依赖图来体现数据任务流、计算任务流等任务之间的依赖关系,在达到当前任务的触发条件时,先基于任务依赖图获得该当前任务所依赖的任务,并在所依赖的各任务的任务执行结果状态均为执行成功的情况下,才将该任务下发执行。其无需频繁地进行写文件和读文件的操作,直接基于任务执行结果状态即可确定所依赖的任务是否执行成功,克服了频繁的文件检查操作造成的任务执行效率低和可靠性低的问题,且避免了执行过程中才判定所依赖任务是否执行成功所造成的浪费资源和效率低下的问题,提高了存在依赖关系的各任务进行调度时的任务执行效率。
[0038]其中,在上述步骤S404中判定当前任务所依赖的各任务中至少有一个未执行成功时,执行等待过程,说明当前任务无法执行,开始执行等待过程,并在等待时间大于或者等于预设超时时间阈值时,判定所述当前任务执行失败,发出失败告警信息。若在预设超时时间阈值内所依赖的各任务均执行完毕,则将该当前任务下发给任务执行节点执行。
[0039]在将当前任务下发后,任务执行节点会执行该当前任务,并基于任务执行结果返回任务执行返回码。任务调度节点会接收任务执行节点返回的任务执行返回码,并基于任务执行返回码判断该任务执行节点执行当前任务是否成功
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1