首页 / 专利库 / 电脑零配件 / 计算机系统 / 软件 / 软件包 / 软件组件 / 插件 / 一种基于包管理的分布式数据作业调度的方法和系统

一种基于包管理的分布式数据作业调度的方法和系统

阅读:2发布:2020-11-17

专利汇可以提供一种基于包管理的分布式数据作业调度的方法和系统专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种基于包管理的分布式数据作业调度的方法和系统,属于计算机 软件 领域,用于管理分布式数据作业调度,其包括通过对作业梳理拆分以更细粒度方式呈现,以及引入产品项目概念以项目维度对作业进行任务创建和分类管理,任何作业均需自定义作业KEY,通过引入KEY方式支持跨项目依赖,且同一项目内不同工作流作业也支持KEY依赖注入,以解决项目作业隔离问题和权责分明,各业务产品线可以按需分配作业,各自运维自己所属项目的工作流作业,互不影响。本发明可提升作业任务开发和运维操作的用户体验,支持作业任务更细粒度拆分,归属明确。,下面是一种基于包管理的分布式数据作业调度的方法和系统专利的具体信息内容。

1.一种基于包管理的分布式数据作业调度的方法,其特征在于,包括:
步骤S1、系统创建本地工作流任务,在创建的所述本地工作流任务中,通过拖拽操作来创建DAG流程图
步骤S2、根据创建的所述DAG流程图设置调度规则,并提交设置的所述调度规则以进行任务审核;
步骤S3、所述系统后台的守护程序不断轮询监听线上周期任务,并定时生成次日全量工作流任务实例,以及所述工作流任务实例所依赖的关系数据,向执行引擎发送所述工作流任务实例的执行请求
步骤S4、所述执行引擎接收所述工作流任务实例的执行请求,并排队异步处理,通过解析工作流各子节点任务类型、参数变量数据,并触发相应作业插件,执行任务节点代码逻辑;
系统通过接口获取所述异步处理执行工作流详细日志;所述系统后台的守护程序通过接口查询所述工作流任务实例的执行状态去刷新本地的所述工作流任务实例以及所述依赖的关系数据的执行状态。
2.根据权利要求1所述的基于包管理的分布式数据作业调度的方法,其特征在于,所述步骤S1中用户创建本地工作流任务,所述DAG流程图中的流程子节点包括shell节点、Hive SQL节点、数据导出节点、MySQL节点、KEY节点中的一个或多个;
所述步骤S2中,进行任务审核具体包括:
系统对所提交的所述调度规则进行审核,若审核通过,则通过系统后台创建远端工作流任务,并执行步骤S3,若审核不通过,则结束,并返回步骤S1;
所述步骤S3中,还包括:记录所述工作流任务实例的执行状态数据,同时所述系统后台的守护程序触发执行满足所述调度规则的所述工作流任务实例。
3.根据权利要求2所述的基于包管理的分布式数据作业调度的方法,其特征在于,所述KEY节点代表外部任务,所述外部任务包括本项目内的任务或者跨项目的任务,在本项目内的任务或者跨项目的任务中注入所述依赖的关系数据。
4.根据权利要求2所述的基于包管理的分布式数据作业调度的方法,其特征在于,所述记录所述工作流任务实例的执行状态数据,具体包括:
记录脚本内容、所述流程子节点的依赖的关系数据,形成线下工作流快照数据。
5.根据权利要求4所述的基于包管理的分布式数据作业调度的方法,其特征在于,设置的所述调度规则包括自动重跑、生效日期、起调时间、执行周期、间隔时间、任务自依赖中的一种或多种。
6.根据权利要求5所述的基于包管理的分布式数据作业调度的方法,其特征在于,所述执行周期包括小时、天、周、月,所述间隔时间包括间隔一小时、间隔两小时或间隔N小时,N为正整数。
7.根据权利要求1所述的基于包管理的分布式数据作业调度的方法,其特征在于,所述通过系统后台创建远端工作流任务,具体包括:
若审核通过,则通过系统后台调用azkaban接口,以创建所述远端工作流任务,所述远端工作流任务包括刷新访问Token、上传zip包或创建工作流中的一种,所述远端工作流任务支持版本机制以方便进行历史任务运维;所述线下工作流快照数据和线上版本工作流数据均已存在,所述本地工作流任务和所述远端工作流任务通过任务KEY+版本号作为唯一编码串联起来,等待系统后台进行相关处理。
8.根据权利要求1所述的基于包管理的分布式数据作业调度的方法,其特征在于,所述系统后台的守护程序不断轮询监听线上周期任务,并定时生成次日全量工作流任务实例,具体包括:
所述系统后台的守护程序不断轮询监听线上周期任务,每天23点生成次日的全量工作流任务实例以及所述工作流任务实例所依赖的关系数据,并记录所述工作流任务实例的执行状态数据;
所述系统后台的守护程序同时触发执行满足所述调度规则的所述工作流任务实例,向所述执行引擎发送所述工作流任务实例的执行请求。
9.根据权利要求1所述的基于包管理的分布式数据作业调度的方法,其特征在于,所述执行引擎通过后台调用azkaban接口来接收所述工作流任务实例的执行请求,并排队异步处理,通过解析工作流各子节点任务类型、参数变量数据,并触发相应作业插件,执行任务节点代码逻辑;
系统过所述azkaban接口获取异步执行工作流详细日志;所述系统后台的守护程序通过所述azkaban接口所述工作流任务实例的执行状态去刷新本地的所述工作流任务实例以及所述依赖的关系数据的执行状态;
本地工作流数据和远端azkaban接口的数据状态在一个较短时间窗户后即保持一致,系统全量工作流任务实例执行均通过消息通知和状态刷新完成顺序流转,同一任务实例执行只需满足上游实例完成和外部依赖实例触发执行。
10.一种基于包管理的分布式数据作业调度的系统,其特征在于,该系统包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至9中任一项所述的方法。

