基于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.hqwc.cn/news/87174.html

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

相关文章

数据结构(Java实现)-ArrayList与顺序表

什么是List List是一个接口,继承自Collection。 List的使用 List是个接口,并不能直接用来实例化。 如果要使用,必须去实例化List的实现类。在集合框架中,ArrayList和LinkedList都实现了List接口。 线性表 线性表(lin…

Linux学习之DNS服务的原理

DNS服务一些理论 域名系统(Domain Name System,DNS)是互联网的核心应用服务,可以通过IP地址查询到域名,也可以通过域名查询到IP地址。 FQDN(Full Qualified Domain Name)是完全限定域名&#xf…

Smartbi电子表格软件版本更新,首次推出Excel轻应用和语音播放

Smartbi电子表格软件又又又更新啦! 此次更新,首次推出了新特性——Excel轻应用和语音播报。另外,还对产品功能、Demo示例、配套文档进行了完善和迭代。 低代码开发Excel轻应用 可实现迅速发布web应用 业务用户的需求往往都处于“解决问题”…

一文便知 GO 中mongodb 的安装与使用

MONGDB 安装与使用 咱们来回顾一下上次分享的内容: 如何使用log 包log 包原理和具体实现自定义日志 要是对 GO 的日志包还有点兴趣的话,可以查看文章 GO的日志怎么玩 ? 今天咱们来玩个简单的 mongodb 的安装和使用 MONGODB介绍 MongoDB 是一个基于…

uniapp 使用permission获取录音权限

使用前,需要先配置权限 android.permission.RECORD_AUDIO

1. 卷积原理

① 卷积核不停的在原图上进行滑动,对应元素相乘再相加。 ② 下图为每次滑动移动1格,然后再利用原图与卷积核上的数值进行计算得到缩略图矩阵的数据,如下图右所示。 import torch import torch.nn.functional as Finput torch.tensor([[1, 2…

2023.08.27 学习周报

文章目录 摘要文献阅读1.题目2.重点3.引言4.方法5.实验结果6.结论 深度学习Majorization-Minimization算法1.基本思想2.要求3.示意图 总结 摘要 This week, I read a computer science on the prediction of atmospheric pollutants in urban environments based on coupled d…

【Go 基础篇】Go语言中的自定义错误处理

错误是程序开发过程中不可避免的一部分,而Go语言以其简洁和高效的特性闻名。在Go中,自定义错误(Custom Errors)是一种强大的方式,可以为特定应用场景创建清晰的错误类型,以便更好地处理和调试问题。本文将详…

4年经验来面试20K的测试岗,一问三不知,我还真不如去招应届生...

公司前段缺人,也面了不少测试,结果竟然没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望。看简历很多都是4年工作经验,但面试…

集成学习:Bagging, Boosting,Stacking

目录 集成学习 一、bagging 二、boosting Bagging VS Boosting 1.1 集成学习是什么? Bagging Boosting Stacking 总结 集成学习 好比人做出一个决策时,会从不同方面,不同角度,不同层次去思考(多个自我&am…

RTSP/Onvif协议安防视频平台EasyNVR录像模式自定义操作

TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif流媒体协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播…

URI和URL和URN区别

URI、URL 和 URN 是一系列从不同角度来看待资源标识和定位的概念。虽然它们有一些重叠,但每个概念都强调了不同的方面。 URI(Uniform Resource Identifier):URI 是一个通用的术语,用于标识和定位资源。它是一个抽象的概…