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

文档序号:135163 发布日期:2021-10-22 浏览:8次 >En<

阅读说明:本技术 任务调用方法、装置、电子设备及存储介质 (Task calling method and device, electronic equipment and storage medium ) 是由 孙振 于 2021-07-28 设计创作,主要内容包括:本申请实施例提供一种任务调用方法、装置、电子设备及存储介质,该方法包括:获取任务描述文件,任务描述文件包括N个任务的依赖关系和执行N个任务中每个任务所需的资源量,N为正整数;根据N个任务的依赖关系,得到描述N个任务的执行顺序的有向无环图;获取资源配置文件,资源配置文件包括节点集群的资源信息;根据有向无环图,以及执行N个任务中每个任务所需的资源量和节点集群的资源信息,将N个任务分配给节点集群中的各节点进行执行。即本申请实施例在任务调用的过程中,在有向无环图的拓扑排序过程中融入单体调度的资源管理进而提高了任务调用可靠性和效率。(The embodiment of the application provides a task calling method, a task calling device, electronic equipment and a storage medium, wherein the method comprises the following steps: acquiring a task description file, wherein the task description file comprises the dependency relationship of N tasks and the resource amount required by executing each task of the N tasks, and N is a positive integer; obtaining a directed acyclic graph describing the execution sequence of the N tasks according to the dependency relationship of the N tasks; acquiring a resource configuration file, wherein the resource configuration file comprises resource information of a node cluster; and distributing the N tasks to each node in the node cluster to execute according to the directed acyclic graph, the resource amount required by executing each task in the N tasks and the resource information of the node cluster. In other words, in the task calling process, the resource management of the single scheduling is merged into the topology sorting process of the directed acyclic graph, so that the task calling reliability and efficiency are improved.)

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

技术领域

本申请实施例涉及计算机技术领域,尤其涉及一种任务调用方法、装置、电子设备及存储介质。

背景技术

ETL(Extract-Transform-Load,抽取-转换-加载)用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL任务调用系统用于为ETL任务寻找合适的服务器节点去执行该ETL任务,将为ETL任务寻找合适的服务器节点的过程称为调度。

目前常见的ETL任务调用方法为定时分片类任务调度方法,该定时分片类任务调度方法用于将一个任务按照自定义规则,拆分成多个小任务,部署在分布式集群的各个节点上执行。具体是在任务设定的执行时间到达时,触发任务执行。

由上述可知,定时分片类任务调度方法依赖于设定的执行时间,没有关注任务之间的依赖关系,且资源分配不均衡,进而造成任务执行稳定性差。

发明内容

本申请实施例提供一种任务调用方法、装置、电子设备及存储介质,用于提高任务的执行稳定性。

第一方面,本申请实施例提供一种任务调用方法,包括:

获取任务描述文件和资源配置文件,所述任务描述文件包括N个任务的依赖关系和执行所述N个任务中每个任务所需的资源量,所述资源配置文件包括节点集群的资源信息,所述N为正整数;

根据所述N个任务的依赖关系,得到描述所述N个任务的执行顺序的有向无环图;

根据所述有向无环图,以及执行所述N个任务中每个任务所需的资源量和所述节点集群的资源信息,将所述N个任务分配给所述节点集群中的各节点进行执行。

第二方面,本申请实施例提供一种任务调用装置,包括:

第一获取单元,用于获取任务描述文件,所述任务描述文件包括N个任务的依赖关系和执行所述N个任务中每个任务所需的资源量,所述N为正整数;

处理单元,用于根据所述N个任务的依赖关系,得到描述所述N个任务的执行顺序的有向无环图;

第二获取单元,用于获取资源配置文件,所述资源配置文件包括节点集群的资源信息;

调用单元,用于根据所述有向无环图,以及执行所述N个任务中每个任务所需的资源量和所述节点集群的资源信息,将所述N个任务分配给所述节点集群中的各节点进行执行。

在一些实施例中,调用单元,具体用于将至少一个第一任务写入资源分配队列中,其中初次写入所述资源分配队列中的至少一个第一任务为所述有向无环图中入度为0的至少一个任务;从所述资源分配队列中提取出第一个任务,查询所述节点集群的剩余资源量是否满足执行所述第一个任务所需的资源量;在查询到所述节点集群的剩余资源量满足执行所述资源分配队列中的第一个任务所需的资源量时,从所述节点集群中确定第一节点,并将所述第一节点和所述第一个任务写入任务执行队列中,其中所述第一个任务为所述资源分配队列中执行顺序为第一位的任务;遍历所述有向无环图中所述第一个任务的至少一个下游任务,将所述至少一个下游任务作为新的至少一个第一任务,重复执行,直到将所述有向无环图中每个任务分配给所述节点集群中的各节点进行执行为止。

