数据任务的处理方法及任务调度器技术

技术编号:14891731 阅读:88 留言:0更新日期:2017-03-29 00:35
本发明专利技术公开了一种数据任务的处理方法,包括:从任务表中调取一个待执行的任务;其中,所述任务表记载有多个任务及每个任务的依赖关系项,且所述任务表中记载的任务可被多个任务调度器调取;根据所调取的任务的依赖关系项,获取所述任务的依赖信息;根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理。相应地,本发明专利技术还公开了一种任务调度器。采用本发明专利技术实施例,能并行处理数据任务,并提高工作效率。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种数据任务的处理方法及任务调度器
技术介绍
当前,互联网企业越来越重视大数据的收集,例如网络销售数据、用户行为数据等。面对越来越大的数据量,大部分企业选择目前较成熟的Hadoop+Hive作为分布式数据处理框架。借助Hadoop+Hive分布式数据处理框架,企业能轻易的处理上亿级别的数据。通常数据处理工作流程包含若干步骤,每个步骤都有数量不定的数据处理任务组成,这些数据处理任务之间可能存在依赖关系,也可能是独立的。对于存在依赖关系的任务,需要严格遵守先后顺序,否则会造成数据结果错误。因此,如何管理日常数据处理工作流程,使数据处理任务高效、有序地进行,是大数据运用中的一大难点和重点。面对以上问题,目前的解决方案有两种:自动串行执行、借助Oozie。在自动串行执行的技术方案中,数据工程师首先新建一个脚本文件,并在脚本文件中依次地、按照既定顺序写下日常数据处理工作流程各个步骤的数据处理任务,系统根据自动串行的脚本文件依次执行数据处理的任务,完成日常数据处理流程。然而,由于数据处理任务直接可能是独立的,例如指标A与指标B的计算毫无关联,对应的任务是可以并行执行的,而且在数据处理的任务非常多的情况下,自动串行执行任务,会大大降低运行工作效率。另一方面,若其中一个数据处理任务出错,由于脚本运行的特点,整个处理流程将跳过错误并继续执行,而数据处理任务之间可能是存在依赖关系的,因此可能导致数据处理的结果发生错误。在Oozie的技术方案中,引入了一个工作流定义的文档,在这个文档定义了任务的依赖关系、任务的走向等。Oozie可以根据这个文档,判断当前有哪些任务是可以安全的同时执行的,其相比于自动串行的技术方案,提高了可靠性。但是,由于Oozie文档过于复杂,在实际生产环境中,成千上百个数据处理任务的工作流程是极其常见的,若此时使用Oozie,将带来高昂的文档维护成本,工作效率低下。
技术实现思路
本专利技术实施例提出一种数据任务的处理方法及任务调度器,能并行处理数据任务,并提高工作效率。本专利技术实施例提供一种数据任务的处理方法,包括:从任务表中调取一个待执行的任务;其中,所述任务表记载有多个任务及每个任务的依赖关系项,且所述任务表中记载的任务可被多个任务调度器调取;根据所调取的任务的依赖关系项,获取所述任务的依赖信息;根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理。进一步地,所述从任务表中调取一个待执行的任务,具体包括:从所述任务表中按任务队列顺序选择一个任务;根据所述任务的标识,从数据存储区中查询所述任务的调取信息及执行信息;其中,所述数据存储区记录有所述任务表中每个任务的调取信息及执行信息,所述调取信息用于记录所述任务是否已被任务调度器调取,所述执行信息用于记录所述任务是否已被提交给任务处理器正在执行以及是否执行成功;当所选择的任务未被调取,或者所选择的任务已被调取但未被提交给任务处理器执行,或者所选择的任务已被提交给任务处理器执行但执行失败时,调取所述任务,并在所述数据存储区记录所述任务已被调取;当所选择的任务已被调取且已被提交给任务处理器正在执行,或者所选择的任务已被调取且执行成功时,继续从所述任务表中按任务队列顺序选择下一个任务。再进一步地,所述依赖关系项中包含依赖信息;则所述根据所调取的任务的依赖关系项,获取所述任务的依赖信息,具体为:从所调取的任务的依赖关系项中,直接获得所述任务的依赖信息;或者,所述依赖关系项中包含自动依赖判断标识;则所述根据所调取的任务的依赖关系项,获取所述任务的依赖信息,具体为:根据所调取的任务的依赖关系项中的自动依赖判断标识,启动自动依赖判断;扫描所述任务的具体执行内容,从中获得所述任务的依赖信息。在一个实施方式中,所述依赖信息为所述任务所依赖的启动时刻;则根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理,具体包括:判断所述任务所依赖的启动时刻是否早于当前时刻;若是,则判定当前状态符合执行条件,将所调取的任务提交给所述任务处理器执行数据处理,并在所述数据存储区记录所调取的任务已被提交给任务处理器正在执行;若否,则判定当前状态不符合执行条件,在所述数据存储区记录所调取的任务未被提交给任务处理器执行。在另一个实施方式中,所述依赖信息为所述任务所依赖的任务的标识;则根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理,具体包括:根据所调取的任务所依赖的任务的标识,从所述数据存储区中查询所依赖的任务是否已被所述任务处理器执行成功;若是,则判定当前状态符合执行条件,将所调取的任务提交给所述任务处理器执行数据处理,并在所述数据存储区记录所调取的任务已被提交给任务处理器正在执行;若否,则判定当前状态不符合执行条件,在所述数据存储区记录所调取的任务未被提交给任务处理器执行。在又一个实施方式中,所述依赖信息为所调取的任务所依赖的启动时刻和所依赖的任务的标识;则根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理,具体包括:判断所述任务所依赖的启动时刻是否早于当前时刻;当所述启动时刻早于当前时刻时,根据所述任务所依赖的任务的标识,从所述数据存储区中查询所依赖的任务是否已被所述任务处理器执行成功;当所依赖的任务执行成功时,判定当前状态符合执行条件,将所调取的任务提交给所述任务处理器执行数据处理,并在所述数据存储区记录所调取的任务已被提交给任务处理器正在执行;当所述启动时刻晚于当前时刻,或者所述启动时刻早于当前时刻但所依赖的任务未被执行成功时,则判定当前状态不符合执行条件,在所述数据存储区记录所调取的任务未被提交给任务处理器执行。进一步地,在将所调取的任务提交给任务处理器执行数据处理之后,还包括:接收所述任务处理器返回的任务执行结果;将所述任务执行结果保存于数据存储区;继续从所述任务表中调取下一个待执行的任务,直至所述任务表中记载的任务全被执行成功为止。进一步地,在接收所述任务处理器返回的任务执行结果之后,还包括:根据所述任务执行结果判断所述任务是否执行成功;若是,则在所述数据存储区中记录所述任务执行成功;若否,则在所述数据存储区中记录所述任务执行失败。进一步地,在所述数据存储区中记录所述任务执行失败之后,还包括:根据所述任务执行结果生成报警邮件,并将所述报警邮件发送至预设的接收端口;或者,对所述任务执行失败的次数加一,在加一后的次数大于报警门限值时,根据所述任务执行结果生成报警邮件,并将所述报警邮件发送至预设的接收端口。相应地,本专利技术实施例还提供一种任务调度器,包括:任务调取模块,用于从任务表中调取一个待执行的任务;其中,所述任务表记载有多个任务及每个任务的依赖关系项,且所述任务表中记载的任务可被多个任务调度器调取;依赖获取模块,用于根据所调取的任务的依赖关系项,获取所述任务的依赖信息;和,任务处理模块,用于根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理。进一步地,所述任务调取模块具体包括:任务选择单元,用于从所述任务表中按任务队列顺序选择一个任务本文档来自技高网
...
数据任务的处理方法及任务调度器

