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):附录

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值