DolphinScheduler 介绍及系统架构

news2024/9/25 15:27:17

目录

一、DolphinScheduler 介绍

1.1 关于 DolphinScheduler

1.2 特性

简单易用

丰富的使用场景

High Reliability

High Scalability

1.3 名词解释

1.3.1 名词解释

1.3.2 模块介绍

二、DolphinScheduler 系统架构

2.1 系统架构图

2.2 架构说明

MasterServer

该服务内主要包含:

WorkerServer

该服务包含:


 

一、DolphinScheduler 介绍

1.1 关于 DolphinScheduler

        Apache DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。

        Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。 解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。

1.2 特性

简单易用

  • 可视化 DAG: 用户友好的,通过拖拽定义工作流的,运行时控制工具。
  • 模块化操作: 模块化有助于轻松定制和维护。

丰富的使用场景

  • 支持多种任务类型: 支持Shell、MR、Spark、SQL等10余种任务类型,支持跨语言,易于扩展。
  • 丰富的工作流操作: 工作流程可以定时、暂停、恢复和停止,便于维护和控制全局和本地参数。

High Reliability

  • 高可靠性: 去中心化设计,确保稳定性。 原生 HA 任务队列支持,提供过载容错能力。 DolphinScheduler 能提供高度稳健的环境。

High Scalability

  • 高扩展性: 支持多租户和在线资源管理。支持每天10万个数据任务的稳定运行。

1.3 名词解释

在对 Apache DolphinScheduler 了解之前,我们先来认识一下调度系统常用的名词。

1.3.1 名词解释

DAG: 全称 Directed Acyclic Graph,简称 DAG。工作流中的 Task 任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:

流程定义:通过拖拽任务节点并建立任务节点的关联所形成的可视化 DAG。

流程实例:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成。每运行一次流程定义,产生一个流程实例。

任务实例:任务实例是流程定义中任务节点的实例化,标识着某个具体的任务。

任务类型:目前支持有 SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖),同时计划支持动态插件扩展,注意:其中 SUB_PROCESS类型的任务需要关联另外一个流程定义,被关联的流程定义是可以单独启动执行的。

调度方式:系统支持基于 cron 表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、定时、重跑、暂停、停止、恢复等待线程。 其中 恢复被容错的工作流 和 恢复等待线程 两种命令类型是由调度内部控制使用,外部无法调用。

定时调度:系统采用 quartz 分布式调度器,并同时支持cron表达式可视化的生成。

依赖:系统不单单支持 DAG 简单的前驱和后继节点之间的依赖,同时还提供任务依赖节点,支持流程间的自定义任务依赖。

优先级 :支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出。

邮件告警:支持 SQL任务 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知。

失败策略:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,继续是指不管并行运行任务的状态,直到流程失败结束。结束是指一旦发现失败任务,则同时Kill掉正在运行的并行任务,流程失败结束。

补数:补历史数据,支持区间并行串行两种补数方式,其日期选择方式包括日期范围日期枚举两种。

1.3.2 模块介绍

  • dolphinscheduler-master 模块,提供工作流管理和编排服务。

  • dolphinscheduler-worker 模块,提供任务执行管理服务。

  • dolphinscheduler-alert 告警模块,提供 AlertServer 服务。

  • dolphinscheduler-api web 应用模块,提供 ApiServer 服务。

  • dolphinscheduler-common 通用的常量枚举、工具类、数据结构或者基类。

  • dolphinscheduler-dao 提供数据库访问等操作。

  • dolphinscheduler-remote 基于 netty 的客户端、服务端。

  • dolphinscheduler-service 模块,包含 Quartz、Zookeeper、日志客户端访问服务,便于server 模块和 api 模块调用。

  • dolphinscheduler-ui 前端模块。

二、DolphinScheduler 系统架构

2.1 系统架构图

