本文章经授权转载,原文链接:

https://blog.csdn.net/MiaoSO/article/details/104770720

目录

1. 架构及名词解释

  • 1.1 DolphinScheduler 说明

  • 1.2 相关网址

  • 1.3 名词解释

  • 1.4 DolphinScheduler 架构

    • 1.4.1 MasterServer

    • 1.4.2 WorkerServer

    • 1.4.3 ZooKeeper

    • 1.4.4 Task Queue

    • 1.4.5 Alert

    • 1.4.6 API

    • 1.4.7 UI

1. 架构及名词解释

1.1 DolphinScheduler 说明

Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

1.2 相关网址

官网:

https://dolphinscheduler.apache.org/zh-cn/index.html

Git 地址:

https://github.com/apache/incubator-dolphinscheduler

系统架构设计:

https://dolphinscheduler.apache.org/zh-cn/docs/1.2.0/user_doc/architecture-design.html

系统使用手册:

https://dolphinscheduler.apache.org/zh-cn/docs/1.2.0/user_doc/system-manual.html

FAQ:

https://dolphinscheduler.apache.org/zh-cn/docs/release/faq.html

1.3 名词解释

  • 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.4 DolphinScheduler 架构

1.4.1 MasterServer

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

该服务内主要包含:

  • Distributed Quartz 分布式调度组件,主要负责 定时任务的启停 操作,当 quartz 调起任务后,Master 内部会有线程池具体负责处理任务的后续操作。

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

  • MasterExecThread 主要是负责 DAG任务切分、任务提交监控、各种不同命令类型的逻辑处理。

  • MasterTaskExecThread 主要负责任务的持久化。

1.4.2 WorkerServer

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

该服务包含:

  • FetchTaskThread 主要负责不断 从 Task Queue 中领取任务,并根据不同任务类型调用TaskScheduleThread 对应执行器。

  • LoggerServer 是一个RPC服务,提供日志分片查看、刷新和下载等功能

1.4.3 ZooKeeper

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


1.4.4 Task Queue

提供 任务队列 的操作,目前队列也是基于 Zookeeper 来实现。由于队列中存的信息较少,不必担心队列里数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性能没影响。

1.4.5 Alert

提供 告警相关 接口,接口主要包括告警两种类型的告警数据的存储、查询和通知功能。其中通知功能又有邮件通知和**SNMP(暂未实现)**两种。

1.4.6 API

API接口层,主要负责 处理前端UI层的请求。该服务统一提供 RESTful api 向外部提供请求服务。接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂停、恢复、从该节点开始执行等等。

1.4.7 UI

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

文章目录:

DS 1.2.0 使用文档(1/8):架构及名词解释

DS 1.2.0 使用文档(2-3/8):集群规划及环境准备

DS 1.2.0 使用文档(4/8):软件部署

DS 1.2.0 使用文档(5/8):使用与测试

DS 1.2.0 使用文档(6/8):任务节点类型与任务参数设置

DS 1.2.0 使用文档(7/8):系统参数及自定义参数

DS 1.2.0 使用文档(8/8):附录

Apache DolphinScheduler 1.2.0 使用文档(1/8):架构及名词解释的更多相关文章

  1. Apache PDFbox开发指南之PDF文档读取

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51542309 相关文章: <Apache PDFbox开发指南之PDF文本内容 ...

  2. Flask 中文手册 0.10 文档

    Flask 中文手册 0.10 文档 欢迎使用 Flask 欢迎阅读 Flask 文档. 本文档分为几个部分.我推荐您先从 安装 开始,之后再浏览 快速入门 章节. 教程 比快速入门更详细地介绍了如何 ...

  3. Apache Spark 2.2.0 中文文档

    Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN Geekhoo 关注 2017.09.20 13:55* 字数 2062 阅读 13评论 0喜欢 1 快速入门 使用 ...

  4. Android SDK API (2.2,2.3,3.0)中文版文档

    转的一篇.觉得很有用. Android SDK API (2.2,2.3,3.0)中文版文档 地址:http://android.laoguo.org固定连接:http://www.laoguo.or ...

  5. Fortify 4.0 帮助文档下载

    Fortify 4.0 帮助文档下载 http://pan.baidu.com/s/1hqzbF8o

  6. 李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档

    李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档 SDK 2.x 至 3.0 升级指南 环信 SDK 3.0 升级文档 3.0 中的核心类为 EMClient 类,通过 EMCl ...

  7. Webpack 2.0 的文档

    Webpack 2.0 的文档 https://webpack.js.org/get-started/

  8. Apache Storm 1.1.0 中文文档 | ApacheCN

    前言 Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ...

  9. Apache Spark 2.2.0 中文文档 - 概述 | ApacheCN

    Spark 概述 Apache Spark 是一个快速的, 多用途的集群计算系统. 它提供了 Java, Scala, Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎 ...

随机推荐

  1. 《HALCON数字图像处理》第五章笔记

    目录 第五章 图像运算 图像的代数运算 加法运算 图像减法 图像乘法 图像除法 图像逻辑运算(位操作) 图像的几何变换 图像几何变换的一般表达式 仿射变换 投影变换 灰度插值 图像校正 我在Gitee ...

  2. while循环、do..while循环

    While循环 While循环呢它是更具条件来判断是否执行大括号里的内容 ,只要条件成立就会一值执行直到不满足条件它的语法格式: while(循环条件){ 执行语句 }那么我们来做一个小测试看看: p ...

  3. Node.js精进(3)——流

    在 JavaScript 中,一般只处理字符串层面的数据,但是在 Node.js 中,需要处理网络.文件等二进制数据. 由此,引入了Buffer和Stream的概念,两者都是字节层面的操作. Buff ...

  4. Spring框架系列(2) - Spring简单例子引入Spring要点

    上文中我们简单介绍了Spring和Spring Framework的组件,那么这些Spring Framework组件是如何配合工作的呢?本文主要承接上文,向你展示Spring Framework组件 ...

  5. 设计模式-策略模式前端应用校验vue写法

    1.定义:定义一系列算法,把它们一个个封装起来,并且它们可以相互替换 2.实际应用:减少if else的使用,在有多种算法相似的情况下,使用 if-else 所带来的复杂和难以维护,提高维护和可读性, ...

  6. sql server 跨IP库更新表字段(OPENDATASOURCE 、update)

    --跨ip库更新表字段 update uat set goodsType=dev.goodsType from OPENDATASOURCE('SQLOLEDB','Data Source=127.0 ...

  7. ​2005/2010/2015-2021年全国兴趣点POI数据

    数据下载链接:数据下载链接 POI是"Point of Interest"的缩写,中文可以翻译为"兴趣点".POI数据会包含各种信息,如前面提到的名称.别名等信 ...

  8. dolphinscheduler简单任务定义及复杂的跨节点传参

    dolphinscheduler简单任务定义及跨节点传参 转载请注明出处 https://www.cnblogs.com/funnyzpc/p/16395094.html 写在前面 dolphinsc ...

  9. 静态static关键字概述和静态static关键字修饰成员变量

    static关键字 概述 关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的.也就是说,既然属于类,就可以不靠创建对象来调用了 ...

  10. Solution -「BZOJ3894」文理分科

    Sol. 说实话,对于一个初学者,这道题很难看出是一道网络流-最小割.对于一个熟练者,这是比较套路的一种模型. 最小割,可以看做是在一个图中删掉最小的边权和使得源点.汇点不连通.或者换一个角度,可以看 ...