掌桥专利:专业的专利平台
掌桥专利
首页

任务调度方法及装置、系统、存储介质及电子设备

文献发布时间:2024-04-18 19:58:26


任务调度方法及装置、系统、存储介质及电子设备

技术领域

本公开的实施方式涉及计算机技术领域,更具体地,本公开的实施方式涉及任务调度方法、任务调度装置、任务调度系统、计算机可读存储介质及电子设备。

背景技术

本部分旨在为权利要求中陈述的本公开的实施方式提供背景或上下文,此处的描述不因为包括在本部分中就承认是现有技术。

大数据,或称巨量数据,指的是所涉及的资料量规模巨大到无法通过传统的数据处理工具,在合理时间内进行撷取、管理以及处理。

面对复杂的数据处理场景时,需要更加细粒度的任务拆分,往往一项大数据技术并不能独立完成,而是多种大数据技术,多个子任务来共同完成。在处理大数据时,通过大数据工作流合理地按照特定的流程和步骤组织、管理数据处理任务变得非常重要。

现阶段,对大数据工作流进行任务调度时,依赖手动配置,人工介入较多,影响工作流的任务调度效率,且存在资源浪费的问题。

发明内容

在本上下文中,本公开的实施方式期望提供一种任务调度方法、任务调度装置、任务调度系统、计算机可读存储介质及电子设备。

根据本公开实施方式的第一方面,提供一种任务调度方法,包括:获取工作流在预定历史周期对应的任务运行信息和所述工作流中的节点在所述预定历史周期对应的节点运行信息,所述工作流中包括多个所述节点;根据所述节点运行信息调整所述节点对应的资源配置信息;以所述工作流的上游工作流的最晚结束时间为时间起点,结合所述节点运行信息和所述任务运行信息确定所述工作流的开始调度时间,以基于所述开始调度时间和各所述节点对应的资源配置信息运行所述工作流。

在一示例性实施方式中,所述根据所述节点运行信息调整所述节点对应的资源配置信息,包括:根据所述节点运行信息中所述节点每次进行调度时的资源使用信息,确定调度所述节点所需的目标资源使用信息;利用所述目标资源使用信息更新所述节点的资源配置信息。

在一示例性实施方式中,所述根据所述节点运行信息中所述节点每次进行调度时的资源使用信息,确定调度所述节点所需的目标资源使用信息,包括:从所述节点每次进行调度时的资源使用信息中确定最大资源消耗量;对所述最大资源消耗量进行资源扩增处理;基于底层资源管理器的容器配置信息和单次资源增量信息,对扩增资源后的最大资源消耗量进行规整,得到目标资源消耗量;将所述目标资源消耗量确定为所述目标资源使用信息。

在一示例性实施方式中,所述以所述工作流的上游工作流的最晚结束时间为时间起点,结合所述节点运行信息和所述任务运行信息确定所述工作流的开始调度时间,包括:将预定的任务调度时间按照预定时间间隔划分为多个时间区间;根据所述节点运行信息,确定每个所述时间区间对应的资源消耗量和资源剩余量;基于所述任务运行信息,以所述上游工作量的最晚结束时间为时间起点,利用各所述时间区间对应的资源消耗量和所述资源剩余量确定允许执行所述工作流的目标时间区间;根据所述目标时间区间确定所述开始调度时间。

在一示例性实施方式中,所述节点运行信息包括节点运行时间和节点资源消耗量;根据所述节点运行信息,确定每个所述时间区间对应的资源消耗量,包括:针对每个所述时间区间,根据所述节点运行时间确定属于所述时间区间的节点;根据属于所述时间区间的节点所对应的节点资源消耗量,确定所述时间区间对应的资源消耗量。

在一示例性实施方式中,所述节点运行时间为所述节点在所述预定历史周期内的各次运行时间的中位数;所述节点资源消耗量为所述节点在所述预定历史周期内的各次资源消耗量中的中位数。

在一示例性实施方式中,根据所述节点运行信息,确定每个所述时间区间对应的剩余资源量,包括:获取所述时间区间对应的资源总量;根据所述资源总量和所述时间区间对应的资源消耗量,确定所述时间区间对应的剩余资源量。

在一示例性实施方式中,所述任务运行信息包括所述工作流的任务开始时间和任务运行时间;所述基于所述任务运行信息,以所述上游工作量的最晚结束时间为时间起点,利用各所述时间区间对应的资源消耗量和所述资源剩余量确定允许执行所述工作流的目标时间区间,包括:在所述上游工作量的最晚结束时间和所述任务开始时间之间,利用所述任务运行时间为时间窗口并以所述预定时间间隔为滑动步长进行移动;其中,所述时间窗口每次移动至候选时间区间时,判断所述候选时间区间对应的资源剩余量是否大于所述候选时间区间对应的资源消耗量;若是,则将所述候选时间区间确定为所述目标时间区间;否则,继续利用所述任务运行时间为时间窗口并以所述预定时间间隔为滑动步长进行移动。

在一示例性实施方式中,在所述继续利用所述任务运行时间为时间窗口并以所述预定时间间隔为滑动步长进行移动之前,所述方法还包括:确定所述时间窗口继续移动后所对应的候选时间区间的时间起点早于所述任务开始时间;其中,若所述时间窗口继续移动后所对应的候选时间区间的时间起点晚于所述任务开始时间,则停止对所述工作流的开始调度时间的调整过程。

在一示例性实施方式中,所述任务运行信息还包括所述工作流的任务资源消耗量;在确定所述目标时间区间后,所述方法还包括:在所述目标时间区间对应的总资源量中删除所述任务资源消耗量;将所述任务资源消耗量补充至所述工作流的任务开始时间至任务结束时间之间对应的总资源量中。

