DolphinScheduler部署及使⽤
⼯作流任务调度系统:Apache DolphinScheduler
DolphoinScheduler 1.3.2 已经发布许久,相⽐于⽂中的 1.2.0 版本新增了许多特性,⽐如 ⽀持 sqoop ,优化界⾯ UI 等。
DolphoinScheduler 1.3.2 详细⽂档请移步: www.yuque/docs/share/454e9a42-b6c7-44b2-9d29-1d5795199456?# 《DolphinScheduler - 1.3.2 Document》
关于 1.3.2 的部署,建议参考⽂档中源码编译的⽅式进⾏部署
⼀、⽂档说明
1.1 DolphinScheduler 说明
Apache DolphinScheduler 是⼀个分布式去中⼼化,易扩展的可视化 DAG ⼯作流任务调度系统。
致⼒于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即⽤。
1.2 相关⽹址
官⽹:
/zh-cn/index.html
Git 地址:
github/apache/incubator-dolphinscheduler
系统架构设计:
/zh-cn/blog/architecture-design.html
FAQ:
/zh-cn/docs/faq.html
1.3 名词解释
MasterServer
MasterServer采⽤分布式⽆中⼼设计理念,MasterServer主要负责 DAG 任务切分、任务提交监控,
并同时监听其它MasterServer和WorkerServer的健康状态。 MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeeper临时节点变化来进⾏容错处理。 MasterServer基于netty提供监听服务。
该服务内主要包含:
Distributed Quartz分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,Master内部会有线程池具体负责处理任务的后续操作
MasterSchedulerThread是⼀个扫描线程,定时扫描数据库中的 command 表,根据不同的命令类型进⾏不同的业务操作MasterExecThread主要是负责DAG任务切分、任务提交监控、各种不同命令类型的逻辑处理
MasterTaskExecThread主要负责任务的持久化
WorkerServer
WorkerServer也采⽤分布式⽆中⼼设计理念,WorkerServer主要负责任务的执⾏和提供⽇志服务。 WorkerServer服务启动时向Zookeeper注册临时节点,并维持⼼跳。 Server基于netty提供监听服务.
该服务包含:
FetchTaskThread主要负责不断从Task Queue中领取任务,并根据不同任务类型调⽤TaskScheduleThread对应执⾏器。LoggerServer是⼀个RPC服务,提供⽇志分⽚查看、刷新和下载等功能
ZooKeeper
ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进⾏集管理和容错。另外系统还基于ZooKeeper进⾏事件监听和分布式锁。 我们也曾经基于Redis实现过队列,不过我们希望DolphinScheduler依赖到的组件尽量地少,所以最后还是去掉了Redis实现。
Task Queue
提供任务队列的操作,⽬前队列也是基于Zookeeper来实现。由于队列中存的信息较少,不必担⼼队列⾥数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性能没影响。
Alert
提供告警相关接⼝,接⼝主要包括告警两种类型的告警数据的存储、查询和通知功能。其中通知功能⼜有邮件通知和SNMP(暂未实现)两种。
API
API接⼝层,主要负责处理前端UI层的请求。该服务统⼀提供RESTful api向外部提供请求服务。 接⼝包括⼯作流的创建、定义、查询、修改、发布、下线、⼿⼯启动、停⽌、暂停、恢复、从该节点开始执⾏等等。
UI
系统的前端页⾯,提供系统的各种可视化操作界⾯,详见/zh-cn/docs/user_doc/system-manual.html部分。
DAG: 全称 Directed Acyclic Graph,简称 DAG。⼯作流中的 Task
任务以有向⽆环图的形式组装起来,从⼊度为零的节点进⾏拓扑遍历,直到⽆后继节点为⽌。
流程定义:通过拖拽 任务节点 并建⽴ 任务节点的关联 所形成的 可视化DAG
流程实例:流程定义的实例化,可以通过⼿动启动或定时调度⽣成,流程定义每运⾏⼀次,产⽣⼀个流程实例
任务实例:流程定义 中 任务节点的实例化,标识着具体的 任务执⾏状态
任务类型:⽬前⽀持有SHELL、SQL、SUB_PROCESS(⼦流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖),同时计划⽀持动态插件扩展,注意:其中⼦
SUB_PROCESS 也是⼀个单独的流程定义,是可以单独启动执⾏的
调度⽅式:系统⽀持基于 cron 表达式的定时调度和⼿动调度。
命令类型⽀持:启动⼯作流、从当前节点开始执⾏、恢复被容错的⼯作流、恢复暂停流程、从失败节点开始执⾏、补数、定时、重跑、暂停、停⽌、恢复等待线程。其中
恢复被容错的⼯作流 和 恢复等待线程 两种命令类型是由调度内部控制使⽤,外部⽆法调⽤
定时调度:系统采⽤ quartz 分布式调度器,并同时⽀持 cron 表达式可视化的⽣成
依赖:系统不单单⽀持 DAG 简单的前驱和后继节点之间的依赖,同时还提供任务依赖节点,⽀持流程间的⾃定义任务依赖
优先级 :⽀持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出
邮件告警:⽀持 SQL任务 查询结果邮件发送,流程实例运⾏结果邮件告警及容错告警通知
失败策略:对于并⾏运⾏的任务,如果有任务失败,提供两种失败策略处理⽅式,继续 是指不管并⾏运⾏任务的状态,直到流程失败结束。结束
是指⼀旦发现失败任务,则同时Kill掉正在运⾏的并⾏任务,流程失败结束
补数:补历史数据,⽀持 区间并⾏和串⾏ 两种补数⽅式
元数据解释
Mysql核⼼表概览
表名表信息
t_ds_access_token访问ds后端的token
t_ds_alert告警信息
t_ds_alertgroup告警组
t_ds_command执⾏命令
t_ds_datasource数据源
t_ds_error_command错误命令
t_ds_process_definition流程定义
t_ds_process_instance流程实例
mysql下载下来没安装包t_ds_project项⽬
t_ds_queue队列
t_ds_relation_datasource_user⽤户关联数据源
t_ds_relation_process_instance⼦流程
t_ds_relation_project_user⽤户关联项⽬
t_ds_relation_resources_user⽤户关联资源
t_ds_relation_udfs_user⽤户关联UDF函数
t_ds_relation_user_alertgroup⽤户关联告警组
t_ds_resources资源⽂件
t_ds_schedules流程定时调度
表名表信息
t_ds_session⽤户登录的session
t_ds_task_instance任务实例
t_ds_tenant租户
t_ds_udfs UDF资源
t_ds_user⽤户
t_ds_version ds版本信息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 注册临时节点,并维持⼼跳。
该服务包含:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论