【大数据开发套件调度配置实践】——不同周期任务依赖配置

简介: 大数据开发过程中常遇到不同运行周期的任务进行依赖,常见**天任务依赖小时任务**、**小时任务依赖分钟任务**。那么如何通过大数据开发套件开发这两种场景呢? 本文将从这两个场景出发,结合调度依赖/参数/调度执行等,介绍不同周期调度依赖的最佳操作实践。

大数据开发过程中常遇到不同运行周期的任务进行依赖,常见 天任务依赖小时任务小时任务依赖分钟任务 。那么如何通过大数据开发套件开发这两种场景呢?

本文将从这两个场景出发,结合调度依赖/参数/调度执行等,介绍不同周期调度依赖的最佳操作实践。

再此之前,我们先明确几个概念:

  • 业务日期:业务数据产生的日期,这里指完整一天的业务数据。在大数据开发套件里任务每天能处理的最近的完整一天业务数据是昨天的数据,所以业务日期=日常调度日期-1天。
  • 依赖关系:依赖关系是描述两个或多个节点/工作流之间的语义连接关系,其中上游节点/工作流的运行状态可以影响下游节点/工作流的运行状态,反之则不成立。
  • 调度实例:大数据开发套件的调度系统对周期任务进行调度执行时,会先根据任务的配置进行实例化,每个实例带上具体的定时时间、状态、上下游依赖等属性。

注意:目前数加大数据开发套件每天自动调度的实例都是在昨天晚上23:30生成。

  • 调度规则:调度任务是否能运行起来要满足的条件:

    1. 上游任务实例是否都运行成功。若所有上游任务实例都运行成功则触发任务进入等待时间状态。
    2. 任务实例定时时间是否已经到。任务实例进入等待时间状态后会check本身定时时间是否到,如果时间到了则进入等待资源状态;
    3. 当前调度资源是否充足。任务实例进入等待资源状态后,check当前本项目调度资源是否充足,若充足则可以运行起来。

天任务依赖小时任务

业务场景

系统需求统计截止到每小时的业务数据增量,然后在最后一个小时的数据汇总完成后需要一个任务进行一整天的汇总 。

需求分析

1)每个小时的增量,即每整点起任务统计上个小时时间段的数据量 。需要配置一个每天每整点调度一次的任务,每天最后一个小时的数据是在第二天第一个实例进行统计 。

2)最后的汇总任务为每天执行一次,且必须是在每天最后一个小时的数据统计完成之后才能执行,那么需要配置一个天任务,依赖小时任务的第一个实例 。

分析得出的调度形态如下图:

天依赖小时-1

但是,真正如上图调度任务定义那样配置调度依赖后,调度任务实例并没有得到上图的效果,而是如下图:

天依赖小时-2

上图中,天任务必须等小时任务当天其他所有实例也执行完成才能执行,而需求是天任务只需依赖小时任务第一个实例,此效果明显不能满足需求 。

要达到该场景需求,此时就需要结合任务“跨周期依赖”进行配置,可以将小时任务“跨周期依赖”属性配置成“自依赖”,然后天任务配置定时时间为零点整,且依赖属性配置依赖小时任务 。

分析得出的最终方案调度形态如下图:

天依赖小时-3

此时,小时任务的实例为串行执行,第一个实例能执行成功,可保证它前面(昨天)的实例都已经执行成功,因此天任务可以只需要依赖第一个实例 。

配置实践

小时任务的调度配置如下图:

天依赖小时-4

天任务的调度配置如下图:

天依赖小时-5

参数配置:小时任务每整点实例处理前一小时的数据,如可以用$[yyyy-mm-dd-hh24-1/24],天任务 若时间格式为yyyymmdd,用${bdp.system.bizdate};若时间格式为yyyy-mm-dd,用自定义参数$[yyyy-mm-dd-1],具体视详细设计而定 。参数配置如下图所示:

天依赖小时-6

测试/补数据/自动调度

测试和补数据:都是手动生成的调度实例,选择的是业务日期 。
如选择业务日期为 2017-01-10:

  • 天任务实例的定时时间是 2017-01-11 00:00:00;
  • 小时实例的定时时间是 2017-01-11 00:00:00 至 2017-01-11 23:00:00;
  • ${bdp.system.bizdate} 赋值结果为 20170110(实例定时间年月日减1天);
  • $[yyyy-mm-dd-hh24-1/24] 赋值结果为 2017-01-10-23 至 2017-01-11-22(实例定时间年月日时减1小时)。

自动调度:调度系统自动生成的实例,每天的实例定时时间都是当天,如“需求分析”中的最终方案效果图 。

小时任务依赖分钟任务

业务场景

已经有任务每 30 分钟进行一次同步,将前 30 分钟的系统数据增量导入到 MaxCompute,任务定时为每天的每个整点和整点 30 分运行 。现在需要配置一个小时任务,每 6 个小时进行一次统计,即每天分别统计 0 点到 6 点之间、6 点到 12 点之间、12 点到 18 点之间、18 点到明天 0 点整之间的数据 。

需求分析

1) 分钟任务:

  • 00:00 实例同步的是昨天最后 30 分钟的数据,产出的表分区如“昨天日期年-月-日-23:30”;
  • 00:30 实例同步的是今天 00:00-00:30 之间的数据,产出的分区如“今天日期年-月-日-00:00”;
  • 01:00 实例同步到是今天 00:30-01:00 之间的数据,产出的分区如“今天日期年-月-日-00:30”;
  • 以此类推, 23:30 实例同步的是今天 23:00-23:30 之间的数据,产出的分区如:“今天日期年-月-日-23:00”

