一种基于血缘的任务调度优化方法、系统、设备及介质技术方案

技术编号:36957219 阅读:53 留言:0更新日期:2023-03-22 19:17
本发明专利技术公开了一种基于血缘的任务调度优化方法、系统、设备及介质,涉及任务调度优化技术领域,该方法包括:步骤A:将分布式任务调度平台中需要自动配置工作流的任务进行血缘解析,得到任务数据血缘;步骤B:将步骤A中得到的任务数据血缘,通过血缘关系构建任务依赖图DAG;步骤C:基于步骤B中构建的任务依赖图DAG,进行任务调度执行。该系统包括:血缘解析单元、任务依赖图构建单元和任务调度执行单元。本发明专利技术通过血缘解析减少了人工配置任务依赖工作量和错误率,通过自动生成的有向无环图DAG也提高了包含的任务数大小。提高了包含的任务数大小。提高了包含的任务数大小。

【技术实现步骤摘要】
一种基于血缘的任务调度优化方法、系统、设备及介质


[0001]本专利技术涉及任务调度优化
,具体涉及一种基于血缘的任务调度优化方法、系统、设备及介质。

技术介绍

[0002]分布式任务调度平台(Apache DolphinScheduler)是一个分布式去中心化,易扩展的可视化有向无环图DAG工作流任务调度平台。分布式任务调度平台(Apache DolphinScheduler)旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种操作OPS编排中的关系;解决数据研发抽取转换加载ETL依赖错综复杂,无法监控任务健康状态的问题。DolphinScheduler以有向无环图DAG(Directed Acyclic Graph)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。其包含告警服务AlertServer进程提供告警服务,用户交互服务ApiServer进程提供Web服务用于用户编辑任务工作流等,主节点MasterServer进程负责调度工作流,工作节点WorkerServer进程负责实际执行任务,他们之间通过netty通信。
[0003]DolphinScheduler本身的DAG API即是有用户交互服务ApiServer提供的Web服务。但在大型企业中,特别是现在数据作为资产的时代,数据任务越来越多。如果直接ApiServer提供的DAG API进行工作流的创建,任务数达到几十时手动编辑就很困难,因为任务依赖关系需要人工检查手动设置。如果将工作流当作节点配置又极大的增加了工作流复杂度,特别是给跨部门合作开发带来了极大的不便。因此,本专利技术考虑一种自动生成任务依赖构建有向无环图DAG的方法以解决以上这些问题。

技术实现思路

