Apache DolphinScheduler 1.2.0 使用文档(1/8):架构及名词解释
本文章经授权转载,原文链接:
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):架构及名词解释的更多相关文章
- Apache PDFbox开发指南之PDF文档读取
		转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51542309 相关文章: <Apache PDFbox开发指南之PDF文本内容 ... 
- Flask 中文手册 0.10 文档
		Flask 中文手册 0.10 文档 欢迎使用 Flask 欢迎阅读 Flask 文档. 本文档分为几个部分.我推荐您先从 安装 开始,之后再浏览 快速入门 章节. 教程 比快速入门更详细地介绍了如何 ... 
- Apache Spark 2.2.0 中文文档
		Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN Geekhoo 关注 2017.09.20 13:55* 字数 2062 阅读 13评论 0喜欢 1 快速入门 使用 ... 
- 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 ... 
- Fortify 4.0 帮助文档下载
		Fortify 4.0 帮助文档下载 http://pan.baidu.com/s/1hqzbF8o 
- 李洪强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 ... 
- Webpack 2.0 的文档
		Webpack 2.0 的文档 https://webpack.js.org/get-started/ 
- Apache Storm 1.1.0 中文文档 | ApacheCN
		前言 Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ... 
- Apache Spark 2.2.0 中文文档 - 概述 | ApacheCN
		Spark 概述 Apache Spark 是一个快速的, 多用途的集群计算系统. 它提供了 Java, Scala, Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎 ... 
随机推荐
- Probabilistic two-stage detection
- “极简”创建 github page 并设置域名
			最简单最详细的,创建 github page 并设置域名,没有多余的步骤,并且多图,对新手特别友好 尝试用 github page 创建博客,并设置独立域名.网上找了许多教程,都太复杂.自己的创建过程 ... 
- 当运行npm install 命令的时候带上ignore-scripts,会发生什么?
			摘要:运行npm install 命令的时候带上ignore-scripts, 可以避免一个恶意包里的病毒. 本文分享自华为云社区<运行npm install 命令的时候带上--ignore-s ... 
- CabloyJS的微信API对接模块:当前支持微信公众号和微信小程序
			Cabloy-微信是什么 Cabloy-微信是基于CabloyJS全栈业务开发框架开发的微信接口模块,当前整合了微信公众号和微信小程序的接口,达到开箱即用的使用效果.在Cabloy-微信的基础上,可以 ... 
- Wireshark学习笔记(二)取证分析案例详解
			@ 目录 练习一:分析用户FTP操作 练习二:邮件读取 练习三:有人在摸鱼? 练习一:分析用户FTP操作 已知抓包文件中包含了用户登录FTP服务器并进行交互的一个过程,你能否通过wireshark分析 ... 
- C语言- 基础数据结构和算法 - 栈的顺序存储
			听黑马程序员教程<基础数据结构和算法 (C版本)>, 照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友 ... 
- docker-compose 搭建 Prometheus+Grafana监控系统
			有关监控选型之前有写过一篇文章: 监控系统选型,一文轻松搞定! 监控对象 Linux服务器 Docker Redis MySQL 数据采集 1).prometheus: 采集数据 2).node-ex ... 
- python新建一个目录
			源码部分 import os # 创建目录 def mkdir(path): isExists = os.path.exists(path) if not isExists: os.makedirs( ... 
- SAP APO-PP / DS
			在SAP APO中,使用生产计划/详细计划(Production Planning/Detailed Scheduling)生成满足生产要求的采购建议. 此组件还用于定义资源计划和订单明细. 您还可以 ... 
- DNS原理&ssh
			作用:实现域名的解析! www.baidu.com => 14.215.177.37 域名: www.baidu.com 实际域名为: www.baidu.com. 域名的解析,是反向的. 最后 ... 
