基于DolphinScheduler的调度流程梳理及落地实践

news2025/1/22 22:01:59

b8708b63d00fedf3249091a080c69bd3.jpeg

目    录

 

01 背景‍

02 主流调度引擎

‍‍‍‍‍‍‍

03 DolphinScheduler核心概念及调度过程‍‍‍‍‍‍

04 开发实践

01‍

背景‍‍

随着数据中台概念及相关技术逐渐成熟、落地,不断有企业将其应用到自身业务中,将原本分散的各系统数据进行整合、分析,挖掘数据价值,为业务发展提供了更多可能。但伴随数据量不断累积,业务中操作大数据的场景越来越多,那么如何高效安全的处理大数据业务?

大数据业务一般包含对数据的Extract(提取)、Transform(转换)、Load(加载) 等步骤,(简称ETL),具体执行时,可分解为多个任务(Shell、Spark、Flink、Hive等)分别执行的,各个任务之间存在依赖关系,同一个任务可能被多条业务引用。最基本的处理方式是为每个任务充足执行时间,按照预留时间,定时执行下一条任务。但在企业应用场景中,每天定时执行的操作数据量大,这种处理方法存在因前置任务执行超时,导致整个业务执行失败的风险,严重时会给企业造成难以弥补的损失。因此,对企业而言,拥有一个安全高效的调度引擎系统至关重要。

02‍

主流调度引擎

目前主流调度引擎有Apache Oozie、Apache Airflow、Apache DophinScheduler,对比下三者的优缺点:

Apache Oozie只用于管理Hadoop中Hive、Sqoop、Spark、Shell、MR等任务的调度引擎,支持任务类型自定义,任务执行时支持暂停、停止、恢复等操作,支持RestfApi、JavaApi调用;配置调度任务复杂繁琐,不支持可视化任务流程定义,调度任务时可能会出现死锁。

Apache Airflow 使用Python语言编写,支持Python、Bash、HTTP、Mysql等任务及任务类型自定义,不支持可视化DAG任务作业流创建,不支持任务暂停、恢复、补数等操作,Scheduler单线程解析、调度任务,任务过载会卡死服务器,支持高可用但受限于Scheduler易发生单点故障。

Apache DolphinScheduler 旨在解决数据处理过程中复杂的依赖问题,支持Shell、MR、Spark、Hive、Flink等10余种任务类型,支持任务类型自定义,可实现在Web端可视化开发设计任务流程,支持跨语言、多租户、高可用,任务执行时支持暂停、停止、恢复、补数等操作,可查看任务执行信息,支持任务执行日志查看下载,Master、Worker服务支持动态上下线。

显而易见,Apache DolphinScheduler是一款优秀的调度引擎工具。普元数据治理运营平台(DWS)目前便接入了Apache DolphinScheduler 调度系统,远期会集成其他优秀的调度引擎系统。

03‍‍

DolphinScheduler

核心概念及调度过程

为更好的了解DolphinScheduler ,先介绍其核心概念:

Task(任务):调度执行的最小单元,包含Shell、Spark、Flink、Sql、MR等多种类型。可设置任务执行优先级、任务执行参数、超时告警、超时失败;

Process(作业流):由任务以有向无环图形式构成,执行时解析作业流为多个任务,可设置作业流优先级,作业执行全局参数、超时告警;

Command(待调度指令)作业流经手动调度或定时调度生成的数据,存储在数据库中;

Instance(实例)作业流、任务执行后,会生成相应的实例,记录执行时作业流、任务的状态及执行内容,任务实例可查看下载日志;

Master(调度服务)提供对作业流手动调度、定时调度、超时告警、任务容错、任务执行监控等功能;

Worker(运行服务)解析作业流,识别任务类型,调用对应任务类型的逻辑,生成作业流、任务实例;

Alert(告警服务)可通过Email、FTP、微信等多种方式,通知作业流、任务执行结果。

DolphinScheduler 通过DAG(有向无环图)创建任务、作业流,存在Master、Worker、Web、Alert等模块。先通过Web界面创建任务、以DAG形式组成作业流,落地到数据库,而后Web调度该作业流,生成Command数据。Master监听到数据库的Command表有新数据,解析后交由Worker选择对应的任务类型执行,执行完成后,由Alert通知任务执行结果。

下面具体展示下调度任务的创建、被调度执行的过程:

1.  根据具体业务需求,创建ETL Task,组合Task生成Process落库;

2.  手动调度或定时调度生成Command;

3.  Master监听读取Command记录,动态分配至Worker;

4.  Worker执行完成后,生成Task Instance、Process Instance落库;

5.  告警模块监听Instance,通过Email、FTP等发送任务执行结果。

fe7e2f82cc1be00670790822dc7544b0.png

04‍‍

数据开发实践‍‍‍‍‍‍‍‍‍

普元数据治理运营平台(DWS)将ETL作业流构建与调度引擎剥离,采用多引擎模式,区分开发、测试、生产环境。为实现此目标,对DolphinScheduler 调度平台做如下改造:

1. 定制开发了PDI-JOB、PDI-TRANS任务类型,用以支持从开源ETL工具Kettle迁移的JOB、Trans模型运行;

2. 将DolphinScheduler 表ID关联改造为CODE关联,保证切换调度引擎时,历史数据顺利迁移;

3. 适配Kingbase、DM、GBase等多款国产数据库,为信创事业增砖添瓦。

以上内容是本人在数据治理运营平台建设过程中对调度引擎的一些浅见,欢迎留言交流讨论。

72491b1781b72202f040fe7794eb4413.jpeg关于作者:曾亮,普元高级工程师,负责普元数据治理运营平台作业调度模块研发,元数据管理平台开发维护等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/924934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【FAQ】安防监控视频汇聚平台EasyCVR接入GB国标设备,无法显示通道信息的排查方法

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

