DolphinScheduler1.3.9工作流内任务依赖执行源码解读

工作流定义

工作流可以理解为一个DAG(有向无环图),工作流内部可以自由组织依赖关系并依次执行

工作流执行源码

代码附件

主进程:MasterSchedulerService.java

工作流执行线程:MasterExecThread.java

MasterSchedulerService.java 负责任务的分发

scheduleProcess()方法负责检查master是否有充足线程去分发,并且执行工作流

 

MasterExecThread.java 负责工作流执行和DAG组织

1.run()方法暂时只看executeProcess()

2.执行任务前的准备阶段

 

 

3.prepareProcess()中找到buildFlowDag方法

4.runProcess()执行工作流内部任务节点

 

 

5.submitPostNode通过DAG结构获取需要执行的任务节点(剔除掉跳过和成功的任务),并创建任务实例信息,并落地Mysql表用于状态流转

工作流实例表与任务实例表存在一对多的情况,process_instance表的实例ID对应多个task_instance的实例ID 

6.任务队列依次执行

 

7.提交任务前会检测前置任务执行状态后,选择提交与否,并将队列中已完成的任务剔除掉,失败的加入失败列表等操作

总结:DS的功能真是非常实用,源代码结构逻辑清晰, 如果有小伙伴有想了解的源码解读,会再整理一次分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache DolphinScheduler(incubator,原EasyScheduler)是一个大数据分布式工作流任务调度系统,主要解决大数据研发过程中ETL处理错综复杂的依赖关系,而不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。 设计特点:一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 其主要目标如下: 1、以DAG图的方式将Task按照任务依赖关系关联起来,可实时可视化监控任务的运行状态 2、支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等 3、支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作 4、支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败 5、支持工作流全局参数及节点自定义参数设置 6、支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑 7、支持任务日志在线查看及滚动、在线下载日志等 8、实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化 9、支持对Master/Worker cpu load,memory,cpu在线查看 10、支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计 11、支持补数 12、支持多租户 13、支持国际化 14、还有更多等待伙伴们探索

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值