在一示例性实施方式中,所述任务开始时间为所述工作流在所述预定历史周期内的各次任务开始时间的中位数;确定所述任务运行时间的过程,包括:获取所述工作流在所述预定历史周期内的各次任务结束时间的中位数,作为所述工作流的任务结束时间;根据所述工作流的所述任务结束时间和所述任务开始时间,确定所述任务运行时间。

在一示例性实施方式中,在所述以所述工作流的上游工作流的最晚结束时间为时间起点,结合所述节点运行信息和所述任务运行信息确定所述工作流的开始调度时间之前,所述方法还包括:基于所述工作流的上级依赖关系,确定所述工作流的上游工作流;根据所述上游工作流的任务结束时间,确定所述上游工作流的最晚结束时间。

在一示例性实施方式中,所述方法还包括:获取工作流节点配置信息;对所述工作流节点配置信息进行解析,确定各所述节点依赖的数据库表;将各所述节点依赖的数据库表对应的工作流作为所述工作流的上游工作流,以得到所述上级依赖关系。

在一示例性实施方式中,所述方法还包括:将所述上级依赖关系配置至所述工作流以及所述工作流对应的调度引擎。

在一示例性实施方式中,所述方法还包括:将各所述节点对应的资源配置信息和所述工作流的开始调度时间配置至所述工作流对应的调度引擎。

在一示例性实施方式中,所述方法还包括:响应所述工作流运行失败,根据所述工作流的节点日志确定异常节点及失败原因类型;基于所述失败原因类型确定异常处理策略;基于所述异常处理策略对所述异常节点的配置信息进行调整并重新执行所述工作流。

根据本公开实施方式的第二方面,提供一种任务调度装置,包括:信息获取模块,被配置为获取工作流在预定历史周期对应的任务运行信息和所述工作流中的节点在所述预定历史周期对应的节点运行信息,所述工作流中包括多个所述节点;资源配置模块,被配置为根据所述节点运行信息调整所述节点对应的资源配置信息;时间调度模块,被配置为以所述工作流的上游工作流的最晚结束时间为时间起点,结合所述节点运行信息和所述任务运行信息确定所述工作流的开始调度时间,以基于所述开始调度时间和各所述节点对应的资源配置信息运行所述工作流。

在一示例性实施方式中,所述资源配置模块被配置为执行:根据所述节点运行信息中所述节点每次进行调度时的资源使用信息,确定调度所述节点所需的目标资源使用信息;利用所述目标资源使用信息更新所述节点的资源配置信息。

在一示例性实施方式中,所述资源配置模块被配置为执行:从所述节点每次进行调度时的资源使用信息中确定最大资源消耗量;对所述最大资源消耗量进行资源扩增处理;基于底层资源管理器的容器配置信息和单次资源增量信息,对扩增资源后的最大资源消耗量进行规整,得到目标资源消耗量;将所述目标资源消耗量确定为所述目标资源使用信息。

在一示例性实施方式中,所述时间调度模块被配置为执行:将预定的任务调度时间按照预定时间间隔划分为多个时间区间;根据所述节点运行信息,确定每个所述时间区间对应的资源消耗量和资源剩余量;基于所述任务运行信息,以所述上游工作量的最晚结束时间为时间起点,利用各所述时间区间对应的资源消耗量和所述资源剩余量确定允许执行所述工作流的目标时间区间;根据所述目标时间区间确定所述开始调度时间。

在一示例性实施方式中,所述节点运行信息包括节点运行时间和节点资源消耗量;所述时间调度模块被配置为执行:针对每个所述时间区间,根据所述节点运行时间确定属于所述时间区间的节点;根据属于所述时间区间的节点所对应的节点资源消耗量,确定所述时间区间对应的资源消耗量。

在一示例性实施方式中,所述节点运行时间为所述节点在所述预定历史周期内的各次运行时间的中位数;所述节点资源消耗量为所述节点在所述预定历史周期内的各次资源消耗量中的中位数。

在一示例性实施方式中,所述时间调度模块被配置为执行:获取所述时间区间对应的资源总量;根据所述资源总量和所述时间区间对应的资源消耗量,确定所述时间区间对应的剩余资源量。

在一示例性实施方式中,所述任务运行信息包括所述工作流的任务开始时间和任务运行时间;所述时间调度模块被配置为执行:在所述上游工作量的最晚结束时间和所述任务开始时间之间,利用所述任务运行时间为时间窗口并以所述预定时间间隔为滑动步长进行移动;其中,所述时间窗口每次移动至候选时间区间时,判断所述候选时间区间对应的资源剩余量是否大于所述候选时间区间对应的资源消耗量;若是,则将所述候选时间区间确定为所述目标时间区间;否则,继续利用所述任务运行时间为时间窗口并以所述预定时间间隔为滑动步长进行移动。

在一示例性实施方式中,所述时间调度模块还被配置为执行:在所述继续利用所述任务运行时间为时间窗口并以所述预定时间间隔为滑动步长进行移动之前,确定所述时间窗口继续移动后所对应的候选时间区间的时间起点早于所述任务开始时间;其中,若所述时间窗口继续移动后所对应的候选时间区间的时间起点晚于所述任务开始时间,则停止对所述工作流的开始调度时间的调整过程。

在一示例性实施方式中,所述任务运行信息还包括所述工作流的任务资源消耗量;所述时间调度模块还被配置为执行:在确定所述目标时间区间后,在所述目标时间区间对应的总资源量中删除所述任务资源消耗量;以及将所述任务资源消耗量补充至所述工作流的任务开始时间至任务结束时间之间对应的总资源量中。