http协议与apache

http概念: 互联网:是网络的网络,是所有类型网络的母集 因特网:世界上最大的互联网网络。即因特网概念从属于互联网概念 万维网:万维网并非某种特殊的计算机网络,是一个大规模的、联机式的信息贮藏库&…

【前端从0开始】JavaSript——Date对象

创建Date对象 var dateObjnew Date(); 方法 将日期转为字符串 toLocaleString() toLocaleDateString() toLocaleTimeString()获取年、月、日、小时、分、秒 ○1)getYear() //两位的年(2000年前)或三位的年[1900] 获取两位数的年,从1900年开始计算&…

硬件知识积累 USB 接口 type - A type - B type - C 的介绍与功能说明 (简单介绍)

1. USB 的介绍 1.1 USB 的定义 USB : 通用串行总线(英语: Universal Serial Bus,缩写:USB)是一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视&a…

第四节 C++ 选择结构

文章目录 前言介绍1. if 选择结构1.1 概述1.2. 单 if 语句执行1.2.1 分号和中括号注意事项1.2.2 案例:判断天气 1.3. if - else 语句结构1.3.1 案例1:考试成绩1.3.2 案例2:判断闰年1.3.3 案例3:判断三角形 1.4. 多分支结构1.4.1 语…

VIT Swin Transformer

VIT:https://blog.csdn.net/qq_37541097/article/details/118242600 Swin Transform:https://blog.csdn.net/qq_37541097/article/details/121119988 一、VIT 模型由三个模块组成: Linear Projection of Flattened Patches(Embedding层) Tran…

linux服务TCP参数配置

Linux TCP参数配置 阿里云规范 1.【推荐】高并发服务器建议调小 TCP 协议的 time_wait 超时时间。 说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服务器端会因为处于 time_wait 的连接数太多&am…

创邻科技张晨:图数据库,激活数据要素的新基建

“数据经济时代,数据要素产业链的各细分领域均蕴含机遇,图技术作为网络协同和数据智能的底层发动机,将深度掘金数字中国价值潜能”。 8月22日,在2023中国(南京)国际软件产品和信息服务交易博览会的信息技术…

构建 NodeJS 影院预订微服务并使用 docker 部署(04/4)

一、说明 构建一个微服务的电影网站,需要Docker、NodeJS、MongoDB,这样的案例您见过吗?如果对此有兴趣,您就继续往下看吧。 我们前几章的快速回顾 第一篇文章介绍了微服务架构模式,并讨论了使用微服务的优缺点。第二篇…

L1-033 出生年 测试点全过

题目 以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不…

汽车制造业外发文件时 如何阻断泄密风险?

汽车制造业是我国国民经济发展的支柱产业之一,具有产业链长、关联度高、就业面广、消费拉动大等特性。汽车制造行业景气度与宏观经济、居民收入水平和固定资产投资密切相关。 汽车制造业产业链长,关联度高,汽车制造上游行业主要为钢铁、化工…

VScode中写Verilog时,iverilog语法自动纠错功能不起作用

VScode中编写Verilog时,iverilog语法自动纠错功能不起作用 问题:按照教程搭建vscode下Verilog编译环境,发现语法纠错功能一直无效,检查了扩展Verilog-HDL/SystemVerilog/Bluespec SystemVerilog的配置也没有任何问题。 错误原因&a…

【前端从0开始】JavaSript——Array对象

Array对象 导语:页面中的数据,都是从数据库读取出来的,如果返回的数据多,一般情况下会以数组或者对象的形式来进行返回,如果想要删除或者添加数据,就可以使用数组中的方法 如图所示,我们可以通…

RE:从零开始的车载Android HMI(四) - 收音机刻度尺

最近比较忙,研究复杂的东西需要大量集中的时间,但是又抽不出来,就写点简单的东西吧。车载应用开发中有一个几乎避不开的自定义View,就是收音机的刻度条。本篇文章我们来研究如何绘制一个收音机的刻度尺。 本系列文章的目的是在讲…

单核cpu是怎么处理多线程的

首先,要先了解几个概念: 1、线程是CPU调度和分配的基本单位。 2、进程是操作系统进行资源分配(包括cpu、内存、磁盘IO等)的最小单位 。 3、一个进程可以包括多个线程。 4、CPU的时间片是由计算机的操作系统OS里的调度器分配的. …

UGUI可视化组件TextMeshPro

一.官方的介绍 TextMeshPro 是 Unity 的最终文本解决方案。它是 Unity UI Text 和旧版 Text Mesh 的完美替代方案。 功能强大且易于使用的 TextMeshPro(也称为 TMP)使用高级文本渲染技巧以及一组自定义着色器;它大幅改进了视觉质量&#xff…

C++快速回顾(四)

前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》,结合我自己的工作学习经历,我准备写一个音视频系列blog。C/C是音视频必…

微服务引擎 MSE 全新升级,15 分钟快速体验微服务全栈能力

作者:草谷 前言 微服务引擎 MSE 全新发布!新版本带来了一系列令人振奋的特性和改进,让您更轻松、高效地构建和管理微服务应用程序。从快速入门到迁移优化,MSE 为开发人员提供了全方位的支持和解决方案。无论您是刚刚接触微服务还…

二叉树中的最大路径和-递归

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root…

缓存最佳实践

目录 前言 一、Cache Aside(旁路缓存)策略 二、不一致解决场景及解决方案 一、数据库主从不一致 二、缓存与数据库不一致 三、问题分析 三、缓存误用 一、多服务共用缓存实例 二、调用方缓存数据 三、缓存作为服务与服务之间传递数据的媒介 四…