在一些实施例中,调用单元,还用于在查询到所述节点集群的剩余资源量不满足执行所述资源分配队列中的第一个任务所需的资源量时,为所述第一个任务配置睡眠时间;在所述第一个任务配置睡眠时间到达时,将所述第一个任务再次写入所述资源分配队列中。

在一些实施例中,所述任务描述文件还包括所述N个任务中每个任务在资源使用上的类型,调用单元,具体用于从所述任务描述文件中,获取所述第一个任务在资源使用上的类型;根据所述第一个任务在资源使用上的类型,从所述节点集群中获取与所述第一个任务在资源使用上的类型匹配的第一节点。

在一些实施例中,调用单元,具体用于根据所述第一个任务在资源使用上的类型,从所述节点集群中获取与所述第一个任务在资源使用上的类型匹配的至少一个节点;根据预设的筛选策略,从所述至少一个节点中选出所述第一节点。

可选的,所述预设的筛选策略包括最差适配策略、首次适配策略、下次适配策略、最佳适配策略中的任意一个。

在一些实施例中,调用单元,在查询所述节点集群的剩余资源量是否满足执行所述第一个任务所需的资源量之前,还用于检查所述资源分配队列中的第一个任务是否超时;在检查到所述第一个任务未超时,查询所述节点集群的剩余资源量是否满足执行所述第一个任务所需的资源量。

在一些实施例中,调用单元,具体用于在确定执行所述有向无环图中同一层级的各任务时所需的资源量之和小于或等于所述节点集群的剩余资源量,和/或在确定执行所述有向无环图中的任一任务所需的资源量小于或等于所述节点集群中剩余资源最多的节点的剩余资源量时,根据所述有向无环图,以及执行所述N个任务中每个任务所需的资源量和所述节点集群的资源信息,将所述N个任务分配给所述节点集群中的各节点进行执行。

在一些实施例中,第一获取单元,还用于检查所述有向无环图中是否存在闭环;若检查到所述有向无环图中存在闭环,则生成第一指示信息,所述第一指示信息用于指示用户对所述N个任务的依赖关系进行修改;若检查到所述有向无环图中不存在闭环,则获取资源配置文件。

在一些实施例中,所述N个节点中至少一个节点包括工作进程和代理进程,其中所述工作进程用于执行经过调度后的任务,所述代理进程用于上报所在节点的资源使用信息。

第三方面,本申请实施例还提供一种电子设备,包括存储器和处理器;

所述存储器用于存储计算机程序;

所述处理器用于执行所述计算机程序,以实现上述第一方面任一项所述的任务调用方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述存储介质包括计算机指令,当所述指令被计算机执行时,使得所述计算机实现如第一方面任一项所述的任务调用方法。

第五方面,本申请实施例提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,计算机的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得计算机实施第一方面任一项所述的任务调用方法。

本申请实施例提供的任务调用方法、装置、电子设备及存储介质,通过获取任务描述文件,任务描述文件包括N个任务的依赖关系和执行N个任务中每个任务所需的资源量,N为正整数;根据N个任务的依赖关系,得到描述N个任务的执行顺序的有向无环图;获取资源配置文件,资源配置文件包括节点集群的资源信息;根据有向无环图,以及执行N个任务中每个任务所需的资源量和节点集群的资源信息,将N个任务分配给节点集群中的各节点进行执行。即本申请实施例在任务调用的过程中,在有向无环图的拓扑排序过程中融入单体调度的资源管理进而提高了任务调用可靠性和效率。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例提供的任务调用系统架构示意图;

图2为本申请一实施例提供的任务调用方法的流程示意图;

图3为本申请一实施例提供的任务调用方法的流程示意图;

图4为本申请一实施例提供的任务调用方法的流程示意图;

图5为本申请实施例涉及的任务调用系统示例图;

图6为本申请一实施例提供的任务调用装置的结构示意图

图7为本申请实施例涉及的电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