2)小时任务:

  • 每 6 个小时进行一次统计,则一天调度 4 次;
  • 统计 0 点到 6 点之间的数据,则依赖分钟任务当天的 00:30—6:00 共 12 个实例;
  • 统计 6 点到 12 点之间的数据,则依赖分钟任务当天的 6:30—12:00 共 12 个实例;
  • 统计 12 点到 18 点之间的数据,则依赖分钟任务当天的 12:30—18:00 共 12 个实例;
  • 统计 18 点到第二天 0 点之间的数据,则依赖分钟任务当天的 18:30—23:30 以及第二天 00:00 共 12 个实例 。

分析得出的调度形态如下图:

小时依赖分钟-1

但是,真正如上图调度任务定义那样配置调度依赖后,调度任务实例并没有得到上图的效果,而是如下图:

小时依赖分钟-2

如上图,10 日 18 点到 11 日 0 点之间的数据,11 日小时任务 0 点整点实例只依赖了分钟任务 11 日 0 点整实例,不能确保分钟任务 10 日 18:30 至 23:30 的实例是否执行成功 。

要达到该场景需求,此时就需要结合任务“跨周期依赖”进行配置,可以将分钟任务“跨周期依赖”属性配置成“自依赖”,然后小时任务依赖属性配置依赖小时任务 。

分析得出的最终方案调度形态如下图:

小时依赖分钟-3

此时,分钟任务的实例为串行,每个实例能执行成功,可保证它前面(或昨天)的实例都已经执行成功,因此小时任务每个实例可以只需要依赖分钟任务定时时间离它最近(小于等于)的一个实例 。

配置实践

分钟任务的调度配置如下图:

小时依赖分钟-4

小时任务调度配置如下图:

小时依赖分钟-5

参数配置:分钟任务每个实例处理前面30分钟数据产出的分区可以用参数如 $[yyyy-mm-dd-hh24:mi-30/24/60] , 具体视详细设计而定 。配置类似下图:

小时依赖分钟-6

测试/补数据/自动调度

测试和补数据:都是手动生成的调度实例,选择的是业务日期。如选择业务日期为 2017-01-10:

  • 分钟任务实例的定时时间是 2017-01-11 00:00:00 至 2017-01-11 23:30:00,共 48 个实例;
  • 小时实例的定时时间是 2017-01-11 00:00:00、06:00:00、12:00:00、18:00:00 共 4 个实例;
  • $[yyyy-mm-dd-hh24:mi-30/24/60] 赋值结果为 2017-01-10-23:30 至 2017-01-11-23:00(实例定时间年月日时分减 30 分钟)。

自动调度:调度系统自动生成的实例,每天都实例定时时间都是当天,如“需求分析”中的最终方案效果图 。

总结

  • 长周期任务依赖短周期任务时,如果短周期有自依赖:当天的调度实例中,长周期任务的每个实例只依赖短周期实例中定时时间与它最近(且小于)的一个实例 。
  • 长周期任务(小时)依赖短周期任务(分钟)时,如果短周期无自依赖:当天的调度实例中,长周期任务的每个实例会依赖定时时间小于等于且没被本任务其他实例依赖的短周期实例;天/周/月依赖小时/分钟任务例外,因为天任务实例会依赖所有小时/分钟任务 。
  • 调度周期和调度时间参数配合使用,最终调度参数替换的值取决于每次调度的实例定时时间,而调度上看到的 业务日期=实例定时时间年月日减1天
相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2月前
|
分布式计算 DataWorks 调度
maxcompute配置问题之优先级如何解决
MaxCompute配置是指在使用阿里云MaxCompute服务时对项目设置、计算资源、存储空间等进行的各项调整;本合集将提供MaxCompute配置的指南和建议,帮助用户根据数据处理需求优化其MaxCompute环境。
33 1
|
2月前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
714 2
|
2月前
|
SQL 分布式计算 MaxCompute
maxcompute之配置报错如何解决
MaxCompute配置是指在使用阿里云MaxCompute服务时对项目设置、计算资源、存储空间等进行的各项调整;本合集将提供MaxCompute配置的指南和建议,帮助用户根据数据处理需求优化其MaxCompute环境。
35 0
|
2月前
|
SQL 存储 分布式计算
maxcompute配置问题之配置mc内容如何解决
MaxCompute配置是指在使用阿里云MaxCompute服务时对项目设置、计算资源、存储空间等进行的各项调整;本合集将提供MaxCompute配置的指南和建议,帮助用户根据数据处理需求优化其MaxCompute环境。
31 1
|
2月前
|
DataWorks 关系型数据库 对象存储
dataworks数据集问题之同步任务如何解决
DataWorks数据集是指在阿里云DataWorks平台内创建、管理的数据集合;本合集将介绍DataWorks数据集的创建和使用方法,以及常见的配置问题和解决方法。
41 4
|
1天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
1月前
|
存储 数据处理 Apache
万字长文 | 泰康人寿基于 Apache Hudi 构建湖仓一体平台的应用实践
万字长文 | 泰康人寿基于 Apache Hudi 构建湖仓一体平台的应用实践
72 0
|
2月前
|
存储 分布式计算 调度
MaxCompute资源问题之删除调度资源如何解决
MaxCompute资源指的是在MaxCompute项目中使用的计算资源和存储资源;本合集旨在向用户展示如何高效管理MaxCompute资源,包括资源包管理、配额调整和性能优化等方面。
30 0
|
2月前
|
分布式计算 DataWorks IDE
MaxCompute数据问题之忽略脏数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
47 0
|
2月前
|
SQL 存储 分布式计算
MaxCompute问题之下载数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
38 0

相关产品

  • 云原生大数据计算服务 MaxCompute