海豚调度数仓任务管理规范

2024-02-02 09:28

本文主要是介绍海豚调度数仓任务管理规范,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

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

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

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

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

三、DolphinScheduler数仓开发任务管理规范

四、结语


前言:大数据领域对多种任务都有调度需求,以离线数仓的任务应用最多,许多团队在调研开源产品后,选择DolphinScheduler作为调度场景的技术选型。得益于DS优秀的特性,在对数仓任务做运维和管理的时候,往往比较随意,或将所有任务节点写到一个工作流里,或将每个逻辑节点单独定义一个工作流, 缺少与数仓建模对应的任务管理规范;这造成了数据管理困难和异常容错繁琐等痛点,本文基于数仓建模标准的方法论,构建一套用于DS管理数仓任务的规范,避免以上痛点。

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

       在使用DS做数仓任务管理时,数据建模分层落地到调度上缺少规范,社区用户用起来比较乱,一些常见的场景如下:

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

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

类似例子如下:

单个工作流:

包含所有计算逻辑:

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

缺点:对于数据管理困难,只能人为的观察定位数据情况;

任务运行异常后,容错困难,要排查所有逻辑节点,并将计算逻辑回滚,这是特别繁琐的过程;

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

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

类似例子如下:

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

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

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

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

        任务类型、依赖关系、定时调度、任务优先级是系统提供的能力,数仓分层管理和层级依赖是调度能力之上的任务管理规范。这里参考数据建模规范构建与之对应的任务管理规范。

数据建模架构如下:

数据建模分析与数仓维度建模规范-CSDN博客

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

  1. 逻辑开发:数据需求的实现;
  2. 数据管理:各层级数据划分;
  3. 开发依赖:数据层级依赖实现;
  4. 异常容错:异常任务定位和数据复原重跑。

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

三、DolphinScheduler数仓开发任务管理规范

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

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

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

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

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

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

异常容错工作流:

这一个工作流,主要是为了在任务运行异常时,删除中间表计算的新增结果;

依据数据模型的表设计,想将DS的任务血缘当简单数据血缘使用需求的,可以在这一个工作流里将节点关联,数据清理和任务血缘不冲突,还可以顺便检测数据清理情况。

四、结语

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

    如果这份博客对大家有帮助,希望各位给i7杨一个免费的点赞👍作为鼓励,并评论收藏一下⭐,谢谢大家!!!

    制作不易,如果大家有什么疑问或给i7杨的意见,欢迎评论区留言。

这篇关于海豚调度数仓任务管理规范的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/670246

相关文章

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2