应理解,在本发明实施例中,“与A对应的B”表示B与A相关联。在一种实现方式中,可以根据A确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。

在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。

另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。

为了便于理解本申请的实施例,首先对本申请实施例涉及到的相关概念进行如下简单介绍:

单体调度:在集群中有一个节点运行着调度的程序,同时该节点具备访问其他节点的权限,它能够搜集各个节点的资源信息以及状态等信息,然后统一进行管理。根据用户提交的任务与资源的需求进行匹配,最终匹配到的结果即为执行任务的节点。

有向无环图(directed acyclic graph,简称DAG),在数学,特别是图论和计算机科学中,指的是一个无回路的有向图。

入度:指有向图中某点作为图中边的终点的次数之和。

出度:指有向图中某点作为图中边的起点的次数之和。

Kahn算法:对有向无环图的节点进行排序的经典算法。不破坏节点先后顺序的前提下,把DAG拉成一条链。

ETL:是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

任务:交底书中的任务主要泛指抽取(extract)、转换(transform)、加载(load)数据的相关任务。

资源:交底书中的资源主要分为两类:

(1)调度集群内部的资源,包括但不限于CPU,GPU,内存,硬盘存储;

(2)调度集群外部资源,包括但不限于依赖的超文本传输协议(Hyper TextTransfer Protocol,简称HTTP)服务的每秒查询率(Queries-per-second,简称QPS)配额,关系型数据库管理系统(MySQL)集群服务的压力限制。

QPS:为一个HTTP服务1秒所能处理完成的请求数量。

图1为本申请实施例提供的任务调用系统架构示意图,如图1所示,包括一个主(Master)节点和多个从属(Slave)节点。

其中,Master节点上运行了调度进程,用于负责资源管理、Tasks(任务)和资源匹配。

Slave节点包括节点(Node)1、Node 2、…、Node N,其中Node1、Node2、…、Node N会将节点状态(Node State)上报给Master节点。

在一些实施例中,Master节点包括集群状态(Cluster State)模块和调度逻辑(Scheduling Logic)模块。

其中,Cluster State模块用于管理集群中节点的资源等状态,并将节点的资源状态传送给Scheduling Logic模块。

Scheduling Logic模块进行Tasks与资源匹配,并根据匹配结果将Task发送给匹配到的节点。

下面通过一些实施例对本申请实施例的技术方案进行详细说明。下面这几个实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图2为本申请一实施例提供的任务调用方法的流程示意图,如图2所示,本实施例的任务调用方法包括:

S201、获取任务描述文件。

本申请实施例的执行主体可以理解为具有任务调用功能的装置,例如任务调用装置。在分布式系统中,该任务调用装置为分布式系统中的一个用于任务调用的一个节点,例如上述图1所示的主节点,或者为用于任务调用的节点中的部件,例如为该节点中的处理器。

下面实施例以执行主体为任务调用节点为例进行说明。

其中,任务描述文件包括N个任务的依赖关系和执行N个任务中每个任务所需的资源量,N为正整数。

在一种示例中,任务所需的资源量包括执行该任务需要占用的资源量或者是占用资源量的上下浮动区间范围,比如执行某任务需要内存10G-20G等。

在一种示例中,任务描述文件还包括任务在资源上的依赖描述,例如某任务主要依赖CPU。

在一种示例中,任务描述文件还包括任务在资源使用上的分类,例如计算密集型(比如执行任务主要依赖CPU或者GPU),IO(输入/输出(Input/Output))密集型等。

在一种示例中,任务描述文件还包括任务的触发时机,其中任务的触发时机包括但不限于如下几种:

时机1,如果该任务的触发依赖其他一个或者多个任务的完成,则需要描述清楚依赖的上游任务全局唯一名称或者id。

时机2,如果该任务的触发依赖于时间,则为定时任务,需要描述清楚设定的执行时间与执行周期。

在一种示例中,任务描述文件还包括任务基础属性。可选的,任务基础属性包括如下至少一个:任务的参数,任务执行失败重试次数,任务的超时时间等。

在一些实施例中,上述任务描述文件为用户编写的,例如为数据工程师编写的。

可选的,用户除了编写任务描述文件外,还编写了任务具体的执行逻辑。

S202、根据N个任务的依赖关系,得到描述N个任务的执行顺序的有向无环图。