在一示例性实施方式中,所述任务开始时间为所述工作流在所述预定历史周期内的各次任务开始时间的中位数;所述信息获取模块还被配置为执行:获取所述工作流在所述预定历史周期内的各次任务结束时间的中位数,作为所述工作流的任务结束时间;根据所述工作流的所述任务结束时间和所述任务开始时间,确定所述任务运行时间。

在一示例性实施方式中,所述时间调度模块还被配置为执行:基于所述工作流的上级依赖关系,确定所述工作流的上游工作流;根据所述上游工作流的任务结束时间,确定所述上游工作流的最晚结束时间。

在一示例性实施方式中,所述装置还包括:工作流依赖配置模块,被配置执行:为获取工作流节点配置信息;对所述工作流节点配置信息进行解析,确定各所述节点依赖的数据库表;将各所述节点依赖的数据库表对应的工作流作为所述工作流的上游工作流,以得到所述上级依赖关系。

在一示例性实施方式中,所述工作流依赖配置模块还被配置为执行:将所述上级依赖关系配置至所述工作流以及所述工作流对应的调度引擎。

在一示例性实施方式中,所述资源配置模块还被配置为将各所述节点对应的资源配置信息,所述时间调度模块还被配置为执行将工作流的开始调度时间配置至所述工作流对应的调度引擎。

在一示例性实施方式中,所述装置还包括自动运维模块,被配置为执行:响应所述工作流运行失败,根据所述工作流的节点日志确定异常节点及失败原因类型;基于所述失败原因类型确定异常处理策略;基于所述异常处理策略对所述异常节点的配置信息进行调整并重新执行所述工作流。

根据本公开实施方式的第三方面,提供一种任务调度系统,包括:任务调度装置,被配置为执行以上示例性实施例中的任一项的方法;

工作流引擎,被配置基于所述任务调度装置得到的工作流的开始调度时间和所述工作流中各节点对应的资源配置信息运行所述工作流。

根据本公开实施方式的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种方法。

根据本公开实施方式的第五方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一种方法。

根据本公开实施方式的任务调度方法,首先获取工作流在预定历史周期对应的任务运行信息和工作流中的节点在预定历史周期对应的节点运行信息,一方面,根据工作流中节点的节点运行信息对节点的资源配置信息进行调整,可基于历史的真实节点运行情况对节点所需使用的资源配置进行调整,使节点的资源配置符合实际需求,避免资源浪费;另一方面,以工作流的上游工作流的最晚结束时间为时间起点,结合节点运行信息和任务运行信息确定工作流的开始调度时间,使工作流开始运行的时间不依赖人工配置,提升工作流时间调度的灵活性和合理性,工作流能够及时被调度运行,提高工作流的任务调度效率;再一方面,整个任务调度过程无需过多的人工介入,避免出错,降低成本。

附图说明

通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:

图1示出了根据本公开实施方式的一种工作流的示意图;

图2示出了根据本公开实施方式的一种任务调度方法的流程图;

图3示出了根据本公开实施方式的一种自动调整节点对应的资源配置信息的实现方式的流程图;

图4示出了根据本公开实施方式的一种确定节点的目标资源使用信息的流程图;

图5示出了根据本公开实施方式的一种确定工作流的开始调度时间的实现方式的流程图;

图6示出了根据本公开实施方式的一种确定节点归属时间区间的示意图;

图7示出了根据本公开实施方式的一种确定允许执行工作流的目标时间区间的示意图;

图8示出了根据本公开实施方式的一种确定工作流的上级依赖关系的实现方式的流程图;

图9示出了根据本公开实施方式的一种任务调度装置的示意图;

图10示出了根据本公开实施方式的一种任务调度系统的示意图;

图11示出了根据本公开实施方式的电子设备的示意图。

具体实施方式

下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

根据本公开的实施方式,提供一种任务调度方法、任务调度装置、任务调度系统、计算机可读存储介质及电子设备。

在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。下面参考本公开的若干代表性实施方式,详细阐述本公开的原理和精神。

发明概述

工作流是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。大数据工作流任务调度是指在多个工作流之间,对各个工作流的执行时间和顺序进行安排和控制的过程,也包括各工作流内的节点的资源配置。如图1示出了本公开示例性实施方式中的一种工作流的示意图,如图1,该工作流包括处理节点一、判断节点、处理节点二和处理节点三,各个节点通过内外部驱动触发引起节点的推进,形成流式的状态达到终点。其中,工作流引擎则是驱动工作流的一套实现工具。

相关技术中,工作流中的各节点具体使用的资源依赖人工经验配置,为节点将配置的资源存在浪费的问题,并且工作流的开始运行时间也依赖人工配置,存在上游任务已经调度结束,但是下游工作流仍未调度,中间产生较大的空闲时间,导致任务调度效率低的问题。因此,亟需一种可以自动化调整工作流的开始调度时间以及调整工作流中各节点的资源配置的自动任务调度方法。

在本公开的实施方式中,基于工作流在过去一段时间内任务运行信息和工作流中的节点在该时间内的节点运行信息,用于指导当前工作流的开始调度时间进行调整,并对当前工作流中各节点的资源配置进行调整,使工作流中各节点获得准确的资源配置,并使整个工作流获得准确的开始调度时间,避免在工作流调度之前产生空闲时间,提升任务调度的准确性的同时,避免了资源浪费。

在介绍了本公开的实施方式的基本原理之后,下面具体介绍本公开的实施方式的各种非限制性实施方式。

示例性方法

本公开实施方式所提供的任务调度方法可以由服务器来执行,相应的,任务调度装置可以设置于服务器中,服务器可以为提供本公开实施例中任务调度相关服务的后台系统,可以包括便携式计算机、台式计算机、智能手机等具有计算功能的一台电子设备或多台电子设备形成的集群。