[0004]本专利技术所要解决的技术问题是现有任务调度方法中有向无环图DAG人工构建复杂协作困难,构建效率低,人工配置错误高的问题。本专利技术目的在于提供一种基于血缘的任务调度优化方法、系统、设备及介质,通过血缘解析减少了人工配置任务依赖工作量和错误率,通过自动生成的有向无环图DAG也提高了包含的任务数大小。
[0005]本专利技术通过下述技术方案实现:
[0006]第一方面,本专利技术提供了一种基于血缘的任务调度优化方法,该方法包括以下步骤:
[0007]步骤A:将分布式任务调度平台中需要自动配置工作流的任务进行血缘解析,得到任务数据血缘;
[0008]步骤B:将步骤A中得到的任务数据血缘,通过血缘关系构建任务依赖图DAG;
[0009]步骤C:基于步骤B中构建的任务依赖图DAG,进行任务调度执行,从而实现了工作流自动配置,降低了在大批量任务情况下人工配置工作流的工作量和人为错误率。
[0010]本专利技术应用于分布式任务调度平台Apache DolphinScheduler,本专利技术提高了有向无环图DAG构建效率,减少人工配置错误,同时增加了有向无环图DAG的节点任务数大小。
[0011]进一步地,步骤A的具体步骤为:
[0012]步骤A1:当分布式任务调度平台中共有n个任务,其中假设task0~taskm为需要自动配置为虚拟工作流的任务;
[0013]步骤A2:将任务task0~taskm进行血缘解析,得到任务数据血缘;任务数据血缘包括输入数据信息和输出数据信息;其中,以任务为键key、输出数据表信息为值value(key

value形成键值对)存入到hash表结构中,得到输出数据信息hash表hashtableout;以输入数据信息为键key、任务为值value(key

value形成键值对)存入到hash表结构中,得到输入数据信hash表hashtablein;并将无任何输入数据信息的任务定义存放在起点集合startset中。
[0014]进一步地,输入数据信息和输出数据信息中的数据信息结构均包含任意条数据表项的信息,数据表项包括数据源名、数据库名和数据表名。
[0015]进一步地,血缘解析为:
[0016]若需要自动配置工作流的任务是SQL类任务,则通过进行SQL解析,得到任务数据血缘;
[0017]若需要自动配置工作流的任务是非SQL类任务(即其他的任务),则通过人工解析配置,得到任务数据血缘。
[0018]进一步地,步骤B的具体步骤为:
[0019]步骤B1:构造一个以任务task0~taskm为节点、任务依赖关系为边的有向无环图DAG;
[0020]步骤B2:以步骤A2中得到的任务集合startset作为当前处理任务集合currenttasks进行遍历,并创建下一个遍历任务集合nexttasks;
[0021]步骤B3:对当前处理任务集合currenttasks中的某一任务taski,获取该任务taski的输出数据信息outdatai;
[0022]步骤B4:遍历输出数据信息outdatai中的数据表项;
[0023]步骤B5:对输出数据信息outdatai中的数据表项,以数据表项为键key,从步骤A2的输入数据信hash表hashtablein中得到下游任务taskj;
[0024]步骤B6:向步骤B1中的有向无环图DAG添加一条该任务节点指向下游任务节点的有向边,同时将下游任务节点加入下一个遍历任务集合nexttasks中;
[0025]步骤B7:重复步骤B5~B6,直至输出数据信息outdatai中的数据表项遍历处理完成;
[0026]步骤B8:重复步骤B3~B7,直至当前处理任务集合currenttasks中的任务遍历处理完成;
[0027]步骤B9:清空当前处理任务集合currenttasks,并将当前处理任务集合currenttasks与下一个遍历任务集合nexttasks交换;
[0028]步骤B10:重复步骤B3~B9,直至下一个遍历任务集合nexttasks为空,此时任务依赖图DAG构建完成。
[0029]进一步地,任务依赖关系为:
[0030]任务taskx依赖任务tasky等价于任务taskx的输入数据信息包含有任务tasky的输出数据信息;其中,taskx、tasky属于有向无环图DAG中的任务节点。
[0031]进一步地,步骤C的具体步骤为:
[0032]步骤C1:从步骤B构建的任务依赖图DAG中,选出入度为0的任务节点,根据任务节点生成任务对象TaskInstance并设置触发方式为血缘触发,保存至数据库中;同时把入度为0的任务节点放入主节点MasterServer的优先级调度队列中待执行;
[0033]步骤C2:基于负载算法,主节点MasterServer选取工作节点WorkerServer执行血缘任务;
[0034]步骤C3:当血缘任务执行完成之后,主节点MasterServer收到工作节点WorkerServer的完成通知,将血缘任务关联在本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于血缘的任务调度优化方法,其特征在于,该方法包括以下步骤:步骤A:将分布式任务调度平台中需要自动配置工作流的任务进行血缘解析,得到任务数据血缘;步骤B:将步骤A中得到的任务数据血缘,通过血缘关系构建任务依赖图DAG;步骤C:基于步骤B中构建的任务依赖图DAG,进行任务调度执行。2.根据权利要求1所述的一种基于血缘的任务调度优化方法,其特征在于,所述步骤A的具体步骤为:步骤A1:当分布式任务调度平台中共有n个任务,其中假设task0~taskm为需要自动配置为虚拟工作流的任务;步骤A2:将任务task0~taskm进行血缘解析,得到任务数据血缘;所述任务数据血缘包括输入数据信息和输出数据信息;其中,以任务为键key、输出数据表信息为值value存入到hash表结构中,得到输出数据信息hash表hashtableout;以输入数据信息为键key、任务为值value存入到hash表结构中,得到输入数据信hash表hashtablein;并将无任何输入数据信息的任务存放在起点集合startset中。3.根据权利要求2所述的一种基于血缘的任务调度优化方法,其特征在于,所述输入数据信息和输出数据信息中的数据信息结构均包含任意条数据表项的信息,所述数据表项包括数据源名、数据库名和数据表名。4.根据权利要求1或2所述的一种基于血缘的任务调度优化方法,其特征在于,所述血缘解析为:若需要自动配置工作流的任务是SQL类任务,则通过进行SQL解析,得到任务数据血缘;若需要自动配置工作流的任务是非SQL类任务,则通过人工解析配置,得到任务数据血缘。5.根据权利要求2所述的一种基于血缘的任务调度优化方法,其特征在于,所述步骤B的具体步骤为:步骤B1:构造一个以任务task0~taskm为节点、任务依赖关系为边的有向无环图DAG;步骤B2:以步骤A2中得到的任务集合startset作为当前处理任务集合currenttasks进行遍历,并创建下一个遍历任务集合nexttasks;步骤B3:对当前处理任务集合currenttasks中的某一任务taski,获取该任务taski的输出数据信息outdatai;步骤B4:遍历所述输出数据信息outdatai中的数据表项;步骤B5:对输出数据信息outdatai中的数据表项,以数据表项为键key,从步骤A2的输入数据信hash表hashtablein中得到下游任务taskj;步骤B6:向步骤B1中的有向无环图DAG添加一条该任务节点指向下游任务节点的有向边,同时将下游任务节点加入下一个遍历任务集合nexttasks中;步骤B7:重复步骤B5~B6,直至输出数据信息o...

【专利技术属性】
技术研发人员:毛晶陈卫
申请(专利权)人:四川新网银行股份有限公司
类型:发明
国别省市:

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

1