根据上述步骤,获得任务描述文件后,解析该任务描述文件,得到N个任务的依赖关系,接着,根据这N个任务的依赖关系,进行有向无环图绘制,得到描述这N个任务的执行顺序的有向无环图。

S203、获取资源配置文件。

上述资源配置文件包括节点集群的资源信息。

在一种示例中,节点集群的资源信息包括HTTP服务器QPS类、Spark资源、节点CPU、节点GPU、节点内存、节点存储空间。其中节点CPU、节点GPU、节点内存、节点存储空间为从节点所拥有的资源中虚拟出的资源,其中HTTP服务器QPS类和Spark资源可以供节点集群中各节点共用。需要说明的是,上述资源配置文件包括虚拟化后的初始资源信息,随着任务的执行,上述该初始资源信息会发生改变。

在一种示例中,资源配置文件还包括虚拟化后的资源为了能够正常服务所需要保留的冗余量。

举例说明,比如集群某个节点内存128G,按照10G为单位进行虚拟化,则可以虚拟出来12个单位的内存,然后设置2个单位的冗余,剩下10个单位的内存作为该资源可使用的上线,同时也是该资源使用的预警线。一旦实际使用超过则需要进行预警。

在一种示例中,资源配置文件还包括其他依赖的虚拟化过的资源。

可选的,上述资源配置文件为用户编写的,例如为运维工程师编写的。

在一些实施例中,为了保证生成的有向无环图的有限性,本实施例还包括对生成的有向无环图进行判断的过程,具体包括如下步骤1至步骤3:

步骤1、检查有向无环图中是否存在闭环。

在一些实施例中,可以采用Kahn算法,检查有向无环图中是否存在闭环。

步骤2、若检查到有向无环图中存在闭环,则生成第一指示信息,该第一指示信息用于指示用户对这N个任务的依赖关系进行修改。用户对这任务的依赖关系进行修改后,上传给任务调用节点,任务调用节点根据修改后的N个任务的依赖关系重新绘制有向无环图,重复上述步骤,直到绘制出满足要求的有向无环图为止。

步骤3、若检查到有向无环图中不存在闭环,则执行上述S203获取资源配置文件。

S204、根据有向无环图,以及执行N个任务中每个任务所需的资源量和节点集群的资源信息,将N个任务分配给节点集群中的各节点进行执行。

具体的,根据有向无环图中任务的执行顺序,以及执行N个任务中每个任务所需的资源量和节点集群的资源信息,将N个任务分配给节点集群中的各节点进行执行,例如,任务1在有向无环图中先于任务2执行,且执行任务1所需的资源大于执行任务2所需的资料,但是当前时刻节点集群中,剩余资源最多的节点1的资源量小于执行任务1所需的资源量,但大于执行任务2所需的资源量,这样首先将任务2分配给该节点1,使得节点1执行该任务2。对于任务1,需要等待到节点集群中存在满足执行任务1的节点时,再将任务1分配给该节点以执行任务1。

由上述可知,本申请实施例在任务调用的过程中,不仅考虑了任务的执行顺序,还考虑了资源使用情况,进而提高了任务调用效率。

在一些实施例中,本申请实施例在执行S203之前,先判断节点集群的资源量是否可以满足执行这N个任务,具体包括如下几种方式:

方式一,判断执行有向无环图中同一层级的各任务时所需的资源量之和是否小于或等于节点集群的剩余资源量。

在一些实施例中,该有向无环图可以理解为树状结构,包括多个层级,每一层包括至少一个任务。针对有向无环图中的每一层级,判断执行该层级的各任务时所需的资源量之和,是否小于或等于节点集群的剩余资源量。例如,有向无环图的某一层级包括3个任务节点,执行这3个任务节点所需的资源量之和为a,而当前节点集群的剩余资源量为b,若a小于或等于b,则确定该节点集群可以执行这3个任务,则执行上述S204。若a大于b,则说明节点集群无法执行上述3个任务,本次任务调用过程结束。

方式二,判断执行有向无环图中的任一任务所需的资源量是否小于或等于节点集群中剩余资源最多的节点的剩余资源量。举例说明,对于有向无环图中的任意一个任务,例如任务3,该任务3在资源上主要依赖CPU,例如执行任务3需要10G的CPU资源,检查此时节点集群中CPU剩余资源最多的节点所剩余的CPU资源是否大于10G,若大于或等于10G,则说明该节点可以执行上述任务3,此时执行上述S204。该节点剩余的CPU资源小于10G,则说明此时节点集群中的所有节点均无法执行该任务3,本次任务调用过程结束。