说明书全文

一种基于包管理的分布式数据作业调度的方法和系统

技术领域

[0001] 本发明涉及计算机软件技术领域,具体而言,涉及一种基于包管理的分布式数据作业调度的方法和系统。

背景技术

[0002] 分布计算环境是基于分布式系统上进行的计算服务系统,分布式任务调度问题就是寻找将一组相互协作的任务分配到一组处理器上运行的最优解.在任意多个处理器组成的系统中,求最佳的分布式任务调度一般是HP完全间题,因此传统的研究一般都局限于寻找满足特定功能目标的次优算法。由于传统调度系统的单一策略模式,使得调度决策在某些条件下是有效的,而在更多的情况下却不能令人满意。
[0003] 在一个大型的分布式系统中,一方面,由于系统状态的不确定性;状态知识的不完整性;调度策略的不稳定性和系统缺乏自我调节能,现有的许多分布式任务调度算法将失去其有效性而变得低效。
[0004] 目前很多企业普遍存在大数据场景下批量工作流任务处理需求,迫切需要与之对应的工作流调度处理平台,市场上很少有商用产品能很好地满足此类数据需求,虽开源工作流调度框架azkaban功能强大,但真正面对实际业务场景时仍然存在很多需要改进的地方,比如不支持跨项目依赖、任务嵌套工作流过于繁琐、复杂业务难以适配、任务粒度太大、任务调度配置不友好、任务运维不方便等。
[0005] 另一方面,随着移动互联网技术的发展,工作站、小型机等计算平台的普及和网络技术的成熟,组成系统的这些结点己不完全相同,而具有多种形式的异构性,例如,系统配置异构、体系结构异构和操作系统异构.如何将任务在这些异构的结点间快速而有效地分派和转移是目前分布式计算研究所面临的一个重大而复杂的问题。系统的异构性极大地增加了调度工作的复杂性,而现有的许多分布式任务调度都缺乏对异构型分布式计算环境的有力支持。
[0006] 因此,在长期的研发当中,发明人对基于包管理的分布式数据作业调度的方法和系统进行了大量的研究,提出了一种对大数据场景下批量工作流任务的处理需求的方法,以解决上述技术问题之一。

发明内容