【技术保护点】
一种数据任务的处理方法,其特征在于,包括:从任务表中调取一个待执行的任务;其中,所述任务表记载有多个任务及每个任务的依赖关系项,且所述任务表中记载的任务可被多个任务调度器调取;根据所调取的任务的依赖关系项,获取所述任务的依赖信息;根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理。

【技术特征摘要】
1.一种数据任务的处理方法,其特征在于,包括:从任务表中调取一个待执行的任务;其中,所述任务表记载有多个任务及每个任务的依赖关系项,且所述任务表中记载的任务可被多个任务调度器调取;根据所调取的任务的依赖关系项,获取所述任务的依赖信息;根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理。2.如权利要求1所述的数据任务的处理方法,其特征在于,所述从任务表中调取一个待执行的任务,具体包括:从所述任务表中按任务队列顺序选择一个任务;根据所述任务的标识,从数据存储区中查询所述任务的调取信息及执行信息;其中,所述数据存储区记录有所述任务表中每个任务的调取信息及执行信息,所述调取信息用于记录所述任务是否已被任务调度器调取,所述执行信息用于记录所述任务是否已被提交给任务处理器正在执行以及是否执行成功;当所选择的任务未被调取,或者所选择的任务已被调取但未被提交给任务处理器执行,或者所选择的任务已被提交给任务处理器执行但执行失败时,调取所述任务,并在所述数据存储区记录所述任务已被调取;当所选择的任务已被调取且已被提交给任务处理器正在执行,或者所选择的任务已被调取且执行成功时,继续从所述任务表中按任务队列顺序选择下一个任务。3.如权利要求1所述的数据任务的处理方法,其特征在于,所述依赖关系项中包含依赖信息;则所述根据所调取的任务的依赖关系项,获取所述任务的依赖信息,具体为:从所调取的任务的依赖关系项中,直接获得所述任务的依赖信息;或者,所述依赖关系项中包含自动依赖判断标识;则所述根据所调取的任
\t务的依赖关系项,获取所述任务的依赖信息,具体为:根据所调取的任务的依赖关系项中的自动依赖判断标识,启动自动依赖判断;扫描所述任务的具体执行内容,从中获得所述任务的依赖信息。4.如权利要求1所述的数据任务的处理方法,其特征在于,所述依赖信息为所述任务所依赖的启动时刻;则所述根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理,具体包括:判断所述任务所依赖的启动时刻是否早于当前时刻;若是,则判定当前状态符合执行条件,将所调取的任务提交给所述任务处理器执行数据处理,并在所述数据存储区记录所调取的任务已被提交给任务处理器正在执行;若否,则判定当前状态不符合执行条件,在所述数据存储区记录所调取的任务未被提交给任务处理器执行。5.如权利要求1所述的数据任务的处理方法,其特征在于,所述依赖信息为所述任务所依赖的任务的标识;则所述根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理,具体包括:根据所调取的任务所依赖的任务的标识,从所述数据存储区中查询所依赖的任务是否已被所述任务处理器执行成功;若是,则判定当前状态符合执行条件,将所调取的任务提交给所述任务处理器执行数据处理,并在所述数据存储区记录所调取的任务已被提交给任务处理器正在执行;若否,则判定当前状态不符合执行条件,在所述数据存储区记录所调取的任务未被提交给任务处理器执行。6.如权利要求1所述的数据任务的处理方法,其特征在于,所述依赖信息为所调取的任务所依赖的启动时刻和所依赖的任务的标识;则所述根据所述依赖信息判定当前状态符合执行条件时,将所调取的任务提交给任务处理器执行数据处理,具体包括:判断所述任务所依赖的启动时刻是否早于当前时刻;当所述启动时刻早于当前时刻时,根据所述任务所依赖的任务的标识,从所述数据存储区中查询所依赖的任务是否已被所述任务处理器执行成功;当所依赖的任务执行成功时,判定当前状态符合执行条件,将所调取的任务提交给所述任务处理器执行数据处理,并在所述数据存储区记录所调取的任务已被提交给任务处理器正在执行;当所述启动时刻晚于当前时刻,或者所述启动时刻早于当前时刻但所依赖的任务未被执行成功时,则判定当前状态不符合执行条件,在所述数据存储区记录所调取的任务未被提交给任务处理器执行。7.如权利要求1至6任一项所述的数据任务的处理方法,其特征在于,在将所调取的任务提交给任务处理器执行数据处理之后,还包括:接收所述任务处理器返回的任务执行结果;将所述任务执行结果保存于数据存储区;继续从所述任务表中调取下一个待执行的任务,直至所述任务表中记载的任务全被执行成功为止。8.如权利要求7所述的数据任务的处理方法,其特征在于,在接收所述任务处理器返回的任务执行结果之后,还包括:根据所述任务执行结果判断所述任务是否执行成功;若是,则在所述数据存储区中记录所述任务执行成功;若否,则在所述数据存储区中记录所述任务执行失败。9.如权利要求8所述的数据任务的处理方法,其特征在于,在所述数据存储区中记录所述任务执行失败之后,还包括:根据所述任务执行结果生成报警邮件,并将所述报警邮件发送至预设的接收端口;或者,对所述任务执行失败的次数加一,在加一后的次数大于报警门限值时,根据所述任务执行结果生成报警邮件,并将所述报警邮件发送至预设的接收端口。10.一种任务调度器,其特征在于,包括:任务调取模块,用于从任务表中调取一个待执行的任务;其中,所述任务表记载有多个任务及每个任务的依赖关系项,且所述任务表中记载的任务可被多个任务调度器调取;依赖获取模块,...

【专利技术属性】
技术研发人员:张潮贵
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1