方式三,判断执行有向无环图中同一层级的各任务时所需的资源量之和是否小于或等于节点集群的剩余资源量,以及判断执行有向无环图中的任一任务所需的资源量是否小于或等于节点集群中剩余资源最多的节点的剩余资源量。

在确定执行有向无环图中同一层级的各任务时所需的资源量之和小于或等于节点集群的剩余资源量,和/或在确定执行有向无环图中的任一任务所需的资源量小于或等于节点集群中剩余资源最多的节点的剩余资源量时,执行上述S204,即根据有向无环图,以及执行N个任务中每个任务所需的资源量和节点集群的资源信息,将N个任务分配给节点集群中的各节点进行执行。

若在确定执行有向无环图中同一层级的各任务时所需的资源量之和大于节点集群的剩余资源量,和/或在确定执行有向无环图中的任一任务所需的资源量大于节点集群中剩余资源最多的节点的剩余资源量时,说明该节点集群无法执行这N个任务,此时,整个任务调度过程结束。

由上述可知,本申请实施例在有向无环图的拓扑排序过程中,加入了对任务依赖资源的实时检查,提高了任务资源分配的有效性,进一步提高了任务调用的可靠性和效率。

在一些实施例中,在判断节点集群的资源量可以满足执行这N个任务所需的资源时,开始对这N个节点进行部署,具体包括如下过程:

步骤A、在集群节点部署workers工作进程,负责执行经过调度后的具体任务。

步骤B、在集群节点部署Agent进程。

其中,Agent进程的功能包括但不限于如下几种:

功能1、Agent进程负责定时同步节点已使用资源与剩余可用资源给任务调度器来更新虚拟资源池中集群内部资源信息。

功能2、Agent接收任务调度器的请求,实时返回节点已使用资源与剩余可用资源给任务调度器来更新虚拟资源池中集群内部资源信息。

由上述可知,本申请实施例的N个节点中至少一个节点包括工作进程和代理进程,其中工作进程用于执行经过调度后的任务,代理进程用于上报所在节点的资源使用信息。

本申请实施例提供的任务调用方法,通过获取任务描述文件,任务描述文件包括N个任务的依赖关系和执行N个任务中每个任务所需的资源量,N为正整数;根据N个任务的依赖关系,得到描述N个任务的执行顺序的有向无环图;获取资源配置文件,资源配置文件包括节点集群的资源信息;根据有向无环图,以及执行N个任务中每个任务所需的资源量和节点集群的资源信息,将N个任务分配给节点集群中的各节点进行执行。即本申请实施例在任务调用的过程中,在有向无环图的拓扑排序过程中融入单体调度的资源管理进而提高了任务调用可靠性和效率。

下面结合具体实施例,对上述S204的具体实现过程进行详细说明。

图3为本申请一实施例提供的任务调用方法的流程示意图,在上述实施例的基础上,如图3所示,上述S204包括:

S301、将至少一个第一任务写入资源分配队列中。

在一些实施例中,初次写入资源分配队列中的至少一个第一任务为有向无环图中入度为0的至少一个任务。

例如,从有向无环图中入度为0的至少一个任务开始进行任务调用,首先,将有向无环图中入度为0的至少一个任务写入资源分配队列中,接着,执行如下步骤S302,从资源分配队列中提取出执行顺序为第一位的第一任务,查询节点集群的剩余资源量是否满足执行第一个任务所需的资源量。

S302、从资源分配队列中提取出第一个任务,查询节点集群的剩余资源量是否满足执行第一个任务所需的资源量。

其中第一个任务为资源分配队列中执行顺序为第一位的任务。

在一些实施例中,在查询节点集群的剩余资源量是否满足执行第一个任务所需的资源量之前,先检查资源分配队列中的第一个任务是否超时,若超时,则整个任务调度过程结束。若在检查到第一个任务未超时,查询节点集群的剩余资源量是否满足执行所述第一个任务所需的资源量。

S303、在查询到节点集群的剩余资源量满足执行资源分配队列中的第一个任务所需的资源量时,从节点集群中确定第一节点,并将第一节点和第一个任务写入任务执行队列中。

本步骤中,上述从节点集群中确定第一节点的方式包括但不限于如下几种:

方式一,将节点集群中当前剩余资源量最多的节点确定为第一节点。