[0007] 本发明的目的在于提供一种基于包管理的分布式数据作业调度的方法和系统,能够解决上述提到的至少一个技术问题。具体方案如下:
[0008] 一种基于包管理的分布式数据作业调度的方法,包括:
[0009] 步骤S1、系统创建本地工作流任务,在创建的所述本地工作流任务中,通过拖拽操作来创建DAG流程图
[0010] 步骤S2、根据创建的所述DAG流程图设置调度规则,并提交设置的所述调度规则以进行任务审核;
[0011] 步骤S3、所述系统后台的守护程序不断轮询监听线上周期任务,并定时生成次日全量工作流任务实例,以及所述工作流任务实例所依赖的关系数据,向执行引擎发送所述工作流任务实例的执行请求
[0012] 步骤S4、所述执行引擎接收所述工作流任务实例的执行请求,并排队异步处理,通过解析工作流各子节点任务类型、参数变量数据,并触发相应作业插件,执行任务节点代码逻辑;
[0013] 系统通过接口获取所述异步处理执行工作流详细日志;所述系统后台的守护程序通过接口查询所述工作流任务实例的执行状态去刷新本地的所述工作流任务实例以及所述依赖的关系数据的执行状态。
[0014] 进一步的,所述步骤S1中用户创建本地工作流任务,所述DAG流程图中的流程子节点包括shell节点、Hive SQL节点、数据导出节点、MySQL节点、KEY节点中的一个或多个;
[0015] 所述步骤S2中,进行任务审核具体包括:
[0016] 系统对所提交的所述调度规则进行审核,若审核通过,则通过系统后台创建远端工作流任务,并执行步骤S3,若审核不通过,则结束,并返回步骤S1;
[0017] 所述步骤S3中,还包括:记录所述工作流任务实例的执行状态数据,同时所述系统后台的守护程序触发执行满足所述调度规则的所述工作流任务实例。
[0018] 进一步的,所述KEY节点代表外部任务,所述外部任务包括本项目内的任务或者跨项目的任务,在本项目内的任务或者跨项目的任务中注入所述依赖的关系数据。
[0019] 进一步的,所述记录所述工作流任务实例的执行状态数据,具体包括:
[0020] 记录脚本内容、所述流程子节点的依赖的关系数据,形成线下工作流快照数据。
[0021] 进一步的,设置的所述调度规则包括自动重跑、生效日期、起调时间、执行周期、间隔时间、任务自依赖中的一种或多种。
[0022] 进一步的,所述执行周期包括小时、天、周、月,所述间隔时间包括间隔一小时、间隔两小时或间隔N小时,N为正整数。
[0023] 进一步的,所述通过系统后台创建远端工作流任务,具体包括:
[0024] 若审核通过,则通过系统后台调用azkaban接口,以创建所述远端工作流任务,所述远端工作流任务包括刷新访问Token、上传zip包或创建工作流中的一种,所述远端工作流任务支持版本机制以方便进行历史任务运维;所述线下工作流快照数据和线上版本工作流数据均已存在,所述本地工作流任务和所述远端工作流任务通过任务KEY+版本号作为唯一编码串联起来,等待系统后台进行相关处理。
[0025] 进一步的,所述系统后台的守护程序不断轮询监听线上周期任务,并定时生成次日全量工作流任务实例,具体包括:
[0026] 所述系统后台的守护程序不断轮询监听线上周期任务,每天23点生成次日的全量工作流任务实例以及所述工作流任务实例所依赖的关系数据,并记录所述工作流任务实例的执行状态数据;
[0027] 所述系统后台的守护程序同时触发执行满足所述调度规则的所述工作流任务实例,向所述执行引擎发送所述工作流任务实例的执行请求。
[0028] 进一步的,所述执行引擎通过后台调用azkaban接口来接收所述工作流任务实例的执行请求,并排队异步处理,通过解析工作流各子节点任务类型、参数变量数据,并触发相应作业插件,执行任务节点代码逻辑;
[0029] 系统过所述azkaban接口获取异步执行工作流详细日志;所述系统后台的守护程序通过所述azkaban接口所述工作流任务实例的执行状态去刷新本地的所述工作流任务实例以及所述依赖的关系数据的执行状态;
[0030] 本地工作流数据和远端azkaban接口的数据状态在一个较短时间窗户后即保持一致,系统全量工作流任务实例执行均通过消息通知和状态刷新完成顺序流转,同一任务实例执行只需满足上游实例完成和外部依赖实例触发执行。
[0031] 一种基于包管理的分布式数据作业调度的系统,该系统包括:
[0032] 一个或多个处理器;
[0033] 存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述分布式数据作业调度的方法。
[0034] 本发明实施例的上述方案与现有技术相比,至少具有以下有益效果:
[0035] 1、工作流任务更细粒度且嵌套子工作流抽象为KEY方式引入方便数据开发、数据运维;
[0036] 2、作业任务以项目维度进行拆分,归属明确、权责分明便于权限审批和安全管控;
[0037] 3、作业任务复杂逻辑进一步抽象前置户,azkaban仅作为最底层执行引擎,系统功能拆分更彻底,任务创建、调度配置、任务分发、任务执行、任务运维各模解耦,便于系统扩展、资源消耗监控等。附图说明
[0038] 此处的附图被并入说明书中,并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0039] 图1为本发明的分布式数据作业调度方法的流程示意图;
[0040] 图2为本发明的分布式数据作业调度的系统的结构框图

