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

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.rhkb.cn/news/104377.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb_LeadNews_Day7-ElasticSearch, Mongodb

JavaWeb_LeadNews_Day7-ElasticSearch, Mongodb elasticsearch安装配置 app文章搜索创建索引库app文章搜索思路分析具体实现 新增文章创建索引思路分析具体实现 MongoDB安装配置SpringBoot集成MongoDB app文章搜索记录保存搜索记录思路分析具体实现 查询搜索历史删除搜索历史 搜…

三个视角解读ChatGPT在教学创新中的应用

第一,我们正处于一个学生使用ChatGPT等AI工具完成作业的时代,传统的教育方法需要适应变化。 教育工作者不应该因为学生利用了先进技术而惩罚他们,相反,应该专注于让学生去挑战超越AI能力范围的任务。这需要我们重新思考教育策略和…

安卓系列机型永久去除data分区加密 详细步骤解析

安卓机型玩机搞机刷写第三方twrp存储出现乱码 存储不显示等情况都是没有解密data分区的原因。用户需要在twrp里格式化data分区重启后存储显示正常。那么这个操作后你的数据分区就会呗彻底清除。 今天主要解析下如何操作可以永久解密data分区。其实data分区加密原则上也是厂商为…

Kaggle回归问题Mercedes——Benz Greener Manufacturing

目录 前言1 题目介绍2 数据清洗3 数据可视化分析4 模型训练5 源码 前言 这是我在大三选修课的课程设计,内容参考了Kaggle上高赞的代码,有详细批注,整体比较基础,结构相对完整,便于初学者学习。这个是一个回归问题&…

webscoket在vue中的使用

项目场景: 提示:项目相关背景: 什么是webscoket?: WebSocket是一种计算机通信协议,通过单个TCP连接提供全双工通信信道。实现了web客户端和服务器之间的实时通信,与传统的HTTP连接相比,允许以…

设计模式笔记

工厂模式: 1.Simple Factory Pattern : 是指由一个工厂对象决定创建出哪一种产品类的实例,简单工厂是产品的工厂,工厂类负责创建的对象较少,客户端需要传入工厂类的参数,对于如何创建对象的逻辑不关心。 缺点&#xf…

Unity3d:GameFramework解析:实体,对象池,资源管理,获取计数,引用计数,自动释放

基本概念 1.GF万物基于引用池IReference 2.ObjectBase : IReference类的m_Target持有unity中Mono,资源,GameObejct 3.AssetObject : ObjectBase类m_Target持有Assetbundle中的Asset,具有获取,引用两个计数管理释放 4.ResourceObj…

线索二叉树——找前驱、后继

前言 一个二叉树被线索化之后,一个节点的前驱或后继会存在两种情况, 1、tag1,有明确的线索化前驱或后继, 2、tag0,只存在左右孩子,但是没用明确的线索化前驱后继,需要分析 //线索二叉树结点定义…

如何将PC电脑变成web服务器:将内网主机映射到外网实现远程访问

如何将PC电脑变成web服务器:将内网主机映射到外网实现远程访问 我是艾西,今天跟大家分享内容还是比较多人问的一个问题:如何将PC电脑变成web服务器。内网主机作为web服务器,内容包括本地内网映射、多层内网映射解决方案、绕过电信…

Linux socket网络编程概述 和 相关API讲解

socket网络编程的步骤 大体上,连接的建立过程就是:服务器在确定协议类型后,向外广播IP地址和端口号,并监听等待,直到客户端获取了IP地址和端口号并成功连接: 使用socket来进行tcp协议的网络编程的大体步骤…

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

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

操作系统期末考试复习——简答题总结

最近考研在复习OS,顺便把大二期末考试的简答题整理了一下~ 1、操作系统的定义 “操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序 2、操作系统的基本类型及特征 批处理操作系统、分时操作系统、实时…

400电话系统如何进行数据分析和优化?

400电话系统可以通过以下方式进行数据分析和优化: 呼叫记录:400电话系统会记录每一次呼叫的相关信息,包括呼叫时间、呼叫持续时间、呼叫地点等。通过分析呼叫记录,企业可以了解客户的呼叫习惯和行为模式,如高峰时段、呼…

新唐Nuc980学习笔记1 - 工程创建和下载

一、新唐nuc980 新唐nuc980 iot开发板是Linux 工业物联网开发平台,新唐科技提供工业物联网开发平台采用 NUC980DK 微处理器,此为一套完整的工业用物联网开平台,包含了完整的硬件设计与软件参考设计。包含了新唐执行速度 300 MHz 的 ARM9 MPU …

idea的debug断点的使用

添加断点(目前不知道如何添加断点,就给AutoConfigurationImportSelector的每个方法都加上断点): 然后将StockApplication启动类以debug方式运行,然后程序就会停在119行 点击上边的step over让程序往下运行一行&#x…

有效降低传导辐射干扰

一直以来,设计中的电磁干扰(EMI)问题十分令人头疼,尤其是在汽车领域。为了尽可能的减小电磁干扰,设计人员通常会在设计原理图和绘制布局时,通过降低高di / dt的环路面积以及开关转换速率来减小噪声源。 但…

Mybatis动态之灵活使用下

目录 ​编辑 前言: 1.mybatis的分页 1.1分页的应用场景 1.2分页的使用方式 2.mybatis中特殊字符处理 2.1mybatis中特殊字符介绍 2.2mybatis中特殊字符的使用方式 前言: 上篇我已经写了Mybatis动态之灵活使用,接着上篇写mybatis的分页…

Django基础3——视图函数

文章目录 一、基本了解1.1 Django内置函数1.2 http请求流程 二、HttpRequest对象(接受客户端请求)2.1 常用属性2.2 常用方法2.3 服务端接收URL参数2.4 QueryDict对象2.5 案例2.5.1 表单GET提交2.5.2 表单POST提交2.5.3 上传文件 三、HttpResponse对象&am…

Source Insight配置Cppcheck做静态测试(Windows)

1.安装cppcheck 先从cppcheck官方网站下载cppcheck的安装包。 注: (1)官网地址:https://sourceforge.net/projects/cppcheck (2)截止2023年8月,官方发布的最新版本是cppcheck-2.11-x64-Setup.…

rabbitmq卸载重新安装3.8版本

卸载之前的版本的rabbitmq 卸载rabbitmq 卸载前先停止rabbitmq服务 /usr/lib/rabbitmq/bin/rabbitmqctl stop查看rabbitmq安装的相关列表 yum list | grep rabbitmq卸载rabbitmq相关内容 yum -y remove rabbitmq-server.noarch 卸载erlang 查看erlang安装的相关列表 …