方式二,上述任务描述文件还包括N个任务中每个任务在资源使用上的类型。此时,上述S203-A3包括:

S303-A1、从任务描述文件中,获取第一个任务在资源使用上的类型,例如为计算密集型或IO密集型。

S303-A2、根据第一个任务在资源使用上的类型,从节点集群中获取与第一个任务在资源使用上的类型匹配的第一节点。

在一种可能的实现方式中,上述S303-A2包括:根据第一个任务在资源使用上的类型,从节点集群中获取与第一个任务在资源使用上的类型匹配的至少一个节点;根据预设的筛选策略,从至少一个节点中选出第一节点。

本申请实施例对上述预设的筛选策略的具体类型不做限制。

可选的,上述预设的筛选策略包括最差适配策略、首次适配策略、下次适配策略、最佳适配策略中的任意一个。

S304、遍历有向无环图中第一个任务的至少一个下游任务,将至少一个下游任务作为新的至少一个第一任务。

重复执行上述S301至S304的步骤,即将上述新的至少第一任务写入资源分配队列中,从该当前的资源分配队列中提取出新的第一个任务,查询节点集群的剩余资源量是否满足执行该新的第一个任务所需的资源量,若满足,则从节点集群中确定新的第一节点,并将新的第一节点和新的第一个任务写入任务执行队列中。接着,遍历有向无环图中新的第一个任务的至少一个下游任务,将至少一个下游任务作为新的至少一个第一任务,重复上述步骤,直到将有向无环图中每个任务分配给节点集群中的各节点进行执行为止。

在一些实施例中,本申请实施例还包括:

S305、在查询到节点集群的剩余资源量不满足执行资源分配队列中的第一个任务所需的资源量时,为第一个任务配置睡眠时间。

S306、在第一个任务配置睡眠时间到达时,将第一个任务再次写入资源分配队列中。

例如执行第一个任务所需CPU资源为10G,但是目前节点集群的CPU剩余资源量最多的节点所剩余的CPU小于10G,则确定当前节点集群的剩余资源量不满足执行资源分配队列中的第一个任务所需的资源量,此时,为第一个任务配置睡眠时间,该睡眠时间为预设值,具体大小根据实际需要确定,本实施例对此不做限制。在第一个任务配置睡眠时间到达时,将第一个任务再次写入资源分配队列中,以为该第一个任务重新分配节点。

在一具体实施例中,如图4所示,本申请实施例涉及的任务调用过程包括:

S401、单个有向无环图开始调度。

S402、将有向无环图中入度为0的至少一个任务写入资源分配队列中。

S403、判断资源分配队列是否为空,若不为空,则执行如下步骤S404,若为空,则执行如下步骤S413。

S404、从资源分配队列中提取出第一个任务,该第一个任务为资源分配队列中执行顺序为第一位的任务。

S405、检查第一个任务是否超时,若未超时,则执行如下步骤S406,若超时,则执行如下步骤S413。

S406、查询节点集群的剩余资源量是否满足执行第一个任务所需的资源量,若满足则执行如下S409,若不满,则执行如下步骤S407和S408。

S407、为第一个任务配置睡眠时间。

S408、在第一个任务配置睡眠时间到达时,将第一个任务再次写入资源分配队列中,返回执行上述S404,从资源分配队列中重新提取出第一个任务。

S409、从任务描述文件中,获取第一个任务在资源使用上的类型。

S410、根据第一个任务在资源使用上的类型,从节点集群中获取与第一个任务在资源使用上的类型匹配的第一节点。

S411、将第一节点和第一个任务写入任务执行队列中。

S412、遍历有向无环图中第一个任务的至少一个下游任务,将至少一个下游任务作为新的至少一个第一任务,并将该新的至少一个第一任务写入资源分配队列,返回执行上述S404。重复上述步骤,直到将有向无环图中每个任务分配给节点集群中的各节点进行执行为止。

S413、单个有向无环图的调度结束。

本申请实施例提供的任务调用方法,对生成的有向无环图进行调度时,首先将有向无环图中入度为0的至少一个任务写入资源分配队列中,从资源分配队列中提取出第一个任务,该第一个任务为资源分配队列中执行顺序为第一位的任务,查询节点集群的剩余资源量是否满足执行第一个任务所需的资源量,若不满足则为第一个任务配置睡眠时间,在第一个任务配置睡眠时间到达时,将第一个任务再次写入资源分配队列中,从资源分配队列中重新提取出第一个任务,若查询节点集群的剩余资源量满足执行第一个任务所需的资源量时,从任务描述文件中,获取第一个任务在资源使用上的类型,根据第一个任务在资源使用上的类型,从节点集群中获取与第一个任务在资源使用上的类型匹配的第一节点,将该第一个任务分配给第一节点进行执行。接着,遍历有向无环图中第一个任务的至少一个下游任务,将至少一个下游任务作为新的至少一个第一任务,并将该新的至少一个第一任务写入资源分配队列,重复上述步骤,直到将有向无环图中每个任务分配给节点集群中的各节点进行执行为止。即本申请实施例在任务调用的过程中,不仅考虑了任务的执行顺序,还考虑了资源管理,进而提高了任务调用可靠性和效率。

在一些实施例中,本申请实施例还提供的一种任务调用系统,如图5所示,该任务调用系统包括:任务调用节点、执行任务节点池、虚拟化资源池。

在一些实施例中,任务调用节点包括有向无环图生成器、任务调用器、执行器。

其中,有向无环图生成器用于获取数据工程师编写的任务描述文件,解析任务描述文件,得到N个任务之间的依赖关系,并根据N个任务之间的依赖关系,生成有向无环图,具体过程可以参照上述S201和S202。在一些实施例中,有向无环图生成器还对生成的有向无环图进行检查,检查是否存在闭环等。

任务调用器用于调用有向无环图生成器生成的有向无环图,以及获取运维工程师编写的资源配置文件,并解析该资源配置文件得到节点集群的资源信息,并将节点集群的资源信息存储在虚拟化资源池中。

在一些实施例中,有向无环图生成器将生成的有向无环图信息写入元信息表中。

在一种实施例中,任务调用器将虚拟化的资源信息写入元信息表中。

接着,任务调用器根据有向无环图,以及执行N个任务中每个任务所需的资源量和节点集群的资源信息,将N个任务分配给节点集群中的各节点进行执行。

在一种示例中,任务调用器生成执行任务指令,该执行任务指令用于指示执行任务的节点,并将该执行任务指令发送给执行器,以使执行器将任务发布给对应的节点。

在一种可能的实现方式中,执行器通过中介者(例如异步队列),向执行任务节点池子中的各节点发布任务。具体是,执行器发布任务到中介者的异步队列中,符合条件的节点上的worker可以领取任务,从而达到任务并行的目的。

在一种实施例中,执行器将任务执行相关信息记录在执行任务记录表中。

执行任务节点池子中的各节点执行发布的任务,并将任务的执行情况,以及节点资源的使用情况进行反馈。

任务调用器根据节点的资源使用情况对虚拟化资源池中的资源进行更新。

以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。

还应理解,在本申请的各种方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

上文图2至图4对本申请实施例涉及的任务调用方法进行介绍,在此基础上对本申请实施例涉及的任务调用装置进行介绍。

图6为本申请一实施例提供的任务调用装置的结构示意图。该任务调用装置30用于执行上述方式实施例的技术方案。如图6所示,该任务调用装置30可以包括:

第一获取单元31,用于获取任务描述文件,所述任务描述文件包括N个任务的依赖关系和执行所述N个任务中每个任务所需的资源量,所述N为正整数;

处理单元32,用于根据所述N个任务的依赖关系,得到描述所述N个任务的执行顺序的有向无环图;

第二获取单元33,用于获取资源配置文件,所述资源配置文件包括节点集群的资源信息;

调用单元34,用于根据所述有向无环图,以及执行所述N个任务中每个任务所需的资源量和所述节点集群的资源信息,将所述N个任务分配给所述节点集群中的各节点进行执行。

在一些实施例中,调用单元34,具体用于将至少一个第一任务写入资源分配队列中,其中初次写入所述资源分配队列中的至少一个第一任务为所述有向无环图中入度为0的至少一个任务;从所述资源分配队列中提取出所述第一个任务,查询所述节点集群的剩余资源量是否满足执行所述第一个任务所需的资源量;在查询到所述节点集群的剩余资源量满足执行所述资源分配队列中的第一个任务所需的资源量时,从所述节点集群中确定第一节点,并将所述第一节点和所述第一个任务写入任务执行队列中,其中所述第一个任务为所述资源分配队列中执行顺序为第一位的任务;遍历所述有向无环图中所述第一个任务的至少一个下游任务,将所述至少一个下游任务作为新的至少一个第一任务,重复执行,直到将所述有向无环图中每个任务分配给所述节点集群中的各节点进行执行为止。

