DolphinScheduler 介绍及系统架构

目录

一、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  

下一篇文章:DolphinScheduler 集群模式安装部署-CSDN博客 

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

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

相关文章

Mybatis插件入门

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

Java:IO流——字节流和字符流

目录 IO流的基本概念 IO流体系结构 FileOutputStream字节输出流 构造方法 成员方法 细节 关流 FileInputStream字节输入流 构造方法及成员方法 read不带参数代码示例 read带参数代码示例​编辑 将字节数组或字符数组转成字符串 FileReader 字符输入流 构造方法和…

远程桌面连接问题:出现身份验证错误。要求的函数不受支持错误【已解决】

问题描述: 在使用远程桌面时,出现的错误,原因在于CredSSP加密数据库修正问题,可以通过设置组策略解决问题 远程桌面连接 出现身份验证错误。 要求的函数不受支持错误注意: 如果使用注册表编辑器或其他方法修改注册表不…

方案:智能分析网关V4区域人数超员AI算法模型的应用场景介绍

视频AI智能分析技术已经深入到人类生活的各个角落,与社会发展的方方面面紧密相连。从日常生活中的各种场景,如人脸识别、车牌识别,到工业生产中的安全监控,如工厂园区的翻越围栏识别、入侵识别、工地的安全帽识别、车间流水线产品…

GPT-5、开源、更强的ChatGPT!OpenAI公布2024年计划

年终岁尾,正值圣诞节热闹气氛的OpenAI写下了2024年的发展清单。 OpenAI联合创始人兼首席执行官Sam Altman在社交平台公布,AGI(稍晚一些)、GPT-5、更好的语音模型、更高的费率限制; 更好的GPTs;更好的推理…

C语言课程设计|学生成绩管理系统(含完整代码)

目录 前言 简介 学生信息录入功能 学生单个信息查询 查询全部学生信息 修改学生信息 删除学生信息 退出 完整代码 前言 在临近期末之际,相信好多初学C语言的同学都开始为写C语言课程设计这件事开始焦虑了吧?或许会不知所措,或许会…

这些浏览器中的AI扩展太香了

B站:啥都会一点的研究生公众号:啥都会一点的研究生 众所周知,浏览器只有添加了扩展才能让其火力全开,效率翻倍,而当有了AI的加持后,直接起飞 本期将整理一些目前肥肠火的基于AI语言模型的扩展程序&#x…

java企业网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业网站系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

【Linux驱动】设备树简介 | 内核对设备树的处理

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🧲设备树简介🏹设备树语法🏹常见节点和属性&#x1f3f9…

基于ssm的二手商品交易平台+vue论文

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…

基于ssm的航空票务推荐系统的设计与实现论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,航班信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大…

Vue.js学习笔记(1)——Visual Studio Code搭建Vue.js框架

1 安装Node.js 1、下载安装包:进入官网(https://nodejs.org/en),下载左侧的稳定版。 2、选择安装位置,不用勾选自动安装必要工具。 其他都默认Next。 配置环境,具体参考本文章: https://blo…

用通俗易懂的方式讲解大模型:基于 Langchain 和 ChatChat 部署本地知识库问答系统

之前写了一篇文章介绍基于 LangChain 和 ChatGLM 打造自有知识库问答系统,最近该项目更新了0.2新版本,这个版本与之前的版本差别很大,底层的架构发生了很大的变化。 该项目最早是基于 ChatGLM 这个 LLM(大语言模型)来…

操作系统:可变分区管理

有作业序列:作业A要求42K;作业B要求27K,作业C要求22K,作业和空闲内存区如下图所示,请画出最佳适应算法空闲队列图,并分析最佳适应算法是否适合该作业系列。 答:最佳适应算法是按照空闲块由小到大…

解决windows系统找不到msvcr100.dll问题,vcomp100.dll缺失的5个解决方法

在日常使用计算机的过程中,我们可能会遇到一些错误提示,其中之一就是“找不到vcomp100.dll”的错误。那么,vcomp100.dll究竟是什么文件?为什么会出现丢失的情况?本文将为您详细解析vcomp100.dll的作用、丢失原因以及提…

ssm500基于J2EE的仓库管理系统设计与开发论文

摘 要 如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于仓库信息…

Java注解以及自定义注解

Java注解以及自定义注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为 我们提供的元注解和相关定义注解的语法。 1、注解 1.1 注解的官方定义 注解是一种元数据形式。…

【Git】Git的基本操作

前言 Git是当前最主流的版本管理器,它可以控制电脑上的所有格式的文件。 它对于开发人员,可以管理项目中的源代码文档。(可以记录不同提交的修改细节,并且任意跳转版本) 本篇博客基于最近对Git的学习,简单介…

2023年03月15日_GPT4的发布会简单介绍

文章目录 各种考试长度限制图像输入功能开发者API定价评估框架1 - 基准测试表现2 - 文本和图像提示3 - 系统消息功能4 - 真实性、稳定性、可靠性 2023年3月15日 今天凌晨呢 万众瞩目的大型多模态模型 GPT-4正式发布 我们先总结一下发布会的重点 首先 这个模型能够接受图像和…

【Leetcode 39】组合总和 —— 回溯法

39. 组合总和 给你一个无重复元素的整数数组candidates和一个目标整数target ,找出candidates中可以使数字和为目标数target的 所有不同组合,并以列表形式返回。你可以按**任意顺序 **返回这些组合。 candidates中的同一个数字可以 无限制重复被选取 。…