网站首页 > 开源技术 正文
Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。
Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。 解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。 DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。
特性
1.简单易用
可视化 DAG: 用户友好的,通过拖拽定义工作流的,运行时控制工具
模块化操作: 模块化有助于轻松定制和维护。
2.丰富的使用场景
支持多种任务类型: 支持Shell、MR、Spark、SQL等10余种任务类型,支持跨语言,易于扩展
丰富的工作流操作: 工作流程可以定时、暂停、恢复和停止,便于维护和控制全局和本地参数。
3.High Reliability
高可靠性: 去中心化设计,确保稳定性。 原生 HA 任务队列支持,提供过载容错能力。 DolphinScheduler 能提供高度稳健的环境。
4.High Scalability
高扩展性: 支持多租户和在线资源管理。支持每天10万个数据任务的稳定运行。
名词解释
DAG: 全称 Directed Acyclic Graph,简称 DAG。工作流中的 Task 任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:
流程定义:通过拖拽任务节点并建立任务节点的关联所形成的可视化DAG
流程实例:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成。每运行一次流程定义,产生一个流程实例
任务实例:任务实例是流程定义中任务节点的实例化,标识着某个具体的任务
任务类型:目前支持有 SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖),同时计划支持动态插件扩展,注意:其中 SUB_PROCESS类型的任务需要关联另外一个流程定义,被关联的流程定义是可以单独启动执行的
调度方式:系统支持基于 cron 表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、定时、重跑、暂停、停止、恢复等待线程。 其中 恢复被容错的工作流 和 恢复等待线程 两种命令类型是由调度内部控制使用,外部无法调用
定时调度:系统采用 quartz 分布式调度器,并同时支持cron表达式可视化的生成
依赖:系统不单单支持 DAG 简单的前驱和后继节点之间的依赖,同时还提供任务依赖节点,支持流程间的自定义任务依赖
优先级 :支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出
邮件告警:支持 SQL任务 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知
失败策略:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,继续是指不管并行运行任务的状态,直到流程失败结束。结束是指一旦发现失败任务,则同时Kill掉正在运行的并行任务,流程失败结束
补数:补历史数据,支持区间并行和串行两种补数方式,其日期选择方式包括日期范围和日期枚举两种
模块介绍
- dolphinscheduler-master master模块,提供工作流管理和编排服务。
- dolphinscheduler-worker worker模块,提供任务执行管理服务。
- dolphinscheduler-alert 告警模块,提供 AlertServer 服务。
- dolphinscheduler-api web应用模块,提供 ApiServer 服务。
- dolphinscheduler-common 通用的常量枚举、工具类、数据结构或者基类
- dolphinscheduler-dao 提供数据库访问等操作。
- dolphinscheduler-remote 基于 netty 的客户端、服务端
- dolphinscheduler-service service模块,包含Quartz、Zookeeper、日志客户端访问服务,便于server模块和api模块调用
- dolphinscheduler-ui 前端模块
租户/用户
Tenant是使用DolphinScheduler时绕不开的一个概念,所以先简单介绍一下tenant的概念。
登录 DolphinScheduler 名为 admin 的账户在 dolphinscheduler 中称为 user。 为了更好的控制系统资源,DolphinScheduler引入了概念租户,用于执行任务。
简述如下:
- 用户:登录web UI,在web UI中进行所有操作,包括工作流管理和租户创建。
- Tenant:任务的实际执行者,A Linux user for DolphinScheduler worker。
可以在 DolphinScheduler Security(安全中心) -> Tenant Manage(租户管理) 页面创建租户:
注意:
1. 环境部署好后会生成一个默认的租户及用户,默认租户为部署环境使用的Linux用户名,默认用户名是admin并且租户是默认租户名。
2. 还有一个隐藏的租户,名称是 default 在租户管理详情页看不到,但是在保存工作流时,如果没有手动选择租户,会使用 default 租户,使用程序启动用户执行任务。
创建用户并将租户分配给用户
在 DolphinScheduler 的“安全 -> 用户管理”页面中创建用户并将租户分配给特定用户:
方法1: 在创建用户时直接指定对应的租户;
方法2: 通过修改已有用户的租户;
创建项目
在 DolphinScheduler 中,所有的工作流都必须属于一个项目,所以我们需要首先创建一个项目。
在 DolphinScheduler Project(项目) 页面中创建一个项目 “创建项目” 按钮。
创建工作流
点击创建的项目,转到“工作流定义”页面,单击“创建工作流”按钮,将重定向到工作流详细信息页面。
创建任务
使用鼠标从工作流画布的工具栏中拖动要创建的任务。 在这种情况下,我们创建一个 Shell 任务。 输入任务的必要信息,对于这个简单的工作流程 我们只需将属性“节点名称”填充为“脚本”即可。之后,我们可以单击“保存”按钮将任务保存到工作流中。 我们创建另一个任务使用相同的方式。
设置任务依赖
两个具有不同名称和命令的不同任务在同一工作流中运行。 这当前工作流中唯一缺少的是任务依赖性。 我们可以使用添加依赖,鼠标将箭头从上游任务拖到下游 然后松开鼠标。您可以看到从上游创建了两个任务之间带有箭头的链接任务交给下游一个,或者在任务组件详情页面最下边选择前置任务。 最后,我们可以点击右上角的“保存”按钮保存工作流,不要忘记填写工作流名称。
运行工作流
可以通过在工作流定义列表单击“上线”然后单击“运行”按钮来运行对应的工作流。 如果您想查看工作流实例,只需转到 “工作流实例” 页面,可以看到工作流实例正在运行,状态为Executing。
查看日志
从工作流实例中找到对应的任务名称,然后找到右侧查看日志的按钮,点击鼠标就可以看到任务的详细日志。
猜你喜欢
- 2024-09-12 盘点 12 月份爆火的 GitHub 项目(github排行榜)
- 2024-09-12 DolphinScheduler海豚调度器删除历史日志问题
- 2024-09-12 数据质量管理(数据质量管理平台目前支持通过扫描)
- 2024-09-12 dolphin scheduler多数据库存储(hibernate多数据库支持)
- 2024-09-12 海豚DolphinScheduler系统调度操作分析
- 2024-09-12 源码解析-- 如何做到不同Task的日志输出到不同的日志文件
- 2024-09-12 运维实战:DolphinScheduler 生产环境升级
- 2024-09-12 任务调度工具(任务调度工具怎么用)
- 2024-09-12 dolphinscheduler集成数据质量任务
- 2024-09-12 源码解析--海豚调度MasterServer流程执行过程分析
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)