2.2 架构说明

  • MasterServer

    MasterServer 采用分布式无中心设计理念,MasterServer 主要负责 DAG 任务切分、任务提交监控,并同时监听其它 MasterServer 和 WorkerServer 的健康状态。MasterServer 服务启动时向 Zookeeper 注册临时节点,通过监听 Zookeeper 临时节点变化来进行容错处理。MasterServer 基于 netty 提供监听服务。

    该服务内主要包含:
    • DistributedQuartz 分布式调度组件,主要负责定时任务的启停操作,当 quartz 调起任务后,Master 内部会有线程池具体负责处理任务的后续操作;

    • MasterSchedulerService 是一个扫描线程,定时扫描数据库中的 t_ds_command 表,根据不同的命令类型进行不同的业务操作;

    • WorkflowExecuteRunnable 主要是负责 DAG 任务切分、任务提交监控、各种不同事件类型的逻辑处理;

    • TaskExecuteRunnable 主要负责任务的处理和持久化,并生成任务事件提交到工作流的事件队列;

    • EventExecuteService 主要负责工作流实例的事件队列的轮询;

    • StateWheelExecuteThread 主要负责工作流和任务超时、任务重试、任务依赖的轮询,并生成对应的工作流或任务事件提交到工作流的事件队列;

    • FailoverExecuteThread 主要负责Master容错和 Worker 容错的相关逻辑;

  • WorkerServer

    WorkerServer 也采用分布式无中心设计理念,WorkerServer 主要负责任务的执行和提供日志服务。 WorkerServer 服务启动时向 Zookeeper 注册临时节点,并维持心跳。 WorkerServer 基于 netty 提供监听服务。

    该服务包含:
    • WorkerManagerThread 主要负责任务队列的提交,不断从任务队列中领取任务,提交到线程池处理;

    • TaskExecuteThread 主要负责任务执行的流程,根据不同的任务类型进行任务的实际处理;

    • RetryReportTaskStatusThread 主要负责定时轮询向 Master 汇报任务的状态,直到 Master 回复状态的 ack,避免任务状态丢失;

  • ZooKeeper

    ZooKeeper 服务,系统中的 MasterServer 和 WorkerServer 节点都通过 ZooKeeper 来进行集群管理和容错。另外系统还基于 ZooKeeper 进行事件监听和分布式锁。 我们也曾经基于 Redis 实现过队列,不过我们希望 DolphinScheduler 依赖到的组件尽量地少,所以最后还是去掉了 Redis 实现。

  • AlertServer

    提供告警服务,通过告警插件的方式实现丰富的告警手段。

  • ApiServer

    API 接口层,主要负责处理前端 UI 层的请求。该服务统一提供 RESTful api 向外部提供请求服务。

  • UI

    系统的前端页面,提供系统的各种可视化操作界面。

更多关于大数据分布式工作流调度系统--DolphinScheduler 的架构原理及实现思路可以参考官方文档:https://dolphinscheduler.apache.org/zh-cn/docs/3.1.8/architecture/design  

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

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

相关文章

【Java核心基础】一文带你了解Java中super关键字的重要作用

“super”关键字在编程中扮演着重要角色,它允许我们直接访问父类中的属性、方法或构造函数,即使子类中存在同名元素。此外,“super()”在子类构造函数中调用父类初始化操作,确保父类属性正确初始化。有时,“super”还可…

Python 爬虫之下载视频(五)

爬取第三方网站视频 文章目录 爬取第三方网站视频前言一、基本情况二、基本思路三、代码编写四、注意事项(ffmpeg)总结 前言 国内主流的视频平台有点难。。。就暂且记录一些三方视频平台的爬取吧。比如下面这个: 一、基本情况 这次爬取的方…

OpenHarmony之内核层解析~

OpenHarmony简介 技术架构 OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件…

【RocketMQ】Console页面报错:rocketmq remote exception,connect to xxx failed.

现象 console报错,无法连接该节点,把该节点杀掉,还是继续报错,重启之后,报错的端口变成11911。 分析 正常一个broker会启动三个端口,不同版本的规律不太一样,4.X版本是: 配置文件…

如何使用ScrapySharp下载网页内容

C#简介 C#是一种由微软开发的通用、面向对象的编程语言。它结合了C和C的优点,并封装了Java的一些特性。C#被广泛评价Windows平台的软件开发,包括Web应用、桌面应用和游戏开发等领域。 使用场景 在网络数据挖掘和信息收集的过程中,我们需要…

3D模型如何制作透明玻璃材质

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 1、什么是玻璃材质 在3D建模和渲染中,玻璃是一种非常常见…

【期末复习】微信小程序复习大纲( 1- 5 章)

前言: 这周开始进入期末复习周,没时间看C/C、linux等知识了,先把期末考试必考的知识捋一遍。 目录 第一章 微信小程序入门 一、填空题 二、判断题 三、选择题 四、简答题 第二章 微信小程序页面制作 一、填空题 二、判…