再者,本公开实施方式所提供的任务调度方法也可以由电子设备执行,相应的,任务调度装置也可以设置于电子设备中。例如可以为智能手机、电脑、平板电脑、车载设备、可穿戴设备、监控设备等智能设备,电子设备还可以被称为终端设备、移动终端、终端、移动设备等,本公开对电子设备的类型不做限制。

在上述实施方式中,在调整了工作流中节点的资源配置信息和确定了工作流的开始调度时间后,可以将节点的资源配置信息和工作流的开始调度时间配置至相应的底层的工作流引擎,如azkaban、dolphinschedule等,本公开实施方式对工作流引擎的具体类型不做限制。

下面参考图2来描述本公开的示例性实施方式的任务调度方法。如图2,本公开示例性实施方式的任务调度方法可以包括步骤210和步骤S230:

步骤S210,获取工作流在预定历史周期对应的任务运行信息和工作流中的节点在预定历史周期对应的节点运行信息,工作流中包括多个节点。

在本公开的示例性实施方式中,预定历史周期可根据实际调度需求设置,例如,以当日为起点过去的15天为一个周期,即可以获取过去15天对应的工作流的任务运行信息以及工作流中各节点对应的节点运行信息。其中,预定历史周期对应的任务运行信息为根据工作流在预定历史周期内的任务运行信息确定的,预定历史周期对应的节点运行信息是根据节点在预定历史周期内的节点运行信息确定的。

相应的,次日再次进行任务调度时,以次日为起点过去的15天为一个周期,获取过去15天相关信息(工作流的任务运行信息以及工作流中各节点的节点运行信息)。这样能以时间滚动的方式,每次获取预定历史周期内的相关信息指导本次的任务调度过程。

其中,时间滚动的周期可以是如上述示例的1天,或者1周,10天等,例如当日获取过去15天的相关信息用于指导当前的任务调度,1周后再获取相应的过去15天的相关信息用于指导当前的任务调度,时间滚动的周期亦可根据调度需求设置。

工作流的任务运行信息包括工作流的开始运行时间、结束运行时间和任务运行时间等,以及工作流的任务资源消耗量。任务运行时间是指执行一次该工作流所需的总时长,任务资源消耗量是指执行一次该工作流所使用的总资源量。

在本公开示例性实施方式中,在预定历史周期内该工作流可能运行多次,可获取每一次运行该工作流的上述信息,并根据多次运行该工作流的上述信息确定用于最终的任务运行信息。例如,获取多次运行该工作流的开始运行时间的中位数作为最终的开始运行时间,当然,也可以采用其它方式,从多次运行该工作流的开始运行时间中确定最终的开始运行时间。

节点的节点运行信息包括节点每次进行调度时的资源使用信息(资源消耗量)、节点运行时间、节点开始运行时间、节点结束运行时间等。节点运行时间是指执行一次该节点所需的总时长。

在本公开示例性实施方式中,在预定历史周期内该工作流可能运行多次,相应的,每次运行该工作流时都获取各节点的上述信息,并根据多次运行该工作流时获取的各节点的上述信息确定用于最终的节点运行信息。例如,获取预定历史周期内多次运行该工作流时某节点的节点开始运行时间的中位数,作为该节点最终的节点开始运行时间,对此不再一一列举。

需要说明的是,通常同时存在多个具有上下游关系的工作流,可以都获取各工作流的在预定历史周期对应的任务运行信息和工作流中的节点在预定历史周期对应的节点运行信息,本公开实施方式以一个工作流为例进行的说明。

步骤S220:根据节点运行信息调整节点对应的资源配置信息。

在本公开的示例性实施方式中,资源配置信息是指用于指示节点的资源使用情况的信息,如内存大小、CPU核数等。资源配置信息在初始化状态下可以是由用户根据经验配置,而后的资源配置信息则根据本公开实施方式的资源配置方式自动更新。

本公开实施方式的预定历史周期对应的节点运行信息能反映节点在过去一段时间的真实资源使用情况,基于节点运行信息调整节点的资源配置信息,使节点资源配置符合节点运行的实际,使配置至节点的资源量更合理,避免资源浪费。

步骤S230:以工作流的上游工作流的最晚结束时间为时间起点,结合节点运行信息和任务运行信息确定工作流的开始调度时间,以基于开始调度时间和各节点对应的资源配置信息运行工作流。

在本公开的示例性实施方式中,为有效调度各工作流运行,较佳的调度方式是上游工作流调度结束,即进行下一工作流的调度。由于存在依赖关系的工作流之间,仅当工作流依赖的所有上游工作流运行结束,才进行该工作流的运行,基于此,本公开实施方式以工作流的上游工作流的最晚结束时间为时间起点,确定可以调度该工作流的开始调度时间。

其中,上游工作流的最晚结束时间是指工作流的全部的上游工作流中,结束调度的最晚时间。本公开实施方式结合节点运行信息和任务运行信息确定工作流的开始调度时间,以期望寻找在上游工作流的最晚结束时间后,最早可以运行该工作流的开始调度时间。

最后,通过对工作流中各节点的资源配置更新以及确定工作流的开始调度时间运行工作流。

通过本公开实施方式的任务调度方法,一方面,根据工作流中节点的节点运行信息对节点的资源配置信息进行调整,可基于历史的真实节点运行情况对节点具体使用的资源配置进行调整,使节点的资源配置符合实际需求,避免资源浪费;另一方面,以工作流的上游工作流的最晚结束时间为时间起点,结合节点运行信息和任务运行信息确定工作流的开始调度时间,使工作流开始运行的时间不依赖人工配置,提升工作流时间调度的灵活性和合理性,工作流能够及时被调度运行,提高工作流的任务调度效率;再一方面,整个任务调度过程无需过多的人工介入,避免出错,降低成本。