具体实施方式

[0041] 为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0042] 在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
[0043] 应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0044] 应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述……,但这些……不应限于这些术语。这些术语仅用来将……区分开。例如,在不脱离本发明实施例范围的情况下,第一……也可以被称为第二……,类似地,第二……也可以被称为第一……。
[0045] 取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
[0046] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者装置中还存在另外的相同要素。
[0047] 下面结合附图详细说明本发明的可选实施例。
[0048] 实施例1
[0049] 图1为本发明的分布式数据作业调度方法的流程示意图。
[0050] 其中该方法包括以下的步骤:
[0051] 首先,用户创建本地工作流任务,通过拖曳操作创建DAG流程图,流程子节点可以是shell节点、Hive SQL节点、数据导出节点、MySQL节点、KEY节点,其中KEY节点代表外部任务,可以是本项目内或者跨项目的其他任务,均可以注入依赖关系,流程子节点负责执行具体业务逻辑,可以是脚本代码,也可以是一个包装的数据同步导出打包体,子节点内容必须符合相应语法规范,子节点依赖关系则必须满足DAG图形规则要求,不能形成环,整个流程全部脚本内容大小控制到合理范围,避免出现性能问题;所有流程相关数据均本地持久化入库,主要记录脚本内容、节点依赖关系等,形成线下工作流快照数据;
[0052] 然后,用户可以设置调度规则,比如自动重跑、生效日期、起调时间、执行周期(按小时、按天、按周、按月)、间隔时间(每隔1小时、每隔2小时等)、任务自依赖等,通过提交调度规则进入任务审核环节,项目管理员审核通过任务后,则后台调用azkaban接口创建远端工作流任务(刷新访问Token、上传ZIP包、创建工作流),同时,支持版本机制以方便历史任务运维,因每次修改调度规则或者工作流内容或结构更新需重新审核导致线上工作流被刷新;此时快照和线上版本工作流数据均已存在,本地和远端工作流通过任务KEY+版本号作为唯一编码串联起来,数据和流程均已打通,只需等待系统后台进行相关处理;
[0053] 接下来,系统后台守护程序不断轮询监听线上周期任务,每天晚上23点定时生成第二天全量工作流任务实例以及任务实例依赖关系数据,实例记录执行状态信息;同时,守护程序还将触发满足调度规则条件的任务实例执行,实质是提交azkaban执行命令请求;
[0054] 最后,执行引擎azkaban接收任务执行请求,开始排队异步处理,通过解析工作流各子节点任务类型、参数变量等数据并触发相应作业插件真正执行任务节点代码逻辑,用户可以通过接口获取azkaban异步执行工作流详细日志;后台守护程序通过azkaban接口查询任务实例执行状态去刷新本地工作流实例及依赖关系数据执行状态,类似于消息通知机制,本地工作流数据和远端azkaban数据状态在一个较短时间窗户后即保持一致,系统全量工作流任务实例执行均通过消息通知和状态刷新完成顺序流转,同一任务实例执行只需满足上游实例完成和外部依赖实例完成这2大前提均可以触发执行,通过任务实例这一抽象概念很好地满足了各种复杂业务场景的任务执行(比如按小时、按天、按周、按月任务互相依赖构成的复合工作流场景)。
[0055] 根据本发明实施例1中所述的一种基于包管理的分布式数据作业调度的方法,其中通过对作业梳理拆分以更细粒度方式呈现,以及引入产品项目概念以项目维度对作业进行任务创建和分类管理,任何作业均需自定义作业KEY,通过引入KEY方式支持跨项目依赖,且同一项目内不同工作流作业也支持KEY依赖注入,以解决项目作业隔离问题和权责分明,各业务产品线可以按需分配作业,各自运维自己所属项目的工作流作业,互不影响。跨项目作业依赖引入KEY方式则便于进一步抽象工作流执行模式,所有节点均收敛为普通节点,节点执行逻辑与节点上下级依赖关系均保持格一致,通过抽象作业运行实例对各种工作流作业进行统一管理。本方案主要包含工作流任务定义、分发调度及执行3部分,其中工作流任务定义支持DAG节点拖曳编辑操作,支持虚节点、Hive、MySQL、Shell、外部任务Key、数据导出等子节点,具体执行逻辑由各子节点负责,用户可以根据实际业务需求,建立子节点之间复杂依赖关系工作流,以完成任务并行和串行各种复杂处理逻辑;调度模块则负责根据自定义配置调度规则对任务触发运行实例创建、运行实例运行监控、上下游实例消息通知等操作,同时考虑分布式集群环境各监听线程任务存在并发问题,特采用quartz持久化数据库乐观支持集群分布式部署,避免单一监听线程任务多台服务器重复执行问题;工作流执行部分技术选型采用Azkaban开源工作流调度系统,并基于此进行二次功能开发,其中任务执行部分通过开发相应任务类型插件集成到azkaban平台。工作流任务调度将任务定义、任务触发及任务调度等统一管理起来,通过抽象azkaban工作流为任务并前置任务调度及复杂规则逻辑于调度端,通过HTTP API与azkaban交互完成工作流任务执行全生命周期管理。
[0056] 实施例2
[0057] 图2为本发明的分布式数据作业调度的系统的结构框图。一种基于包管理的分布式数据作业调度的系统,其中该系统包括若干的相互连接的电子设备,这些电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,
[0058] 所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够通过处理用户输入的本地工作流任务并且在存储器上创建本地工作流人物,执行具体逻辑或者脚本代码,进而能够方便用户设置调度规则,并且允许项目管理员通过后台调用位于存储器上的azkaban接口创建远端工作流任务。本申请所述的处理器还能够通过任务KEY和版本号作为唯一识别码将本地任务、远端任务进行串联,打通数据和流程并且执行系统后台的轮询监听任务。
[0059] 通过上述原理的说明,本申请所述的用户可以通过输入输出设备来实现本地工作流任务的创建,并且通过输入输出设备来实现创建DAG流程图,并且创建的DAG流程图能够被存储在存储器上,上述DAG中的子节点任务可以是一个脚本代码也可以是一个打包体。所述有的流程数据均需要长久的存储于上述电子设备上的存储器中,此存储器采用ROM。
[0060] 上述电子系统中的电子设备采用处理器来对用户设置的调度规则来实现诸如自动重跑、生效日期、起调时间、执行周期、间隔时间、任务自依赖等的执行,并且将上述数据通过网络传递至后台项目管理员处,后台项目管理员能够通过处理器调用azkaban数据库的接口并通过网络创建远端工作流任务,包括需要通过局域网、广域网、互联网实现的刷新访问Token、上传zip包、创建工作流等远端的工作任务。但是,在上传的过程中,需要处理器对通过网络连接器获取的任务KEY和版本号进行核对。
[0061] 处理器调用执行上述方法的系统中的后台守护程序及执行守护程序的轮询监听线上周期任务,其守护程序通过处理器触发调度规则的任务实例执行,实际是通过处理器调用存储器上的azkaban并提交执行命令的请求。
[0062] 本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
[0063] 需要说明的是,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