本发明涉及任务调度,尤其是涉及一种任务调度方法、装置、电子设备及介质。
背景技术:
1、apache dolphinscheduler是一个分布式易扩展的可视化dag工作流任务调度开源系统,适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。apache dolphinscheduler旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种ops编排中的关系,解决数据研发etl依赖错综复杂,无法监控任务健康状态的问题。dolphinscheduler以dag(directed acyclic graph,dag)流式方式组装任务,及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。
2、在缺省的dolphinscheduler的租户设计中,现有技术仅支持操作用户级别的租户控制,造成和云厂商对接后(云厂商一般提供一个用户认证),无法有效支持多saas应用的任务调度。
3、阿里云使用spark进行调度的前提下,spark计算集群只有一个缺省队列可供使用,阿里云的spark集群不提供创建队列、获取队列资源接口,造成上层saas应用无法有效的隔离计算资源使用。华为云可以提供多个队列定义的支持,但是在saas应用不定数量的前提下,不能满足随时创建队列并对集群资源进行有效调整(如果调整资源需要在集群端重新配置队列的计算资源并重新启动yarn集群)。
4、目前,在saas应用支持多租户的前提下,每个saas应用租户依然需要独立占用计算资源,dolphinscheduler当前阶段依然提供不了有效支持。在下发的多个周期性任务场景下,对于多个任务间的互斥支持能力不足,无法满足上层业务任务间的互斥要求。
技术实现思路
1、有鉴于此,本发明的目的在于提供一种任务调度方法、装置、电子设备及介质,能够有效支持任务间互斥,提升dolphinscheduler系统的性能。
2、为了实现上述目的,本发明实施例采用的技术方案如下:
3、第一方面,本发明实施例提供了一种任务调度方法,包括:获取任务命令列表和预先定义的任务间互斥策略,并基于任务命令列表和任务间互斥策略生成有向图;基于有向图确定任务命令列表中每个任务命令的互斥关系,并基于互斥关系生成执行命令列表;获取当前运行的任务命令实例列表,并将任务命令实例列表和执行命令列表进行计算,生成任务执行队列;其中,任务执行队列为逻辑队列。
4、在一种实施方式中,基于有向图确定任务命令列表中每个任务命令的互斥关系,并基于互斥关系生成执行命令列表,包括:基于有向图判断任务命令列表中每个任务命令是否存在邻接边;其中,如果任务命令存在邻接边,则确定邻接边连接的任务命令之间具有互斥关系;如果任务命令不存在邻接边,则将任务命令添加到执行命令列表中;如果任务命令存在邻接边,则从具有互斥关系的任务命令中选择一个任务命令添加到执行命令列表中。
5、在一种实施方式中,上述方法还包括:如果saas应用内部没有租户,则将saas应用的任务命令提交到单独的任务执行队列中;如果saas应用内部有租户,则确定saas应用的租户对应的一个或多个任务执行队列,并将任务命令提交到对应的任务执行队列中。
6、在一种实施方式中,如果saas应用的租户对应多个任务执行队列,上述方法还包括:在执行任务前,初始化任务上下文,进行任务实例化;确定saas应用的租户对应的多个任务执行队列,并对所选择的任务执行队列分配计算资源。
7、在一种实施方式中,上述方法还包括:在执行任务后,释放任务执行队列的计算资源。
8、在一种实施方式中,任务执行队列至少包括以下属性信息:cpu数、内存数、剩余cpu数和剩余内存数。
9、第二方面,本发明实施例提供了一种任务调度装置,包括:互斥控制模块,用于获取任务命令列表和预先定义的任务间互斥策略,并基于任务命令列表和任务间互斥策略生成有向图;列表生成模块,用于基于有向图确定任务命令列表中每个任务命令的互斥关系,并基于互斥关系生成执行命令列表;队列生成模块,用于获取当前运行的任务命令实例列表,并将任务命令实例列表和执行命令列表进行计算,生成任务执行队列;其中,任务执行队列为逻辑队列。
10、在一种实施方式中,列表生成模块,还用于:基于有向图判断任务命令列表中每个任务命令是否存在邻接边;其中,如果任务命令存在邻接边,则确定邻接边连接的任务命令之间具有互斥关系;如果任务命令不存在邻接边,则将任务命令添加到执行命令列表中;如果任务命令存在邻接边,则从具有互斥关系的任务命令中选择一个任务命令添加到执行命令列表中。
11、第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述第一方面提供的任一项的方法的步骤。
12、第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述第一方面提供的任一项的方法的步骤。
13、本发明实施例带来了以下有益效果:
14、本发明实施例提供的上述任务调度方法、装置、电子设备及介质,首先,获取任务命令列表和预先定义的任务间互斥策略,并基于任务命令列表和任务间互斥策略生成有向图;然后,基于有向图确定任务命令列表中每个任务命令的互斥关系,并基于互斥关系生成执行命令列表;最后,获取当前运行的任务命令实例列表,并将任务命令实例列表和执行命令列表进行计算,生成任务执行队列(任务执行队列为逻辑队列)。上述方法预先定义了任务间互斥策略,任务调度引擎可以依托任务间互斥策略定义进行任务启动调度,在获取任务命令阶段,可以根据任务间互斥策略生成有向图,仅为依据有向图将任务命令添加到执行命令列表中;在任务执行阶段,可以根据当前运行的任务命令实例列表和执行命令列表进行计算,得到最终执行的任务执行队列,从而能够有效支持任务间互斥,提升dolphinscheduler系统的性能。
15、本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
16、为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
1.一种任务调度方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,基于所述有向图确定所述任务命令列表中每个任务命令的互斥关系,并基于所述互斥关系生成执行命令列表,包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,如果所述saas应用的租户对应多个任务执行队列,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述任务执行队列至少包括以下属性信息:cpu数、内存数、剩余cpu数和剩余内存数。
7.一种任务调度装置,其特征在于,包括:
8.根据权利要求7所述的装置,其特征在于,所述列表生成模块,还用于:
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至6任一项所述的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1至6任一项所述的方法的步骤。