在一些实施例中,调用单元34,还用于在查询到所述节点集群的剩余资源量不满足执行所述资源分配队列中的第一个任务所需的资源量时,为所述第一个任务配置睡眠时间;在所述第一个任务配置睡眠时间到达时,将所述第一个任务再次写入所述资源分配队列中。

在一些实施例中,所述任务描述文件还包括所述N个任务中每个任务在资源使用上的类型,调用单元34,具体用于从所述任务描述文件中,获取所述第一个任务在资源使用上的类型;根据所述第一个任务在资源使用上的类型,从所述节点集群中获取与所述第一个任务在资源使用上的类型匹配的第一节点。

在一些实施例中,调用单元34,具体用于根据所述第一个任务在资源使用上的类型,从所述节点集群中获取与所述第一个任务在资源使用上的类型匹配的至少一个节点;根据预设的筛选策略,从所述至少一个节点中选出所述第一节点。

可选的,所述预设的筛选策略包括最差适配策略、首次适配策略、下次适配策略、最佳适配策略中的任意一个。

在一些实施例中,调用单元34,在查询所述节点集群的剩余资源量是否满足执行所述第一个任务所需的资源量之前,还用于检查所述资源分配队列中的第一个任务是否超时;在检查到所述第一个任务未超时,查询所述节点集群的剩余资源量是否满足执行所述第一个任务所需的资源量。

在一些实施例中,调用单元34,具体用于在确定执行所述有向无环图中同一层级的各任务时所需的资源量之和小于或等于所述节点集群的剩余资源量,和/或在确定执行所述有向无环图中的任一任务所需的资源量小于或等于所述节点集群中剩余资源最多的节点的剩余资源量时,根据所述有向无环图,以及执行所述N个任务中每个任务所需的资源量和所述节点集群的资源信息,将所述N个任务分配给所述节点集群中的各节点进行执行。

在一些实施例中,第一获取单元33,还用于检查所述有向无环图中是否存在闭环;若检查到所述有向无环图中存在闭环,则生成第一指示信息,所述第一指示信息用于指示用户对所述N个任务的依赖关系进行修改;若检查到所述有向无环图中不存在闭环,则获取资源配置文件。

在一些实施例中,所述N个节点中至少一个节点包括工作进程和代理进程,其中所述工作进程用于执行经过调度后的任务,所述代理进程用于上报所在节点的资源使用信息。

应理解,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图6所示的装置30可以对应于执行本申请实施例的方法中的相应主体,并且装置30中的各个单元的前述和其它操作和/或功能分别为了实现方法等各个方法中的相应流程,为了简洁,在此不再赘述。

上文中结合附图从功能单元的角度描述了本申请实施例的装置和系统。应理解,该功能单元可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件单元组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。可选地,软件单元可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。

图7为本申请实施例涉及的电子设备的结构示意图。该电子设备用于执行上述实施例所述的任务调用方法,具体参见上述方法实施例中的说明。

图7所示的电子设备400包括存储器401、处理器402、通信接口403。存储器401、处理器402、通信接口403之间彼此通信连接。例如,存储器401、处理器402、通信接口403之间可以采用网络连接的方式,实现通信连接。或者,上述电子设备400还可以包括总线404。存储器401、处理器402、通信接口403通过总线404实现彼此之间的通信连接。图7是以存储器401、处理器402、通信接口403通过总线404实现彼此之间的通信连接的电子设备400。

存储器401可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器401可以存储程序,当存储器401中存储的程序被处理器402执行时,处理器402和通信接口403用于执行上述方法。

处理器402可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路。

处理器402还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的方法可以通过处理器402中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器402还可以是通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器402读取存储器401中的信息,结合其硬件完成本申请实施例的方法。

通信接口403使用例如但不限于收发器一类的收发模块,来实现电子设备400与其他设备或通信网络之间的通信。

当上述电子设备400包括总线404时,总线404可包括在电子设备400各个部件(例如,存储器401、处理器402、通信接口403)之间传送信息的通路。

根据本申请的一个方面,提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。

根据本申请的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法实施例的方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:任务调度方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!