【六大排序详解】中篇 :选择排序 与 堆排序

选择排序 与 堆排序 选择排序 选择排序 与 堆排序1 选择排序1.1 选择排序原理1.2 排序步骤1.3 代码实现 2 堆排序2.1 堆排序原理2.1.1 大堆与小堆2.1.2 向上调整算法2.1.3 向下调整算法 2.2 排序步骤2.3 代码实现 3 时间复杂度分析 Thanks♪(・ω・)&#…

智慧交通应用钡铼技术无线工业边缘路由网关R10A

智慧交通应用中,无线工业边缘路由网关扮演着至关重要的角色。在这方面,钡铼技术无线工业边缘路由网关R10A被广泛应用于交通管理系统中,它具备一路RS485、一路WAN、一路LAN、4G和WiFi等功能。本文将详细介绍R10A的参数以及在智慧交通领域的应用…

蓝桥题库(X图形(矩阵))

题目剖析: 简单来说就是找到一个由字母组成的X图形,且每个边上的字母都与中心点的字母相同 算法设计: 1.从中心点向外辐射,每找到一个这样的图形,则次数加一 2.从最外层向中心点靠拢,如果中间遇到不满足…

Unity Shader Early-Z技术

Unity Shader Early-Z技术 Early-Z技术Unity渲染顺序总结Alpha Test(Discard)在移动平台消耗较大的原因 Early-Z技术 传统的渲染管线中,ZTest其实是在Blending阶段,这时候进行深度测试,所有对象的像素着色器都会计算一…

外汇天眼:交易高手!是这样炼成的!

在外汇市场中,那些总是赚的“盆满钵满”的外汇投资高手实在是让人羡慕不已,他们能够准确预测市场走势,抓住每一个交易机会,实现高收益,很多投资新手因此也想入市,但即使是这样,还是有很多新手对…

关于标准那些事——第五篇 两仪

国家标准的编写,对于标准的名称和结构,很多人往往是不那么在意的,但这恰恰也是非常重要的点,今天就给大家分享一下这太极所生的“两仪”。我会用最精简的文字概括出核心内容,让大家有一个初步且完整的概念,…

规律生活指南:数据可视化助你游刃有余

随着信息时代的到来,我们生活在一个数据海洋中,每天都会面对大量的信息和数字。在这个信息过载的时代,如何从杂乱的数据中找到规律,让生活更加有序成为了一项挑战。而数据可视化作为一种强大的工具,不仅能够帮助我们理…

算法基础之数字三角形

数字三角形 核心思想&#xff1a;线性dp 集合的定义为 f[i][j] –> 到i j点的最大距离 从下往上传值 父节点f[i][j] max(f[i1][j] , f[i1][j1]) w[i][j] 初始化最后一层 f w #include <bits/stdc.h>using namespace std;const int N 510;int w[N][N],f[N][…

ACM模式Java输入输出模板

输入输出练习网站&#xff1a;https://kamacoder.com/ Java读写模板 Scanner 方式一&#xff1a;Scanner&#xff08;效率不高&#xff09; public class Main {public static void main(String[] args) {// 第一个方式ScannerScanner sc new Scanner(System.in);String s …

SpringMVC核心处理流程梳理

1、处理流程图展示 当我拿出这张图&#xff0c;阁下又该如何应对呢&#xff1f;执行流程是不是一目了然了。 2、DispatcherServlet&#xff1a;中央处理器或者中央调度器 下图官方的解释应该最完善了。 3、SpringMVC三大核心组件 HandlerMapping 处理器映射器&#xff0c;…

vue使用ElementUI搭建精美页面入门

ElementUI简直是css学得不好的同学的福音 ElementUI官网&#xff1a; Element - The worlds most popular Vue UI framework 安装 在vue文件下&#xff0c;用这个命令去安装Element UI。 npm i element-ui -S step1\先切换到vue的目录下去&#xff0c;注意这里面的WARN不是…

Ubuntu系统如何安装SVN服务端并通过客户端无公网ip实现远程访问?

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

Unity重写Inspector简化分组配置文件

Unity重写Inspector简化分组配置文件 重写Inspector创建分组管理配置文件创建修改参数参数对应类工程在我的资源中名为CreateConfig&#xff0c;免费下载 重写Inspector创建分组管理配置文件 创建 修改参数 参数对应类 using UnityEngine;public class GameConfig : Scriptab…