在一示例性实施方式中,提供一种自动调整节点对应的资源配置信息的实现方式。如图3所示,根据节点运行信息调整节点对应的资源配置信息可以包括步骤S310和步骤S320:

步骤S310:根据节点运行信息中节点每次进行调度时的资源使用信息,确定调度节点所需的目标资源使用信息;

步骤S320:利用目标资源使用信息更新节点的资源配置信息。

在本公开示例性实施方式中,节点运行信息中包括每次调度节点时的资源使用信息,基于多次调度节点的资源使用信息确定调度节点所需的目标资源使用信息。具体而言,图4示出了确定节点的目标资源使用信息的流程图,以下结合图4,以获取一个节点的目标资源使用信息为例进行说明,该过程可以包括:

步骤S410,从节点每次进行调度时的资源使用信息中确定最大资源消耗量。可以根据节点每次进行调度时的资源使用信息确定资源消耗集S(S

步骤S420,对最大资源消耗量进行资源扩增处理。

资源扩增处理是指按照预定的策略将最大资源消耗量S

示例性,可以将最大资源消耗量S

步骤S430:基于底层资源管理器的容器配置信息和单次资源增量信息,对扩增资源后的最大资源消耗量进行规整,得到目标资源消耗量。

本公开实施方式考虑到底层的资源管理器的容器配置信息和单次资源增量信息的要求,对扩增资源后的最大资源消耗量进行规整。容器配置信息包括资源管理器的最小的容器配置限制C

具体而言,可以将扩增资源后的最大资源消耗量S

基于此,通过对扩增资源后的最大资源消耗量进行规整,一方面,可以使目标资源消耗量符合底层资源管理器的容器配置信息和单次资源增量信息限制。另一方面,可以通过规整,避免在不同的任务调度阶段,忽略较小的资源变动,避免频繁切换节点的资源配置,保证任务调度过程以及系统运行的稳定性。

步骤S440:将目标资源消耗量确定为目标资源使用信息。

在确定目标资源消耗量后,将目标资源消耗量确定为目标资源使用信息。进而,本公开实施方式可以通过节点历史的真实资源消耗指导节点的资源配置,提高资源配置的准确性,避免资源浪费。

在一示例性实施方式中,提供一种确定工作流的开始调度时间的实现方式。如图5所示,以工作流的上游工作流的最晚结束时间为时间起点,结合节点运行信息和任务运行信息确定工作流的开始调度时间包括步骤S510至步骤S540:

在步骤S510中,将预定的任务调度时间按照预定时间间隔划分为多个时间区间。

预定的任务调度时间是指需要在指定时间完成对所有的待调度工作流的调度工作。例如,在上午8:00至10:00完成对所有待调度工作流的调度工作,预定的任务调度时间可根据实际调度需求设置。预定时间间隔例如为2min,4min等,亦可根据实际需求设置。

基于预定时间间隔将预定的任务调度时间划分为多个时间区间,如每2min为一个时间区间。

在步骤S520中,根据节点运行信息,确定每个时间区间对应的资源消耗量和资源剩余量。

节点运行信息可以包括节点运行时间和节点资源消耗量。

在一示例性实施方式中,根据节点运行信息确定每个时间区间对应的资源消耗量可以包括:

首先,针对每个时间区间,根据节点运行时间确定属于时间区间的节点,然后根据属于时间区间的节点所对应的节点资源消耗量,确定时间区间对应的资源消耗量。也就是说,根据每个节点的节点运行时间,将各节点划分至对应的时间区间,每个时间区间对应的资源消耗量就是属于该时间区间的所有节点的节点资源消耗量之和。

如图6所示,属于时间区间m的所有节点的资源消耗量确定时间区间m对应的CPU资源为t

相应的,属于时间区间m的所有节点的资源消耗量确定时间区间m对应的内存资源为t

在一示例性实施方式中,节点运行时间为节点在预定历史周期内的各次运行时间的中位数;资源消耗量为节点在预定历史周期内的各次资源消耗量中的中位数。

中位数是指按顺序排列的一组数据中居于中间位置的数,相比于采用均值的方式,将预定历史周期内的各次运行时间的中位数作为节点运行时间,可避免将个别运行时间的误差引入至节点运行时间,提高节点运行时间的准确性。

而将预定历史周期内的各次资源消耗量中的中位数作为节点的资源消耗量,也可以避免将个别资源消耗量的误差引入至最终的节点的资源消耗量,提高节点消耗量的准确性。

在一示例性实施方式中,根据节点运行信息确定每个时间区间对应的剩余资源量可以包括:

获取时间区间对应的资源总量;

根据资源总量和时间区间对应的资源消耗量,确定时间区间对应的剩余资源量。

其中,系统通常记录有各时间段的资源总量,进而,可以直接读取时间区间对应的资源总量。并且,根据资源总量与该时间区间对应的资源消耗量确定时间区间对应的剩余资源量。时间区间对应的资源消耗量可参见上述示例性实施方式,在此不再赘述。

获取各时间区间对应的剩余资源量如剩余的CPU资源为res_core=[c

本公开实施方式利用属于各时间区间的节点的资源消耗量表征相应时间区间对应的资源消耗量,确定的各时间区间的资源消耗量和剩余资源量精确到各时间区间内的节点,提高各时间区间的资源消耗量和剩余资源量的准确性高。

在步骤S530中,基于任务运行信息,以上游工作量的最晚结束时间为时间起点,利用各时间区间对应的资源消耗量和资源剩余量确定允许执行工作流的目标时间区间。

工作流的任务运行信息包括工作流的任务开始时间和任务运行时间。如图7示出了根据本公开示例性实施方式的一种确定允许执行工作流的目标时间区间的示意图,以下结合图7对该过程进行说明。

在上游工作量的最晚结束时间和任务开始时间之间,利用任务运行时间为时间窗口并以预定时间间隔为滑动步长进行移动。

其中,时间窗口每次移动至候选时间区间时,判断候选时间区间对应的资源剩余量是否大于候选时间区间对应的资源消耗量;若是,则将候选时间区间确定为目标时间区间;否则,继续利用任务运行时间为时间窗口并以预定时间间隔为滑动步长进行移动。

如图7,初始状态下,以上游工作量的最晚结束时间T

在一示例性实施例中,在继续利用任务运行时间为时间窗口并以预定时间间隔为滑动步长进行移动之前,还可以确定时间窗口继续移动后所对应的候选时间区间的时间起点早于任务开始时间;其中,若时间窗口继续移动后所对应的候选时间区间的时间起点晚于任务开始时间,则停止对工作流的开始调度时间的调整过程。

也就是说,由于后续需将候选时间区间的时间起点确定为开始调度时间,因此需保证候选时间区间的时间起点早于任务开始时间,才具有调整的必要,否则,若候选时间区间的时间起点已晚于任务开始时间,则直接跳出本工作流的调度,继续按照该工作流原始配置的开始调度时间进行调度即可。

其中,判断候选时间区间对应的资源剩余量是否大于候选时间区间对应的资源消耗量时,可基于已获取的每个时间区间对应的资源消耗量和资源剩余量来确定。例如,通过时间对应关系,查询各时间区间的CPU资源[t

在又一示例性实施方式中,任务运行信息还包括工作流的任务资源消耗量,在确定目标时间区间后,还可以进行如下操作:

在目标时间区间对应的总资源量中删除任务资源消耗量;

将任务资源消耗量补充至工作流的任务开始时间至任务结束时间之间对应的总资源量中。

也就是说,通过将目标时间区间对应的总资源量中减去当前工作流的任务资源消耗量,并将该当前工作流的原始运行时间对应的总资源量中补偿该当前工作流的任务资源消耗量,进而,为下一个需要进行任务调度的工作流的调度提供准确的资源信息,提升任务调度的准确性和有效性。

在步骤S540中,根据目标时间区间确定开始调度时间。

在确定目标时间区间后,该目标时间区间就是可以执行工作流的最早时间区间,可以将目标时间区间的开始时间确定为工作流的开始调度时间。基于此,可以在工作流的上游工作流全部运行完成后,以最早的时间开始调度该工作流。

在一示例性实施方式中,任务开始时间为工作流在预定历史周期内的各次任务开始时间的中位数,确定任务运行时间的过程包括:

获取工作流在预定历史周期内的各次任务结束时间的中位数,作为工作流的任务结束时间;根据工作流的任务结束时间和任务开始时间,确定任务运行时间。

将预定历史周期内的各次任务开始时间的中位数作为任务开始时间,可避免将个别任务开始时间的误差引入至任务开始时间,提高任务开始时间的准确性。

而将预定历史周期内的各次任务结束时间的中位数作为任务结束时间,也可以避免将个别任务结束时间的误差引入至最终的任务结束时间,提高任务结束时间的准确性。相应的,提高了任务运行时间的准确性。

如下以具体示例对确定开始调度时间进行说明。

其中,具有上下游依赖关系的多个工作流组成的集合为F={t

首先,获取工作流在预定历史周期对应任务开始时间T

其次,获取工作流中各节点在预定历史周期对应的节点开始运行时间n

接着,将预定的任务调度时间按照预定时间间隔T

相应的,获取各时间区间对应的资源总量,并根据资源总量和各时间区间对应的资源消耗量,确定各时间区间对应的剩余资源量,如剩余的CPU资源为res_core=[c

进一步的,根据上游工作流的任务结束时间确定上游工作流的最晚结束时间,即将工作流的上游工作流的最晚结束时间为时间起点,确定为该工作流的最早开始时间T

T

其中,T

最后,开始执行调度过程,从最早开始时间T

步骤一:初始化开始调度时间t

步骤二:将候选时间区间[t

步骤三:以预定时间间隔T

步骤四:更新任务开始时间T

步骤五:在目标时间区间对应的总资源量中删除工作流的任务资源消耗量,并将任务资源消耗量补充至工作流的任务开始时间T

通过上述过程,能以工作流的上游工作流的最晚结束时间为时间起点,找到能够执行工作流的时间最早的目标时间区间,进而能够在工作流的上游工作流全部结束运行后,以最早的时间开始运行该工作流,提高工作流调度的效率。

在一示例性实施方式中,上述确定开始调度时间的过程依赖于工作流的上游工作流,鉴于此,本公开实施方式还提供一种确定工作流的上级依赖关系的实现方式。如图8所示,该过程包括步骤S810至步骤S830:

步骤S810:获取工作流节点配置信息。

本公开实施方式可以接收用户提交的工作流节点配置信息,该工作流节点配置信息包括工作流及工作流中各节点的配置信息。

步骤S820:对工作流节点配置信息进行解析,确定各节点依赖的数据库表。

各节点依赖的数据库表可以为hive表,hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。

本公开实施方式通过解析工作流节点配置信息,可以得到每个节点依赖的至少一个数据库表。

步骤S830:将各节点依赖的数据库表对应的工作流作为工作流的上游工作流,以得到上级依赖关系。

对于每个节点,该节点依赖的多个数据库表可以对应不同的工作流,因此,该节点的多个数据库表对应的工作流即为该节点的全部上游工作流。

在一示例性实施方式中,可以将上级依赖关系配置至工作流以及工作流对应的调度引擎。通过本公开实施方式的确定工作流的上级依赖关系的实现方式,可以实现工作流依赖的自动配置,避免人工配置出错。

进而,基于工作流的上级依赖关系,可以确定工作流的上游工作流,以根据上游工作流的任务结束时间,确定上游工作流的最晚结束时间。

另外,在确定节点的资源配置信息和工作流的开始调度时间后,还可以将各节点对应的资源配置信息和工作流的开始调度时间配置至工作流对应的调度引擎,以实现自动化调整资源使用配置和自动化调优调度时间。

在一示例性实施方式中,还提供一种自动化运维工作流的实现方式,该过程包括:

响应工作流运行失败,根据工作流的节点日志确定异常节点及失败原因类型;然后基于失败原因类型确定异常处理策略,以基于异常处理策略对异常节点的配置信息进行调整并重新执行工作流。

示例性的,若节点因为内存不足被停止,则自动调整内存参数,而后进行重跑执行;又如,因为hive分区不足运行失败,则自动调整配置参数,并进行重跑执行。

其中,可以预先划分异常节点及失败原因类型,以及对应的异常处理策略,进而可以在工作流节点异常时进行相应的自动化运维,避免人工干预,也可以避免整个数据链路被卡死,运维效率高,成本低。

此外,在预定的任务调度时间通常包括很多需要被调度的工作流,本公开实施方式还可以设置各工作流的优先级,并在预定的任务调度时间内按照优先级对各工作流执行任务调度,避免存在高优先级任务和低优先级任务同时调度,资源争抢的问题。

根据本公开实施方式的任务调度方法,首先获取工作流在预定历史周期内的任务运行信息和工作流中的节点在预定历史周期内的节点运行信息,一方面,根据工作流中节点的节点运行信息对节点的资源配置信息进行调整,可基于历史的真实节点运行情况对节点具体使用的资源配置进行调整,使节点的资源配置符合实际需求,即申请的资源与实际使用量匹配,避免资源浪费;另一方面,以工作流的上游工作流的最晚结束时间为时间起点,结合节点运行信息和任务运行信息确定工作流的开始调度时间,使工作流开始运行的时间不依赖人工配置,提升工作流时间调度的灵活性和合理性,工作流能够及时被调度运行,提高工作流的任务调度效率;再一方面,整个任务调度过程无需过多的人工介入,避免出错,降低成本。

示例性装置

在介绍了本公开示例性实施方式的任务调度方法之后,接下来,参考图9对本公开示例性实施方式的任务调度装置进行说明。需要说明的是,本公开实施方式的任务调度装置的各个功能模块的其他具体细节在上述任务调度方法的实施方式中已经详细说明,在此不再赘述。

图9示出了本公开示例性实施方式的任务调度装置900,包括:

信息获取模块910,被配置为获取工作流在预定历史周期对应的任务运行信息和工作流中的节点在预定历史周期对应的节点运行信息,工作流中包括多个所述节点;资源配置模块920,被配置为根据节点运行信息调整节点对应的资源配置信息;时间调度模块930,被配置为以工作流的上游工作流的最晚结束时间为时间起点,结合节点运行信息和任务运行信息确定工作流的开始调度时间,以基于开始调度时间和各节点对应的资源配置信息运行工作流。

在一种可选的实施方式中,所述资源配置模块920被配置为执行:根据所述节点运行信息中所述节点每次进行调度时的资源使用信息,确定调度所述节点所需的目标资源使用信息;利用所述目标资源使用信息更新所述节点的资源配置信息。

在一种可选的实施方式中,所述资源配置模块920被配置为执行:从所述节点每次进行调度时的资源使用信息中确定最大资源消耗量;对所述最大资源消耗量进行资源扩增处理;基于底层资源管理器的容器配置信息和单次资源增量信息,对扩增资源后的最大资源消耗量进行规整,得到目标资源消耗量;将所述目标资源消耗量确定为所述目标资源使用信息。

在一种可选的实施方式中,所述时间调度模块930被配置为执行:将预定的任务调度时间按照预定时间间隔划分为多个时间区间;根据所述节点运行信息,确定每个所述时间区间对应的资源消耗量和资源剩余量;基于所述任务运行信息,以所述上游工作量的最晚结束时间为时间起点,利用各所述时间区间对应的资源消耗量和所述资源剩余量确定允许执行所述工作流的目标时间区间;根据所述目标时间区间确定所述开始调度时间。

在一种可选的实施方式中,所述节点运行信息包括节点运行时间和节点资源消耗量;所述时间调度模块930被配置为执行:针对每个所述时间区间,根据所述节点运行时间确定属于所述时间区间的节点;根据属于所述时间区间的节点所对应的节点资源消耗量,确定所述时间区间对应的资源消耗量。

在一种可选的实施方式中,所述节点运行时间为所述节点在所述预定历史周期内的各次运行时间的中位数;所述节点资源消耗量为所述节点在所述预定历史周期内的各次资源消耗量中的中位数。

在一种可选的实施方式中,所述时间调度模块930被配置为执行:获取所述时间区间对应的资源总量;根据所述资源总量和所述时间区间对应的资源消耗量,确定所述时间区间对应的剩余资源量。

在一种可选的实施方式中,所述任务运行信息包括所述工作流的任务开始时间和任务运行时间;所述时间调度模块930被配置为执行:在所述上游工作量的最晚结束时间和所述任务开始时间之间,利用所述任务运行时间为时间窗口并以所述预定时间间隔为滑动步长进行移动;其中,所述时间窗口每次移动至候选时间区间时,判断所述候选时间区间对应的资源剩余量是否大于所述候选时间区间对应的资源消耗量;若是,则将所述候选时间区间确定为所述目标时间区间;否则,继续利用所述任务运行时间为时间窗口并以所述预定时间间隔为滑动步长进行移动。

在一种可选的实施方式中,所述时间调度模块930还被配置为执行:在所述继续利用所述任务运行时间为时间窗口并以所述预定时间间隔为滑动步长进行移动之前,确定所述时间窗口继续移动后所对应的候选时间区间的时间起点早于所述任务开始时间;其中,若所述时间窗口继续移动后所对应的候选时间区间的时间起点晚于所述任务开始时间,则停止对所述工作流的开始调度时间的调整过程。

在一种可选的实施方式中,所述任务运行信息还包括所述工作流的任务资源消耗量;所述时间调度模块930还被配置为执行:在确定所述目标时间区间后,在所述目标时间区间对应的总资源量中删除所述任务资源消耗量;以及将所述任务资源消耗量补充至所述工作流的任务开始时间至任务结束时间之间对应的总资源量中。

在一种可选的实施方式中,所述任务开始时间为所述工作流在所述预定历史周期内的各次任务开始时间的中位数;所述信息获取模块910还被配置为执行:获取所述工作流在所述预定历史周期内的各次任务结束时间的中位数,作为所述工作流的任务结束时间;根据所述工作流的所述任务结束时间和所述任务开始时间,确定所述任务运行时间。

在一种可选的实施方式中,所述时间调度模块930还被配置为执行:基于所述工作流的上级依赖关系,确定所述工作流的上游工作流;根据所述上游工作流的任务结束时间,确定所述上游工作流的最晚结束时间。

在一种可选的实施方式中,所述装置900还包括:工作流依赖配置模块,被配置执行:为获取工作流节点配置信息;对所述工作流节点配置信息进行解析,确定各所述节点依赖的数据库表;将各所述节点依赖的数据库表对应的工作流作为所述工作流的上游工作流,以得到所述上级依赖关系。

在一种可选的实施方式中,所述工作流依赖配置模块还被配置为执行:将所述上级依赖关系配置至所述工作流以及所述工作流对应的调度引擎。

在一种可选的实施方式中,所述资源配置模块还被配置为将各所述节点对应的资源配置信息,所述时间调度模块还被配置为执行将工作流的开始调度时间配置至所述工作流对应的调度引擎。

在一种可选的实施方式中,所述装置900还包括自动运维模块,被配置为执行:响应所述工作流运行失败,根据所述工作流的节点日志确定异常节点及失败原因类型;基于所述失败原因类型确定异常处理策略;基于所述异常处理策略对所述异常节点的配置信息进行调整并重新执行所述工作流。

需要说明的是,本公开实施方式的任务调度装置的各个功能模块的其他具体细节在上述任务调度方法的实施方式中已经详细说明,在此不再赘述。

应当注意,尽管在上文详细描述中提及了的任务调度装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

示例性任务调度系统

本公开实施方式还提供了一种任务调度系统1000,包括任务调度装置900和工作流引擎1010。其中:

任务调度装置900,被配置为执行上述示例性实施方式中任一项的方法;

工作流引擎1010,被配置基于任务调度装置得到的工作流的开始调度时间和工作流中各节点对应的资源配置信息运行工作流。

本公开实施方式的任务调度系统涉及的任务调度装置的各个功能模块的其他具体细节在上述任务调度方法的实施方式中已经详细说明,在此不再赘述。

示例性存储介质

下面对本公开示例性实施方式的存储介质进行说明。本示例性实施方式中,提供了根据本公开的示例性实施方式的用于实现上述方法的程序产品,如可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

该程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RE等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言-诸如Java、C++等,还包括常规的过程式程序设计语言-诸如"C"语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(FAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

示例性电子设备

参考图11对本公开示例性实施方式的电子设备进行说明。图11显示的电子设备1100仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图11所示,电子设备1100以通用计算设备的形式表现。电子设备1100的组件可以包括但不限于:至少一个处理单元1110、至少一个存储单元1120、连接不同系统组件(包括存储单元1120和处理单元1110)的总线1130、显示单元1140。

其中,存储单元存储有程序代码,程序代码可以被处理单元1110执行,使得处理单元1110执行本说明书上述"示例性方法"部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元1110可以执行如图1所示的方法步骤等。存储单元1120可以包括易失性存储单元,例如随机存取存储单元(RAM)1121和/或高速缓存存储单元1122,还可以进一步包括只读存储单元(ROM)1123。存储单元1120还可以包括具有一组(至少一个)程序模块1125的程序/实用工具1124,这样的程序模块1125包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线1130可以包括数据总线、地址总线和控制总线。

电子设备1100也可以与一个或多个外部设备1200(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(I/O)接口1150进行。电子设备1100还包括显示单元1140,其连接到输入/输出(I/O)接口1150,用于进行显示。并且,电子设备1100还可以通过网络适配器1160与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1160通过总线1130与电子设备1100的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

尽管在附图中以特定顺序描述了本公开方法的操作,但并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已参考若干具体实施方式描述本公开的精神和原理,但应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

相关技术
  • 一种任务调度方法、装置、电子设备及存储介质
  • 视频播放方法、装置及系统、电子设备以及存储介质
  • 货物自提方法及装置、系统、电子设备和存储介质
  • 测量系统的标定方法、装置、电子设备及可读存储介质
  • 内容数据的获取方法、装置、系统、存储介质及电子设备
  • 一种任务调度方法、装置、系统、电子设备及存储介质
  • 分布式任务调度方法、装置、系统、存储介质及电子设备
技术分类

06120116491937