CN118012577A - 任务调度方法和装置、计算设备、存储介质及程序产品 - Google Patents
任务调度方法和装置、计算设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN118012577A CN118012577A CN202211326406.XA CN202211326406A CN118012577A CN 118012577 A CN118012577 A CN 118012577A CN 202211326406 A CN202211326406 A CN 202211326406A CN 118012577 A CN118012577 A CN 118012577A
- Authority
- CN
- China
- Prior art keywords
- task
- sub
- subtasks
- execution
- tasks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 97
- 238000003860 storage Methods 0.000 title claims description 45
- 238000012545 processing Methods 0.000 claims abstract description 25
- 238000013500 data storage Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 8
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 26
- 238000007726 management method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 230000008602 contraction Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 125000002015 acyclic group Chemical group 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000002354 daily effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种任务调度方法,包括:获取目标任务和当前资源信息,其中目标任务包括多个类别的分任务,多个类别的分任务之间具有关联关系,每个类别的分任务具有相应的任务优先级、最大并发数和环境组件,当前资源信息指示用于执行目标任务的当前资源;根据各个类别的分任务之间的关联关系,确定多个类别的分任务中类别间的数据流动方向;根据多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定各个分任务的执行顺序;根据各个分任务的执行顺序和当前资源信息,利用相应类别的分任务的执行环境,执行各个分任务。该方法有利于服务器集群的资源调度和任务的并行处理。
Description
技术领域
本申请涉及计算机技术领域,特别涉及任务调度方法和装置、计算设备、计算机可读存储介质及计算机程序产品。
背景技术
在计算机技术领域,往往需要短时间内处理多个任务,这些任务可能相同也可能不同,多个任务之间可能还具有先后执行的逻辑的关系和不同的任务优先级。在有限的资源条件下,如何调度这些任务是亟待解决的问题。
现有的任务调度技术是基于Hadoop分布式框架来实现的,这意味着需要借助Hadoop分布式框架的各个组件来完成任务调度,而这些组件的使用非常复杂,并且导致任务的描绘和调度会非常复杂,这导致较高的使用成本;不仅如此,在Hadoop分布式框架下,任务节点难以做到动态扩缩容,资源利用率较低。
发明内容
鉴于此,本申请提供了一种任务调度方法和装置、计算设备、计算机可读存储介质及计算机程序产品,期望缓解或克服上面提到的部分或全部缺陷以及其他可能的缺陷。
根据本申请的第一方面,提供了一种任务调度方法,包括:获取目标任务和当前资源信息,其中所述目标任务包括多个类别的分任务,所述多个类别的分任务之间具有关联关系,每个类别的分任务具有相应的任务优先级、最大并发数和环境组件,所述最大并发数指示相应类别的分任务被执行的个数,所述环境组件表示相应类别的分任务的执行环境,所述当前资源信息指示用于执行所述目标任务的当前资源; 根据各个类别的分任务之间的所述关联关系,确定所述多个类别的分任务中类别间的数据流动方向,所述数据流动方向指示各个类别的分任务的输入数据的来源和输出数据的去向;根据所述多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定所述各个分任务的执行顺序;根据所述各个分任务的执行顺序和所述当前资源信息,利用相应类别的分任务的执行环境,执行所述各个分任务,从而完成所述目标任务。
在根据本申请的一些任务调度方法的实施例中,根据各个类别的分任务之间的所述关联关系,确定所述多个类别的分任务中类别间的数据流动方向,包括:对于所述多个类别的分任务中存在直接关联关系的每两个类别的分任务,响应于所述两个类别的分任务中的第一类别的分任务是第二类别的分任务的父任务,将所述第一类别的分任务的输出数据的去向确定为所述第二类别的分任务,所述第二类别的分任务的输入数据的来源确定为所述第一类别的分任务。
在根据本申请的一些任务调度方法的实施例中,根据所述多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定所述各个分任务的执行顺序,包括:根据所述多个类别的分任务以及各个类别的分任务之间的数据流动方向,建立基础有向无环图,其中所述基础有向无环图的节点表示分任务的类别,所述基础有向无环图的边表示连接的两个类别的分任务之间的数据流动方向;根据所述基础有向无环图和各个类别的分任务的最大并发数,确定执行有向无环图,其中所述执行有向无环图的节点表示分任务,所述执行有向无环图的边表示连接的两个分任务之间的数据流动方向;基于每个类别的分任务的任务优先级,确定所述执行有向无环图中各个分任务的执行顺序。
在根据本申请的一些任务调度方法的实施例中,基于每个类别的分任务的任务优先级,确定所述执行有向无环图中各个分任务的执行顺序,包括:基于每个类别的分任务的任务优先级,根据深度优先遍历的方式来遍历所述执行有向无环图;根据各个节点被遍历的顺序确定各个分任务的执行顺序。
在根据本申请的一些任务调度方法的实施例中,基于每个类别的分任务的任务优先级,确定所述执行有向无环图中各个分任务的执行顺序,包括:基于每个类别的分任务的任务优先级,根据广度优先遍历的方式来遍历所述执行有向无环图;根据各个节点被遍历的顺序确定各个分任务的执行顺序。
在根据本申请的一些任务调度方法的实施例中,执行有向无环图的边具有数据存储路径,其中所述数据存储路径存储所述边连接的两个分任务中的父任务的输出数据。
在根据本申请的一些任务调度方法的实施例中,执行有向无环图的边还具有日志表,所述日志表指示所述边连接的两个分任务中的父任务的执行情况。
在根据本申请的一些任务调度方法的实施例中,根据所述各个分任务的执行顺序和所述当前资源信息,利用相应类别的分任务的执行环境,执行所述各个分任务,包括:对于每一个被执行的分任务:根据所述当前资源信息为所述分任务分配资源;根据所述分任务相应的环境组件建立相应执行环境;根据所述执行有向无环图,获取所述被执行的分任务的输入数据;在所述相应执行环境中,处理所述输入数据,以得到输出数据。
在根据本申请的一些任务调度方法的实施例中,输入数据包括至少一个待处理对象,每个待处理对象具有处理优先级;并且所述在所述相应执行环境中,处理所述输入数据,包括:按照所述至少一个待处理对象的处理优先级来处理所述至少一个待处理对象。
在根据本申请的一些任务调度方法的实施例中,获取目标任务,包括:获取任务日程,所述任务日程指示至少一个任务的执行时间;响应于到达所述至少一个任务中的一个任务的执行时间,获取所述一个任务作为所述目标任务。
在根据本申请的一些任务调度方法的实施例中,每个目标任务还具有任务优先级,并且所述方法还包括:响应于到达多个任务的执行时间,根据所述各个任务的任务优先级确定要获取的任务。
根据本申请的第二方面,提供了一种任务调度装置,该任务调度装置包括:获取模块,配置为获取目标任务和当前资源信息,其中所述目标任务包括多个类别的分任务,所述多个类别的分任务之间具有关联关系,每个类别的分任务具有相应的任务优先级、最大并发数和环境组件,所述最大并发数指示相应类别的分任务被执行的个数,所述环境组件表示相应类别的分任务的执行环境,所述当前资源信息指示用于执行所述目标任务的当前资源;第一确定模块,配置为根据各个类别的分任务之间的所述关联关系,确定所述多个类别的分任务中类别间的数据流动方向,所述数据流动方向指示各个类别的分任务的输入数据的来源和输出数据的去向;第二确定模块,配置为根据所述多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定所述各个分任务的执行顺序;执行模块,配置为根据所述各个分任务的执行顺序和所述当前资源信息,利用相应类别的分任务的执行环境,执行所述各个分任务,从而完成所述目标任务。
根据本申请的第三方面,提供了一种计算设备,包括存储器和处理器,其中所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时促使所述处理器执行根据本申请一些实施例的任务调度方法的步骤。
根据本申请的第四方面,提供了一种计算机可读存储介质,其上存储计算机可读指令,所述计算机可读指令在被执行时实现根据本申请一些实施例的任务调度方法。
根据本申请的第五方面,提供了一种计算机程序产品,包括计算机指令,计算机指令在被处理器执行时实现根据本申请一些实施例的任务调度方法。
在根据本申请一些实施例的任务调度方法和装置中,首先实现了与Hadoop分布式框架的完全解耦,不需要限定于任何Hadoop分布式框架的组件的配合,所以只需要明确目标任务的分任务之间的关联关系和分任务的最大并发数、分任务的优先级,无需配置其他信息,具有极低的使用成本;其次,每个类别的分任务具有相应的环境组件,这意味着可以临时建立执行环境来执行分任务,并在执行结束后删除该执行环境,因此具有很高的动态扩缩容的性能,降低了资源的成本;最后,通过先确定类别间的数据流动方向,再确定各个分任务具体的执行顺序,使得仅需要关注分任务之间的数据的输入和输出即可实现各个任务的调度,这可以显著降低任务的调度成本,同时保证大量任务的高效执行。
根据下文描述的实施例,本申请的这些和其它优点将变得清楚,并且参考下文描述的实施例来阐明本申请的这些和其它优点。
附图说明
现在将更详细并且参考附图来描述本申请的实施例,其中:
图1示出了根据本申请的一些实施例的任务调度方法的示例性应用场景;
图2是根据本申请的一些实施例的任务调度方法的流程图;
图3是根据本申请的一些实施例的确定各个分任务的执行顺序的流程图;
图4是基于本申请的一些实施例的任务描绘的基础有向无环图的示意图;
图5是基于本申请的一些实施例的任务描绘的一个执行有向无环图的示意图;
图6是基于本申请的一些实施例的任务描绘的另一个执行有向无环图的示意图;
图7是根据本申请的一些实施例的执行一个分任务的示意图;
图8是根据本申请的一些实施例的任务调度方法的示例性架构的示意图;
图9是根据图8所示的任务调度方法的示例性架构的任务调度流程图;
图10是根据本申请的实施例的局部架构的示意图;
图11是根据图8所示的任务调度方法的架构中的调度器的调度流程图;
图12是根据本申请的一些实施例的数据存储中的存储结构的示意图;
图13是根据本申请的一些实施例的基础有向无环图;
图14是图13所示的任务调度方法的实施例的日志表的示意图;
图15是根据本申请的一些实施例的执行分任务的示意图;
图16是根据本申请的另外一些实施例的任务调度装置的示例性结构框图;
图17示出了一个示例系统,其包括代表可以实现本文描述的各种方法的一个或多个系统和/或设备的示例计算设备。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组件、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不必然与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“和/或”及类似术语包括相关联的列出项目中的任一个、多个和全部的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
在详细介绍本申请的实施例之前,为了清楚起见,首先对一些相关的概念进行解释。
云计算(cloud computing):是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
容器:容器是一个标准的软件单元,它打包代码及其所有依赖项,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境。大多数容器体现为轻量级的、独立的、可执行的软件包,包括运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。容器技术可以同时将操作系统镜像和应用程序加载到内存当中,还可以从网络磁盘进行加载,因为同时启动几十台镜像不会对网络和存储带来很大负载。之后的镜像创建过程只需要指向通用镜像,大大减少了所需内存。
K8S(Kubernetes):是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。
腾讯云容器服务(Tencent Kubernetes Engine,TKE):基于原生Kubernetes提供以容器为核心的、高度可扩展的高性能容器管理服务。
Pod:Pod是一种组合的多容器运行单元,也是Kubernetes里的一个基础单元。Pod里面包括一个主容器和数个辅助容器,它们共同完成一个特定的功能。把多个进程(容器也是一种隔离的进程)打包在一个名称空间里的时候,就构成了一个Pod。
垃圾收集(Garbage Collection, GC)任务: 在计算机科学中,垃圾收集任务是一种自动内存管理形式。在本申请中还具体指示跟文件系统相关的数据清理,例如在一些文件系统中删除文件是标记删除,而垃圾收集任务会异步并发删除文件。
对象存储(Cloud Object Storage,COS):对象存储是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。
生命周期(Life Cycle)任务:对象存储支持基于对象的生命周期配置,其可以让符合规则的对象在指定的条件下自动执行一些操作。例如针对近期没有访问过的对象进行降冷,删除操作等。
清单(Inventory)任务:清单任务是一种帮助用户管理对象的功能。对象存储可根据用户的清单任务配置,每天或者每周定时扫描用户使用空间内指定的对象或拥有相同对象前缀的对象,并输出一份清单报告,以 CSV 格式的文件存储到用户指定的存储桶中。文件中会列出存储的对象及其对应的元数据,并根据用户的配置信息,记录用户所需的对象属性信息。
有向无环图(Directed Acyclic Graph,DAG):如果一个有向图从任意顶点出发无法经过若干条边回到该点,则这个图是一个有向无环图。任何有向树均为有向无环图。
JS对象简谱(JavaScript Object Notatio,JSON):是一种轻量级的数据交换格式,包含六个构造字符、字符串、数字和三个字面名。易于人阅读和编写,可以在多种语言之间进行数据交换。同时也易于机器解析和生成。
Raft协议:一种实现分布式共识的协议,使分布式架构中的集群整体状态达成一致的协议。Raft 协议解决的核心问题是分布式共识问题,常应用于分布式架构中。该协议允许存储一部分节点的服务器宕机后,集群仍可正常工作,先前通过的议案仍可访问,集群状态仍维持一致。
图1示出了根据本申请的一些实施例的任务调度方法的示例性应用场景100。应用场景100中可以包括客户端101、网络102、服务单元103、任务日程104、服务器集群105,服务单元103通过网络102与客户端101和任务日程104通信地耦合在一起,并可以与服务器集群105通信。在该实施例中任务日程104被单独示出,但这不是限制性的,还可以存在于服务单元103中或客户端101中,作为本地文件。
在该实施例中,服务单元103是本申请的任务调度方法的执行主体,服务器集群105是执行目标任务的执行主体,受服务单元103的管理。
在该实施例中,服务单元103获取目标任务和当前资源信息,其中目标任务包括多个类别的分任务,多个类别的分任务之间具有关联关系,每个类别的分任务具有相应的任务优先级、最大并发数和环境组件,最大并发数指示相应类别的分任务被执行的个数,环境组件表示相应类别的分任务的执行环境,当前资源信息指示用于执行目标任务的当前资源。具体地,客户端101通过网络102来获取任务日程104或者修改任务日程104,例如在任务日程104中添加新的任务。服务单元103可以通过网络102来获取任务日程104从而获取目标任务。当前资源信息反映的是服务器集群105中的资源信息。网络102例如可以是广域网(WAN)、局域网(LAN)、无线网络、公用电话网、内联网以及本领域的技术人员熟知的任何其它类型的网络。
然后服务单元103根据各个类别的分任务之间的关联关系,确定多个类别的分任务中类别间的数据流动方向,类别间的数据流动方向指示各个类别的分任务的输入数据的来源和输出数据的去向。该类别间的数据流动方向是服务单元103后续确定每个分任务在服务器集群105中的数据存储地址的重要依据。
接下来服务单元103根据多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定各个分任务的执行顺序。在确定各个分任务的执行顺序后,服务单元103可以在服务器集群105中指定各个分任务的输入数据的存储地址和输出数据的存储地址。服务单元103无需关注任何其他组件配置。
最后服务单元103根据各个分任务的执行顺序和当前资源信息,利用相应类别的分任务的执行环境,执行各个分任务,从而完成目标任务。执行各个分任务时,服务单元103可以根据当前资源信息将目前要执行的分任务分配给服务器集群105中的空闲服务器来执行,而不在服务单元103上执行。例如在空闲服务器中建立相应的执行环境来执行该分任务。
在图1所示的应用场景中,根据本申请的一些实施例的任务调度方法在服务单元103上实施,但这仅仅是示意性的而非限制性的,根据本申请的一些实施例的任务调度方法还可以在其他具有具备充分的计算资源和计算能力的主体上实施,例如可以在具备充分的计算资源和计算能力的客户端101上实施等。当然,也可以部分在服务单元103上实施,部分在客户端101上实施,这不是限制性的。
本领域普通技术人员所理解的,服务单元103和服务器集群105的实例可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
客户端101可以是任何类型的移动计算设备,包括移动计算机(例如,个人数字助理(PDA)、膝上型计算机、笔记本计算机、平板计算机、上网本等)、移动电话(例如,蜂窝电话、智能手机等)、可穿戴式计算设备(例如智能手表、头戴式设备,包括智能眼镜等)或其他类型的移动设备。在一些实施例中,客户端101也可以是固定式计算设备,例如台式计算机、游戏机、智能电视等。此外,在应用场景100包括多个客户端101的情况下,该多个客户端101可以是相同或不同类型的计算设备。
如图1所示,客户端101可以包括显示屏以及可以经由显示屏与终端用户交互的终端应用。终端应用可以为本地应用程序、网页(Web)应用程序或者作为轻量化应用的小程序(Lite App,例如手机小程序、微信小程序)。在终端应用为需要安装的本地应用程序的情况下,可以将终端应用安装在客户端101。在终端应用为Web应用程序的情况下,可以通过浏览器访问终端应用。在终端应用为小程序的情况下,可以通过搜索终端应用的相关信息(如终端应用的名称等)、扫描终端应用的图形码(如条形码、二维码等)等方式来在客户端101上直接打开终端应用,而无需安装终端应用。
图2是根据本申请的一些实施例的任务调度方法的流程图。所示方法200可以在服务单元(例如可以在图1所示的服务单元103)上实施。在一些实施例中,在客户端101具备充分的计算资源和计算能力的情况下,可以直接在客户端101上执行根据本申请的一些实施例的任务调度方法。在另一些实施例中,根据本申请的一些实施例的任务调度方法也可以由服务单元103、客户端101相组合地执行。如图2所示,根据本申请一些实施例的任务调度方法可以包括步骤S201-S204。
在步骤S201中,获取目标任务和当前资源信息,其中目标任务包括多个类别的分任务,多个类别的分任务之间具有关联关系,每个类别的分任务具有相应的任务优先级、最大并发数和环境组件,最大并发数指示相应类别的分任务被执行的个数,环境组件表示相应类别的分任务的执行环境,当前资源信息指示用于执行目标任务的当前资源。应当指出,目标任务和当前资源信息可以同时被获取,也可以在不同的时刻被获取,两者相互独立,本申请在此不做限定。并且在一些实施例中,先获取目标任务再获取当前资源信息。
常见的目标任务的类型例如可以是垃圾收集任务、生命周期任务、清单任务等,在本申请的各个实施例中,作为示例,以垃圾收集任务作为目标任务进行阐释。在该实施例中,可以从客户端直接获取目标任务,也可以从预定的任务日程中获取目标任务。该目标任务可以包括(即,划分为)多个类别的分任务,因此这些类别的分任务之间具有关联关系,这些关联关系是目标任务的任务描绘中预先确定的。任务描绘指具体描述目标任务的详细信息的内容。例如,可以在任务描绘中通过数组这一数据结构来表示不同类别的分任务之间的关联关系。每个类别的分任务包括预定个数的分任务,所述预定个数等于该类别的分任务的相应最大并发数。例如,如果delete-inode类别的分任务的最大并发数是5,这意味着总共有5个delete-inode类别的分任务需要被执行。另外,因为在该实施例中,各个类别的分任务相应的执行环境是临时建立的,所以每个类别的分任务需要明确自身相应的环境组件,例如通过标明环境组件的索引的方式来明确,这样在后续执行该类别的分任务中的一个分任务时,可以根据该环境组件的索引来建立相应的执行环境,从而执行该类别的分任务中的一个分任务。作为示例,环境组件的索引可以是基于K8s的执行环境的镜像地址。对于当前资源信息,这些资源是指可用于执行分任务的资源,例如空闲内存的大小、可使用的处理器的数量等。
在步骤S202中,根据各个类别的分任务之间的关联关系,确定多个类别的分任务中类别间的数据流动方向,数据流动方向指示各个类别的分任务的输入数据的来源和输出数据的去向。
由于不同类别的分任务用于完成不同的目标,各个类别的分任务之间具有确定的关联关系,需要将这种关联关系清楚地确定出来,才能够实现合乎任务逻辑的调度,否则任务的调度可能陷入死锁,导致目标任务无法完成。这里的死锁是指例如第一分任务需要第二分任务的输出结果才能执行,而该第二分任务的执行顺序低于该第一分任务,导致这两个分任务都不能被执行,任务的调度出现了错误。在步骤S202中,通过确定多个类别的分任务中类别间的数据流动方向来清楚地确定各个类别的分任务之间的关联关系,为后续任务调度的完整实现提供了必要的逻辑支持。
在步骤S203中,根据多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定各个分任务的执行顺序。基于该类别间的数据流动方向,可以确保各个类别的分任务的正确的执行顺序,然后可以根据与执行顺序有关的另外两个因素——任务优先级和最大并发数——来确定各个分任务的具体执行顺序。
在步骤S204中,根据各个分任务的执行顺序和当前资源信息,利用相应类别的分任务的执行环境,执行各个分任务,从而完成目标任务。这里利用的执行环境可以根据该类别的分任务的相应的环境组件而建立。在一些实施例中,执行环境可以是按照环境组件的索引,根据容器管理平台TKE建立的基于K8s的Pod执行环境,该Pod执行环境可以利用一个或多个容器来实现。
在根据本公开的实施例的任务调度方法中,首先实现了与Hadoop分布式框架的完全解耦,不需要限定于任何Hadoop分布式框架的组件的配合,所以只需要明确目标任务的分任务之间的关联关系和分任务的最大并发数、分任务的优先级,无需配置其他信息,具有极低的使用成本;其次,每个类别的分任务具有相应的环境组件,这意味着可以临时建立执行环境来执行分任务,并在执行结束后删除该执行环境,因此具有很高的动态扩缩容的性能,降低了资源的成本;最后,通过先确定类别间的数据流动方向,再确定各个分任务具体的执行顺序,使得仅需要关注分任务之间的数据的输入和输出即可实现各个任务的调度,这可以显著降低任务的调度成本,同时保证大量任务的高效执行。
关于获取目标任务,在一些实施例中,该过程具体包括:首先获取任务日程,该任务日程指示至少一个任务的执行时间;然后响应于到达至少一个任务中的一个任务的执行时间,获取该一个任务作为目标任务。该任务日程即是图1所示的任务日程104,可以被客户端修改、添加、删除、查看,该任务日程可以被存储在数据库中,每个任务具有任务名称和任务描绘的索引。为了确保任务能够得到及时执行,可以实时检测数据库中的该任务日程。在根据任务日程确定要执行的目标任务后,根据任务描绘的索引来下载该目标任务的任务描绘。
在一些实施例中,每个目标任务还具有任务优先级,在选择所获取的目标任务时,需要响应于到达多个任务的执行时间,根据各个任务的任务优先级确定要获取的任务。这样可以确保具有较高任务优先级的任务得到较先完成。
表1是根据本申请的一些实施例的任务日程中每个任务的信息配置:
表1
编号 | 名称 | 类型 | 描述 | 注释 |
1 | id | bigint(20) | 任务标识 | / |
2 | type | tinyint(10) | 任务类型 | 垃圾收集任务等 |
3 | cron_str | varchar(511) | 触发时间 | / |
4 | priority | int(11) | 任务优先级 | / |
其中id是任务的标识,type用于表示任务类型,cron_str则用于确定触发任务的时间,例如每天上午8点,priority用于设置任务优先级。
基于表1所示的信息配置下,下面介绍被撰写成JSON文件的目标任务的任务描绘的示例。
"graph":{
"name":"gc",
"priority":100,
"cron-str":"8:00",
"jobs":[{
"name":"list-fs",
"level":0,
"concurrent-max":1,
"image":"csighub.tencentyun/list-fs-worker:v1",
},
{
"name":"list-inode",
"level":1,
"concurrent-max":2,
"image":"csighub.tencentyun/list-inode-worker:v1",
"cluster":{
"cpu-limit":"100m",
"mem-limit":"64Mi"
}
},
{
"name":"delete-inode",
"level":2,
"concurrent-max":4,
"image":"csighub.tencentyun/delete-inode-worker",
}
],
"dependence":{
"list-fs":["list-inode"],
"list-inode:["delete-inode]
}
}
在该JSON文件中,任务描绘的解析过程如下:graph表示该目标任务对象,该目标任务类型(即type)为“gc”,即垃圾收集任务,目标任务的任务优先级为100,任务执行时间为8点整。“jobs”结构中列出了该目标任务所包括的各个类别的分任务和它们之间的关联关系。该垃圾收集任务共包括三个类别的分任务,分别是list-fs、list-inode、delete-inode,其任务优先级分别是0、1、2;最大并发度“concurrent-max”分别是1、2、4;各个类别的分任务的“image”字段明确了各自的环境组件的索引。在垃圾收集任务中,list-fs类别的分任务的内容为获取目标文件,list-inode类别的分任务的内容为从目标文件中获取被标记删除的文件,delete-inode类别的分任务的内容为根据被标记删除的文件删除底层Block数据。“dependence”结构中以数组的方式示出了各个类别的分任务之间的关联关系,其中list-fs类别的分任务是list-inode类别的分任务的父任务,list-inode类别的分任务是delete-inode类别的分任务的父任务。另外,list-inode类别的分任务限定了必要的资源:内存最低100兆,存储空间最低64兆,也就是说每执行一个list-inode类别的分任务,至少需要提供100兆内存和64兆存储空间。使用这样简洁的任务描绘即可完成对目标任务的完整描绘,所以使用成本很低。而之所以能够使用如此简洁的任务描绘,部分在于本申请的任务调度方法与Hadoop分布式框架的解耦。
在一些实施例中,根据各个类别的分任务之间的关联关系,确定多个类别的分任务中类别间的数据流动方向,包括:对于多个类别的分任务中存在直接关联关系的每两个类别的分任务,响应于两个类别的分任务中的第一类别的分任务是第二类别的分任务的父任务,将第一类别的分任务的输出数据的去向确定为第二类别的分任务,第二类别的分任务的输入数据的来源确定为第一类别的分任务。各个分任务要么具有直接关联关系,要么具有间接关联关系。直接关联关系就是指两个分任务之间存在父子关系,这里体现了两个分任务执行上的逻辑关系,是必须要确定和遵守的规则。而间接关系是指两个分任务具有一个共同的父任务,彼此的执行不以彼此的输出数据为依赖,因此可以相对独立地执行或者并发执行。在该实施例中,只需要确定各个类别的分任务的直接关联关系就可以确定各个类别的分任务的输入数据的来源和输出数据的去向。
在确定多个类别的分任务中类别间的数据流动方向后,可以容易地确定各个分任务的执行顺序。图3是根据本申请的一些实施例的确定各个分任务的执行顺序的流程图。在该实施例中,根据多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定各个分任务的执行顺序,包括步骤S301-303。
在步骤S301,根据多个类别的分任务以及各个类别的分任务之间的数据流动方向,建立基础有向无环图,其中基础有向无环图的节点表示分任务的类别,基础有向无环图的边表示连接的两个类别的分任务之间的数据流动方向。值得注意的是,该基础有向无环图的节点并非最终要执行的一个分任务,而是指示分任务的类别,具体执行数量取决于该类别的分任务的最大并发数。
图4是基于本申请的一些实施例的任务描绘的基础有向无环图的示意图。在前述采用JSON文件的目标任务的任务描绘的实施例中,目标任务为垃圾收集任务,三个类别的分任务分别是list-fs、list-inode、delete-inode,因此该基础有向无环图包括三个节点。并且list-fs类别的分任务是list-inode类别的分任务的父任务,list-inode类别的分任务是delete-inode类别的分任务的父任务,因此list-fs节点与list-inode节点之间的边指向list-inode节点,list-inode节点与delete-inode节点之间的边指向delete-inode节点。
在步骤S302,根据基础有向无环图和各个类别的分任务的最大并发数,确定执行有向无环图,其中执行有向无环图的节点表示分任务,执行有向无环图的边表示连接的两个分任务之间的数据流动方向。在确定了指示类别间数据流动方向的基础有向无环图后,可以直接根据各个类别的分任务的最大并发数确定完整的执行有向无环图。在最大并发数大于1的情况下,该类别的分任务虽然需要被执行多个,但是该类别的分任务中的每个分任务的输入数据是相同的,所以在确定执行有向无环图时,每个分任务的输入数据的来源不必须是同一个父任务,只要是同一个类别的父任务即可,所以执行有向图的确定方式有多种。
图5是基于本申请的一些实施例的任务描绘的一个执行有向无环图的示意图。如图5所示,基于图4所示的基础有向无环图,最大并发度为1的list-fs类别的分任务被执行1个,作为执行有向无环图的根节点501,最大并发度为2的list-inode类别的分任务被执行两个,生成两个节点502和503,且父节点均为节点501,最大并发度为4的delete-inode类别的分任务被执行4个,生成四个节点504-507,其中节点504-505的父节点均为节点502,节点506-507的父节点均为节点503。
图6是基于本申请的一些实施例的任务描绘的另一个执行有向无环图的示意图。如图6所示,基于图4所示的基础有向无环图,最大并发度为1的list-fs类别的分任务被执行1个,作为执行有向无环图的根节点601,最大并发度为2的list-inode类别的分任务被执行两个,生成两个节点602和603,且父节点均为节点601,最大并发度为4的delete-inode类别的分任务被执行4个,生成两个节点604-607,其中节点604-606的父节点均为节点602,节点607的父节点为节点603。
在步骤S302,图5与图6中的执行有向无环图都是可能最终被确定的执行有向无环图。
在步骤S303,基于每个类别的分任务的任务优先级,确定执行有向无环图中各个分任务的执行顺序。在确定执行有向无环图时,可以结合各个类别的分任务的任务优先级来遍历该执行有向无环图,根据各个节点被遍历的顺序来确定各个任务的执行顺序。由于该执行有向无环图基于基础有向无环图,所以可以保证任务调度的实现,避免死锁的出现。
针对步骤S303,如果采取不同的遍历方式,可以得到不同的执行顺序。在一些实施例中,基于每个类别的分任务的任务优先级,确定执行有向无环图中各个分任务的执行顺序,包括:基于每个类别的分任务的任务优先级,根据深度优先遍历的方式来遍历执行有向无环图;根据各个节点被遍历的顺序确定各个分任务的执行顺序。在图5所示的实施例中,各个分任务的执行顺序为list-fs分任务501—>list-inode分任务502—>delete-inode分任务504—>delete-inode分任务505—>list-inode分任务503—>delete-inode分任务506—>delete-inode分任务507。
在另外一些实施例中,基于每个类别的分任务的任务优先级,确定执行有向无环图中各个分任务的执行顺序,包括:基于每个类别的分任务的任务优先级,根据广度优先遍历的方式来遍历执行有向无环图;根据各个节点被遍历的顺序确定各个分任务的执行顺序。在图5所示的实施例中,各个分任务的执行顺序为list-fs分任务501—>list-inode分任务502—>list-inode分任务503—>delete-inode分任务504—>delete-inode分任务505—>delete-inode分任务506—>delete-inode分任务507。
根据本申请的任务调度方法的实施例主要考虑各个分任务的输入和输出,因此在确定执行有向无环图后,可以继续确定各个分任务的数据存储方式。在一些实施例中,执行有向无环图的边具有数据存储路径,其中该数据存储路径存储该边连接的两个分任务中的父任务(即基于边的方向的源任务)的输出数据。在该实施例中,对于一条边所连接的两个分任务,在执行完毕其中的父任务时,输出数据直接存在该边具有的数据存储路径中,在准备执行其中的子任务时,直接从该边具有的数据存储路径中获取数据,作为输入数据。对于整个执行有向无环图的根节点分任务,则需要从外部环境或本地缓存中获取输入数据。
为了调度方便,在一些实施例中,执行有向无环图的边还具有日志表,该日志表指示边连接的两个分任务中的父任务的执行情况。这样可以随时查阅各个分任务的执行情况,提高用户体验。
根据本申请的任务调度方法还可以在执行层面进行干预,例如给出执行各个分任务所需要的指令。图7是根据本申请的一些实施例的执行一个分任务的示意图。在图7所示的实施例中,根据该一个分任务的执行顺序和当前资源信息,利用相应类别的分任务的执行环境,执行该一个分任务,包括:对于每一个被执行的分任务,根据步骤S701-S704来执行。
在步骤S701,根据当前资源信息为分任务分配资源。有了执行该分任务的资源,才能够启动该分任务的执行。这里的资源包括各种计算资源,如内存、存储空间、处理器个数等。
在步骤S702,根据分任务相应的环境组件建立相应执行环境。这里的执行环境可以是容器或基于至少一个容器的Pod执行环境。利用容器轻量级、内存占用少的特点,在任何需要执行分任务的时候动态建立执行环境,这样可以提升动态扩缩容的性能,极大提高资源的使用效率。由于容器可以从网络磁盘进行加载,因此在目标任务的任务描绘中可以提供环境组件的索引,然后根据该环境组件的索引从网络磁盘加载相应的容器。
在步骤S703,根据执行有向无环图,获取被执行的分任务的输入数据。每个分任务的输入数据都被存储在指定的存储路径中。在本申请的任务调度方法的实施例中,只需要关注数据流动方向就可以实现任务的有序执行,无需调用其他组件,例如各种Hadoop分布式框架的组件,因此分任务的执行的开始也只需要获取该分任务的输入数据就足够了。
在步骤S704,在相应执行环境中,处理输入数据,以得到输出数据。根据分任务的类别,提供不同的处理指令来处理输入数据,这些处理指令都适应于该执行环境,能够在该执行环境上运行。
针对步骤S704,在一些实施例中,输入数据包括至少一个待处理对象,每个待处理对象具有处理优先级;并且在相应执行环境中,处理输入数据,包括:按照至少一个待处理对象的处理优先级来处理所述至少一个待处理对象。
“对象”是本申请对各个分任务的所要处理的基本单元的统称,根据目标任务的类别,“对象”可以是一个具体的文件还可以是软件程序中的一个实例等。在垃圾收集任务中,一个对象指一个文件,因此各个分任务的输入数据可以是至少一个待处理对象。这些对象是从外部环境获取的,也可以是提前从外部环境获取然后在本地缓存的。这些对象可以被外部环境预先设定有不同的处理优先级。根据本申请的任务调度方法的各个实施例均可以结合各个对象的处理优先级来处理这些待处理对象,从而满足外部环境的需求,提高用户体验。作为示例,在执行一个delete-inode类别的分任务时,所获取的输入数据可以是其执行有向无环图中的父任务所处理得到的100个文件,其中编号50的文件的优先级最高,那么在执行这一个delete-inode类别的分任务时,先删除编号50的文件的底层数据。
图8是根据本申请的一些实施例的任务调度方法的示例性架构的示意图。在该实施例中,根据本申请的任务调度方法的架构可以这样设计的:
网关802-804为客户端801提供到数据库805的接口,供客户端801访问数据库805,数据库805中存有任务日程,从而可以对数据库805中的任务日程进行增、删、改、查操作。网关802-804还为客户端801提供到任务管理端806-808的接口,供客户端直接配置任务管理端806-808。其中任务管理端806-808之间根据Raft协议进行主从转换和备份,从而提高任务管理端的容灾能力。
任务管理端806包括触发器809和调度器810,其中触发器809用于从数据库805中获取任务日程并从中确定目标任务,然后根据目标任务在任务日程中提供的索引从COS中下载相应的任务描绘并进行解析,解析完毕后生成基础有向无环图。触发器809将该基础有向无环图传送给调度器810,调度器810基于当前资源信息,按照根据本申请的一些实施例的任务调度方法来确定各个分任务的执行顺序,得到分任务的执行队列811。如图8所示,执行队列811包括分任务812-814。该当前资源信息由工作服务器集群815从TKE 819中获取,并传送给调度器810。此外,调度器810还需要根据最先执行的分任务(即基础有向无环图或执行有向无环图的根节点分任务)来从对象存储器825中获取对象,作为最先执行的分任务的输入数据。
执行分任务的工作由工作服务器集群815来完成。工作服务器集群815包括工作服务器816-818,工作服务器816是主工作服务器,工作服务器816-818采用Raft协议进行主从转换和备份,从而提高任务管理端的容灾能力。由于TKE 819中包括可用的资源,工作服务器816在获取分任务812后,可以根据相应的环境组件在TKE 819中建立执行环境,并通过TKE 819的接口来编码分任务820的执行指令,该执行指令取决于分任务812的类别和执行环境。然后TKE 819在所建立的执行环境中,根据该分任务的父任务的数据存储路径从COS824中获取输入数据,然后依照分任务812相应的执行指令来执行分任务812,并将分任务的执行情况(例如成功、失败、暂停等情况)存储至该分任务作为父任务所对应的边的日志表在COS 824中的存储地址,如果分任务执行成功,还将根据该分任务作为父任务所对应的边的数据存储路径,把输出数据存储到COS 824中。按照各个分任务的执行顺序,执行完分任务820后,根据当前资源信息并发或顺序执行分任务813-814等。在各个分任务的执行过程中,任务管理端806可以将各个分任务的执行情况存储在数据库805中供用户查阅。
图9是根据图8所示的任务调度方法的示例性架构的任务调度流程图,该流程图包括任务管理端806和工作服务器集群815共同的流程。
在901处开始后,任务管理端806先从数据库903获取任务日程902并从中获取目标任务,可以稍后再获取当前资源信息。然后在904处解析目标任务的任务描绘,根据各个类别的分任务之间的关联关系在905处生成基础有向无环图。此时可以先获取当前资源信息906以及根据基础有向无环图的根节点分任务获取根节点分任务的待处理对象907,然后调度器810在908处生成执行有向无环图,并在生成成功后将该执行有向无环图记录在数据库903中。接下来在909处遍历执行有向无环图,在遍历过程中,在910处执行和检测分任务,为了充分利用资源,在当前资源允许的情况下,尽可能多地并发执行分任务,如果遍历完成一个分任务,则将该分任务的执行结果记录在数据库903中,以供用户查阅,并在911处判断该有向无环图中的所有分任务是否成功记录到数据库。如果没有遍历完成,则继续执行和检测分任务910。如果在911处是否成功记录到数据库的判断为否(即N),则检查909处的执行有向无环图的遍历情况并继续遍历;如果在911处是否成功记录到数据库的判断为是(即Y),则在912处结束任务调度过程。
下面将阐释图8所示的任务调度方法的架构的局部架构的细节信息。图10是根据本申请的实施例的局部架构的示意图。用户1001可以编写任务描绘1004并存储在COS 1005中,同时通过接口相应地更新数据库1002中的任务日程。触发器1003从数据库1002中的任务日程获取此时应该执行的目标任务,然后根据该目标任务的索引到COS 1005中获取相应的任务描绘,并根据该任务描绘中各个类别的分任务之间的关联关系确定各个类别的分任务之间的类别间的数据流动方向,根据该类别间的数据流动方向确定各个类别的分任务的基础有向无环图。最后将该基础有向无环图传送给调度器1006,以生成执行有向无环图。
图11是根据图8所示的任务调度方法的架构中调度器的调度流程图,该调度流程发生在获取目标任务的基础有向无环图之后。如图11所示,调度器1101根据该基础有向无环图中根节点分任务从对象存储器1103(如COS)中获取该根节点分任务的待处理对象,从工作服务器1102中获取当前资源信息1107。所获取的目标任务可以是垃圾收集任务1104、清单任务1105、生命周期任务1106等,以垃圾收集任务1104为例,调度器可以根据基础有向无环图中各个类别的分任务的任务优先级确定分配给各个类别的分任务的资源。例如在包括三个类别的分任务的垃圾收集任务1104中,可以为任务优先级最高的list-fs类别的分任务分配50%的当前资源,为任务优先级最低的delete-inode类别的分任务分配20%的当前资源,剩下的30%的当前资源分配给任务优先级中等的list-inode类别的分任务。然后获取各个类别的分任务的最高并发度1108,并基于此确定执行有向无环图1109。其中最先执行的分任务是执行有向无环图1109中根节点分任务,获取该根节点分任务的输入数据1110从而驱动各个分任务的执行。例如基础有向无环图中根节点分任务1112的最大并发度为2,则在执行有向无环图1109中有两个根节点分任务被执行,分别是并发分任务1113和并发分任务1114,执行这两个分任务所使用的资源是所分配资源1115。最后基于当前资源信息在1111处遍历执行有向图从而执行其他分任务,当在1111处遍历执行有向图结束时,任务调度过程则结束。
在一些实施例中,执行有向无环图的节点的数据结构可以按照表2的配置信息来设置:
表2
编号 | 名称 | 类型 | 描述 |
1 | id | bigint(20) | 本节点任务的标识 |
2 | pid | varchar(255) | 父节点任务的标识 |
3 | level | tinyint(4) | 节点所在层级 |
4 | priority | tinyint(4) | 任务优先级 |
5 | status | tinyint(3) | 0:创建,1: 实例化,2: 运行中,3:完成 |
6 | result | tinyint(3) | 0: 成功,1:失败,2:取消 |
7 | container_name | varchar(255) | 容器名称 |
执行有向无环图的边的数据结构可以按照表3的配置信息来设置:
表3
编号 | 名称 | 类型 | 描述 |
1 | id | bigint(20) | 边标识 |
2 | pid | bigint(20) | 源任务标识 |
3 | cid | bigint(20) | 目的任务标识 |
4 | middle_path | varchar(255) | 数据存储路径 |
表3中的源任务指该边所连接的两个分任务中的父任务,目的任务指该边所连接的两个分任务中的子任务。数据存储路径middle_path中存储源任务的输出数据。
图12是根据本申请的一些实施例的数据存储中的存储结构的示意图。如图12所示,数据存储路径1201由两部分构成,第一部分是文件目录1202,其中记录各个数据文件的存储索引,根据该文件目录1202,可以快捷地找到对应的数据文件。第二部分是各个数据文件,包括数据文件1203-1204,数据文件中存储对象信息,例如在垃圾收集任务中,一个数据文件存储每次处理过的一个文件。通过设置文件目录1202,可以提高获取数据的效率,减少分任务的执行时间。
如前面实施例所述,执行有向无环图的边可以具有相应的日志表。图13是根据本申请的一些实施例的基础有向无环图。如图13所示,各个类别的分任务之间的类别间的数据流动方向是:根节点分任务1301—>分任务A 1302和分任务B 1304、分任务A 1302—>分任务C 1303。其中分任务A 1302和分任务C 1303的最大并发度为2,根节点分任务和分任务B 1304的最大并发度为1。
图14是图13所示的任务调度方法的实施例的日志表的示意图。先根据各个分任务的任务优先级、最大并发度、类别间的数据流动方向确定执行有向无环图。其中执行有向无环图的节点层1401包括一个根节点分任务,执行有向无环图还包括中间层1402,中间层1402对应于涉及根节点的各个边,包括日志表1-3,均用于记录根节点分任务的执行情况,例如对于垃圾收集任务,日志表1-3记录根节点分任务已经处理了多少个对象,根节点分任务是否成功执行完毕等跟执行情况相关的信息。类似地,中间层1404的日志表4-5分别用于记录节点层1403的两个分任务A的执行情况。根据该执行情况,可以确定是否驱动节点层1405的两个分任务C的执行。例如,如果日志表4显示相应的分任务A执行完毕,则节点层1405上方的分任务C可以开始执行了。
图15是根据本申请的一些实施例的执行分任务的示意图,是对步骤S204的具体实现方式,主要由图8所示的工作服务器集群815来完成。在确定各个分任务的执行顺序后,建立分任务并发池1501,该分任务并发池1501中存放当前资源所允许的所有能够并发的分任务。执行过程中,可以为每个分任务分配单独的线程来执行,该线程利用容器管理平台的接口1508来建立执行环境并确定相应分任务的执行指令,使得该分任务1502-1504可以在容器管理平台中在执行程序1505-1507中被执行,其中每个分任务对应于一个执行程序,该执行程序可以使用任何编码语言来编写。
图16是根据本申请的一些实施例的任务调度装置1600的示例性结构框图。该装置1600包括:获取模块1601、第一确定模块1602、第二确定模块1603、执行模块1604。获取模块1601被配置为获取目标任务和当前资源信息,其中所述目标任务包括多个类别的分任务,所述多个类别的分任务之间具有关联关系,每个类别的分任务具有相应的任务优先级、最大并发数和环境组件,所述最大并发数指示相应类别的分任务被执行的个数,所述环境组件表示相应类别的分任务的执行环境,所述当前资源信息指示用于执行所述目标任务的当前资源。第一确定模块1602被配置为根据各个类别的分任务之间的所述关联关系,确定所述多个类别的分任务中类别间的数据流动方向,所述数据流动方向指示各个类别的分任务的输入数据的来源和输出数据的去向。第二确定模块1603被配置为根据所述多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定所述各个分任务的执行顺序。执行模块1604配置为根据所述各个分任务的执行顺序和所述当前资源信息,利用相应类别的分任务的执行环境,执行所述各个分任务,从而完成所述目标任务。
应注意,上述各种模块可以以软件或硬件或两者的组合来实现。多个不同模块可以在同一软件或硬件结构中实现,或者一个模块可以由多个不同的软件或硬件结构实现。
根据本申请一些实施例的任务调度装置中,首先实现了与Hadoop分布式框架的完全解耦,不需要限定于任何Hadoop分布式框架的组件的配合,所以只需要明确目标任务的分任务之间的关联关系和分任务的最大并发数、分任务的优先级,无需配置其他信息,具有极低的使用成本;其次,每个类别的分任务具有相应的环境组件,这意味着可以临时建立执行环境来执行分任务,并在执行结束后删除该执行环境,因此具有很高的动态扩缩容的性能,降低了资源的成本;最后,通过先确定类别间的数据流动方向,再确定各个分任务具体的执行顺序,使得仅需要关注分任务之间的数据的输入和输出即可实现各个任务的调度,这可以显著降低任务的调度成本,同时保证大量任务的高效执行。
图17图示了示例系统1700,其包括代表可以实现本文描述的各种方法的一个或多个系统和/或设备的示例计算设备1710。计算设备1710可以是例如服务提供商的服务器、与服务器相关联的设备、片上系统、和/或任何其它合适的计算设备或计算系统。上面参照图16描述的任务调度装置1600可以采取计算设备1710的形式。替换地,任务调度装置1600可以以应用1716的形式被实现为计算机程序。
如图示的示例计算设备1710包括彼此通信耦合的处理系统1711、一个或多个计算机可读介质1712以及一个或多个I/O接口1713。尽管未示出,但是计算设备1710还可以包括系统总线或其他数据和命令传送系统,其将各种组件彼此耦合。系统总线可以包括不同总线结构的任何一个或组合,总线结构诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。还构思了各种其他示例,诸如控制和数据线。
处理系统1711代表使用硬件执行一个或多个操作的功能。因此,处理系统1711被图示为包括可被配置成处理器、功能块等的硬件元件1714。这可以包括在硬件中实现为专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件1714不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质1712被图示为包括存储器/存储装置1715。存储器/存储装置1715表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置1715可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置1715可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质1712可以以下面进一步描述的各种其他方式进行配置。
一个或多个I/O接口1713代表允许用户使用各种输入设备向计算设备1710输入命令和信息并且可选地还允许使用各种输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置成检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)等等。输出设备的示例包括显示设备、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备1710可以以下面进一步描述的各种方式进行配置以支持用户交互。
计算设备1710还包括应用1716。应用1716可以例如是任务调度装置1600的软件实例,并且与计算设备1710中的其他元件相组合地实现本文描述的技术。
本申请提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算设备执行上述各种可选实现方式中提供的任务调度方法。
本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”,“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备1710访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
“计算机可读信号介质”是指被配置成诸如经由网络将指令发送到计算设备1710的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。术语“调制数据信号”是指这样的信号,该信号的特征中的一个或多个被设置或改变,从而将信息编码到该信号中。作为示例而非限制,通信介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其它无线介质的无线介质。
如前,硬件元件1714和计算机可读介质1712代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
前述的组合也可以用于实现本文的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件1714体现的一个或多个指令和/或逻辑。计算设备1710可以被配置成实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件1714,可以至少部分地以硬件来实现将模块实现为可由计算设备1710作为软件执行的模块。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备1710和/或处理系统1011)可执行/可操作以实现本文所述的技术、模块和示例。
在各种实施方式中,计算设备1710可以采用各种不同的配置。例如,计算设备1710可以被实现为包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等的计算机类设备。计算设备1710还可以被实现为包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备的移动装置类设备。计算设备1710还可以实现为电视类设备,其包括具有或连接到休闲观看环境中的一般地较大屏幕的设备。这些设备包括电视、机顶盒、游戏机等。
本文描述的技术可以由计算设备1710的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。功能还可以通过使用分布式系统、诸如通过如下所述的平台1722而在“云”1720上全部或部分地实现。
云1720包括和/或代表用于资源1724的平台1722。平台1722抽象云1720的硬件(例如,服务器)和软件资源的底层功能。资源1724可以包括在远离计算设备1710的服务器上执行计算机处理时可以使用的应用和/或数据。资源1724还可以包括通过因特网和/或通过诸如蜂窝或Wi-Fi网络的订户网络提供的服务。
平台1722可以抽象资源和功能以将计算设备1710与其他计算设备连接。平台1722还可以用于抽象资源的分级以提供遇到的对于经由平台1722实现的资源1724的需求的相应水平的分级。因此,在互连设备实施例中,本文描述的功能的实现可以分布在整个系统1700内。例如,功能可以部分地在计算设备1710上以及通过抽象云1720的功能的平台1722来实现。
应当理解,为清楚起见,参考不同的功能单元对本申请的实施例进行了描述。然而,将明显的是,在不偏离本申请的情况下,每个功能单元的功能性可以被实施在单个单元中、实施在多个单元中或作为其它功能单元的一部分被实施。例如,被说明成由单个单元执行的功能性可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能性的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本申请可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
尽管已经结合一些实施例描述了本申请,但是其不旨在被限于在本文中所阐述的特定形式。相反,本申请的范围仅由所附权利要求来限制。附加地,尽管单独的特征可以被包括在不同的权利要求中,但是这些可以可能地被有利地组合,并且包括在不同权利要求中不暗示特征的组合不是可行的和/或有利的。特征在权利要求中的次序不暗示特征必须以其工作的任何特定次序。此外,在权利要求中,词“包括”不排除其它元件,并且术语“一”或“一个”不排除多个。权利要求中的附图标记仅作为明确的例子被提供,不应该被解释为以任何方式限制权利要求的范围。
Claims (15)
1.一种任务调度方法,包括:
获取目标任务和当前资源信息,其中所述目标任务包括多个类别的分任务,所述多个类别的分任务之间具有关联关系,每个类别的分任务具有相应的任务优先级、最大并发数和环境组件,所述最大并发数指示相应类别的分任务被执行的个数,所述环境组件表示相应类别的分任务的执行环境,所述当前资源信息指示用于执行所述目标任务的当前资源;
根据各个类别的分任务之间的所述关联关系,确定所述多个类别的分任务中类别间的数据流动方向,所述数据流动方向指示各个类别的分任务的输入数据的来源和输出数据的去向;
根据所述多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定所述各个分任务的执行顺序;
根据所述各个分任务的执行顺序和所述当前资源信息,利用相应类别的分任务的执行环境,执行所述各个分任务,从而完成所述目标任务。
2.根据权利要求1所述的方法,其中所述根据各个类别的分任务之间的所述关联关系,确定所述多个类别的分任务中类别间的数据流动方向,包括:
对于所述多个类别的分任务中存在直接关联关系的每两个类别的分任务,响应于所述两个类别的分任务中的第一类别的分任务是第二类别的分任务的父任务,将所述第一类别的分任务的输出数据的去向确定为所述第二类别的分任务,所述第二类别的分任务的输入数据的来源确定为所述第一类别的分任务。
3.根据权利要求2所述的方法,其中所述根据所述多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定所述各个分任务的执行顺序,包括:
根据所述多个类别的分任务以及各个类别的分任务之间的数据流动方向,建立基础有向无环图,其中所述基础有向无环图的节点表示分任务的类别,所述基础有向无环图的边表示连接的两个类别的分任务之间的数据流动方向;
根据所述基础有向无环图和各个类别的分任务的最大并发数,确定执行有向无环图,其中所述执行有向无环图的节点表示分任务,所述执行有向无环图的边表示连接的两个分任务之间的数据流动方向;
基于每个类别的分任务的任务优先级,确定所述执行有向无环图中各个分任务的执行顺序。
4.根据权利要求3所述的方法,其中所述基于每个类别的分任务的任务优先级,确定所述执行有向无环图中各个分任务的执行顺序,包括:
基于每个类别的分任务的任务优先级,根据深度优先遍历的方式来遍历所述执行有向无环图;
根据各个节点被遍历的顺序确定各个分任务的执行顺序。
5.根据权利要求3所述的方法,其中所述基于每个类别的分任务的任务优先级,确定所述执行有向无环图中各个分任务的执行顺序,包括:
基于每个类别的分任务的任务优先级,根据广度优先遍历的方式来遍历所述执行有向无环图;
根据各个节点被遍历的顺序确定各个分任务的执行顺序。
6.根据权利要求3所述的方法,其中所述执行有向无环图的边具有数据存储路径,其中所述数据存储路径存储所述边连接的两个分任务中的父任务的输出数据。
7.根据权利要求6所述的方法,其中所述执行有向无环图的边还具有日志表,所述日志表指示所述边连接的两个分任务中的父任务的执行情况。
8.根据权利要求3所述的方法,其中所述根据所述各个分任务的执行顺序和所述当前资源信息,利用相应类别的分任务的执行环境,执行所述各个分任务,包括:
对于每一个被执行的分任务:
根据所述当前资源信息为所述分任务分配资源;
根据所述分任务相应的环境组件建立相应执行环境;
根据所述执行有向无环图,获取所述被执行的分任务的输入数据;
在所述相应执行环境中,处理所述输入数据,以得到输出数据。
9.根据权利要求8所述的方法,其中所述输入数据包括至少一个待处理对象,每个待处理对象具有处理优先级;
并且所述在所述相应执行环境中,处理所述输入数据,包括:
按照所述至少一个待处理对象的处理优先级来处理所述至少一个待处理对象。
10.根据权利要求1所述的方法,其中所述获取目标任务,包括:
获取任务日程,所述任务日程指示至少一个任务的执行时间;
响应于到达所述至少一个任务中的一个任务的执行时间,获取所述一个任务作为所述目标任务。
11.根据权利要求10所述的方法,其中每个目标任务还具有任务优先级,并且所述方法还包括:
响应于到达多个任务的执行时间,根据所述各个任务的任务优先级确定要获取的任务。
12.一种任务调度装置,包括:
获取模块,配置为获取目标任务和当前资源信息,其中所述目标任务包括多个类别的分任务,所述多个类别的分任务之间具有关联关系,每个类别的分任务具有相应的任务优先级、最大并发数和环境组件,所述最大并发数指示相应类别的分任务被执行的个数,所述环境组件表示相应类别的分任务的执行环境,所述当前资源信息指示用于执行所述目标任务的当前资源;
第一确定模块,配置为根据各个类别的分任务之间的所述关联关系,确定所述多个类别的分任务中类别间的数据流动方向,所述数据流动方向指示各个类别的分任务的输入数据的来源和输出数据的去向;
第二确定模块,配置为根据所述多个类别的分任务中类别间的数据流动方向、每个类别的分任务的任务优先级、最大并发数,确定所述各个分任务的执行顺序;
执行模块,配置为根据所述各个分任务的执行顺序和所述当前资源信息,利用相应类别的分任务的执行环境,执行所述各个分任务,从而完成所述目标任务。
13.一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1-11中任一项所述的方法的步骤。
14.一种存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1-11中任一项所述的方法的步骤。
15.一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据权利要求1至11中任一项的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211326406.XA CN118012577A (zh) | 2022-10-27 | 2022-10-27 | 任务调度方法和装置、计算设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211326406.XA CN118012577A (zh) | 2022-10-27 | 2022-10-27 | 任务调度方法和装置、计算设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118012577A true CN118012577A (zh) | 2024-05-10 |
Family
ID=90954822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211326406.XA Pending CN118012577A (zh) | 2022-10-27 | 2022-10-27 | 任务调度方法和装置、计算设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118012577A (zh) |
-
2022
- 2022-10-27 CN CN202211326406.XA patent/CN118012577A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109997126B (zh) | 事件驱动提取、变换、加载(etl)处理 | |
JP7113040B2 (ja) | 分散型データストアのバージョン化された階層型データ構造 | |
CN111801661B (zh) | 多主机分布式数据管理系统中的事务操作 | |
CN110196871B (zh) | 数据入库方法和系统 | |
US9489237B1 (en) | Dynamic tree determination for data processing | |
Deelman et al. | Data management challenges of data-intensive scientific workflows | |
Varia | Cloud architectures | |
US9740582B2 (en) | System and method of failover recovery | |
US8812627B2 (en) | System and method for installation and management of cloud-independent multi-tenant applications | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
US11860741B2 (en) | Continuous data protection | |
US8150889B1 (en) | Parallel processing framework | |
US11010401B2 (en) | Efficient snapshot generation of data tables | |
US11762654B2 (en) | Processing framework for in-system programming in a containerized environment | |
Mundkur et al. | Disco: a computing platform for large-scale data analytics | |
US20170017669A1 (en) | Database integration of originally decoupled components | |
CN112269781A (zh) | 数据生命周期管理方法、装置、介质及电子设备 | |
CN115934855A (zh) | 一种全链路字段级血缘解析方法、系统、设备及存储介质 | |
Aggarwal et al. | Small files’ problem in Hadoop: A systematic literature review | |
Goniwada et al. | Cloud native architecture and design patterns | |
CN114490509A (zh) | 跟踪改变数据捕获日志历史 | |
CN113886111A (zh) | 一种基于工作流的数据分析模型计算引擎系统及运行方法 | |
CN103577604B (zh) | 一种用于Hadoop分布式环境的图像索引结构 | |
Cai et al. | Deployment and verification of machine learning tool-chain based on kubernetes distributed clusters: This paper is submitted for possible publication in the special issue on high performance distributed computing | |
US20220391223A1 (en) | Adding expressiveness to plugin extensions using integration with operators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |