DolphinScheduler——调度系统数仓任务编排规范

  原文大佬的这篇DS数仓任务编排规范有借鉴意义,这里摘抄下来用作学习和知识沉淀。

前言

   在使用DolphinScheduler(以下简称DS)做数仓任务管理时,数据建模分层落地到调度上缺少规范,往往比较随意,例如将所有任务节点写到一个工作流里,或将每个逻辑节点单独定义一个工作流等。下文基于数仓建模标准的方法论,构建一套用于DS管理数仓任务的规范。

一、海豚调度数仓任务现状分析

   在使用调度能力的时候,一些常见的场景如下:

1.1 一个任务流构建数仓所有的逻辑节点

  DS中有任务血缘的概念,这个概念和数据血缘有许多类似的地方;在构建调度任务的时候,用户容易将任务血缘和数据血缘混淆,希望在构建数仓生命周期的时候,通过任务血缘呈现出数据血缘的关系,这导致丢失了数据建模规范的分层管理

类似例子如下:

单个工作流:

包含所有计算逻辑:

优点:这样做的好处是可以在一个工作流里直观的复现数据建模;

缺点:对于数据管理困难,只能人为的观察定位数据情况;任务运行异常后,容错困难,要排查所有的逻辑节点,并将计算逻辑回滚,这是特别繁琐的过程;

1.2 每个逻辑节点构建一个任务流

     除了将整个数仓的逻辑包装到一个工作流,还有另外一种方式:将每个逻辑节点包装成一个工作流;这种可以将计算逻辑解耦,任务运行异常的时候逻辑回归也清晰简单;但是依旧没有做到合理的数仓建模分层管理,且操作繁琐,面对超大量任务时,创建工作流将成为一种负担。

类似例子如下:

优点:优秀的异常容错,任务出现异常计算的时候,前后任务逻辑就能异常回滚重跑;

缺点:任务流创建繁琐,且没有做好数仓规范的数据分层管理。

1.3 数仓任务管理调度需求分析

   从数仓的视角,任务调度核心需求是:任务类型、依赖关系、定时调度、任务优先级、以及数仓分层管理,层级依赖(调度系统的视角,还包括高可用、告警、资源管理、用户安全等)。

   任务类型、依赖关系、定时调度、任务优先级是DS系统提供的能力,数仓分层管理和层级依赖是调度能力之上的任务管理规范

数据建模架构如下:

数据建模到数仓开发过程中需要关注4点:

  1. 逻辑开发:数据需求的实现;

  2. 数据管理:各层级数据划分;

  3. 开发依赖:数据层级依赖实现;

  4. 异常容错:异常任务定位和数据复原重跑。

构建在调度系统之上的数仓任务编排规范,需要满足以上要求。

二、数仓开发任务管理规范

  为了和数据建模规范保持一致,我们按照数据建模的分层理论,设计调度任务的编排规范

从顶层设计上将工作流定义为3类:

  • 数仓分层工作流:ODS、DIM、DW、ADS每层一个工作流;DW层可以根据业务需求,细分出三个DWD、DWM、DWS等好实现业务需求的单独任务流管理;
  • 数仓任务Master管理工作流:将数仓分层,按照开发依赖串联到一个工作流中统一管理;
  • 异常容错工作流:数仓运行过程中,中途出错或者结果异常,需要数据环境复原,就可以将中间表清理逻辑包装在异常容错工作流,做统一数据清理,然后再从头跑数仓任务。

数仓开发工作流规范如下:

  数仓每层工作流只关注每层的逻辑:以ODS层为例,该层提供多个数据应用方数据支持,所以在这个任务工作流里,构建这一层的所有逻辑节点

运行任务管理Master工作流,节点布局规范如下:

异常容错工作流:

这一个工作流,主要是为了在任务运行异常时,删除中间表计算的新增结果;依据数据模型的表设计,想将DS的任务血缘当简单数据血缘使用需求的,可以在这一个工作流里将节点关联,数据清理和任务血缘不冲突,还可以顺便检测数据清理情况。

三、结语

 除此之外,数仓还有一些局部概念需要在任务编排上做规范,比如需要将DS项目和数仓映射,一个DS项目管理一个数仓;需要将数据集市和工作流映射,ADS层有多种数据应用场景就拆分成多个工作流等;本文的规范是以数仓标准数据模型构建的,如果有特殊需求,可以在这个任务管理规范基础上做相应调整。

参考文章:

Apache DolphinScheduler数仓任务管理规范

  • 36
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值