一、什么是工作流?

在阐述什么是工作流之前,先说一下工作流和普通任务的区别,在于依赖视图。

普通任务本身他只会有自己的dag图,依赖视图是无边界的,不可控的,而工作流则是把整个工作流都展示出来,是有边界的,可控的,这是工作流的优势。下面为大家介绍工作流的相关功能:

01 工作流—功能介绍

● 虚拟节点

虚拟节点,它是不产生任何数据的空跑节点(即调度到该节点时,系统直接返回成功,不会真正执行、不会占用资源或阻塞下游节点运行),比如说任务并行执行,那么就会用到虚拟节点。

● 周期生成

指调度系统按照调度配置自动定时运行的任务。

● 补数据运行

当业务变更,可以使用补数据功能。如修改了某个任务的代码,可将本月的数据按照新的代码重新跑一遍,立即生成所需数据。

● 调度属性

工作流中的子任务依赖于父任务的周期调度属性,父任务修改后,子任务同步修改,以工作流的周期调度属性作为各个子节点的周期调度时间。

● 工作流所在目录

修改工作流目录同步修改工作流下的子任务目录。

02 工作流—依赖成环

具体实现:

任务完成依赖的关系,key为当前节点,value为该节点的所有父节点Map < long list> nodeMap。

遍历nodeMap,以此遍历单集合中的每一个节点。每遍历一个新节点,就从头检查新节点之前的所有节点,用新节点和此节点之前所有节点依次做比较。如果发现新节点和之前的某个节点相同,则说明该节点被遍历过两次,链表有环。如果之前的所有节点中不存在与新节点相同的节点,就继续遍历下一个新节点,继续重复刚才的操作。

二、Taier工作流周期实例运行

了解完工作流的功能介绍后,我们来为大家分享Taier工作流周期实例运行:

01 Taier—周期实例生成

Taier主节点在启动的时候,会开启一个定时器,定时器会不停的去判断当日的实例是否已经生成。如果没有生成,就会触发事件给CycleJobBuilder生成实例,再通过JobDependency封装实例之间的依赖关系。

● CycleJobBuilder

用于生成周期实例。扫描数据库任务表并且获取zk上所有的Taier节点,把封装后的实例分配到每一台Taier节点上。

● JobDependency

用于生成job之间的依赖关系。

02 Taier—调度流程

在启动Taier服务时,会启动配置的所有调度器,并且开始扫描实例,并提交。

03 Taier—工作流任务状态修改逻辑

任务提交拦截器处理:

1、工作流下无子任务更新为完成状态

2、工作流下任务都是完成状态,任务提交队列可以移除

3、同时更新工作流engine_job状态,工作流只有四种状态,成功/失败/取消/提交中:

(1) 所有子任务状态为运行成功时,工作流状态更新为成功

(2) 工作流状态根据子任务的运行状态来确定,失败状态存在优先级:运行失败>提交失败>上游失败

a.子任务存在运行失败时,工作流状态更新为运行失败
b.子任务不存在运行失败时,存在提交失败,工作流状态更新为提交失败
c.子任务不存在运行失败时,不存在提交失败,存在上游失败时,工作流状态更新为上游失败

(3) 子任务存在取消状态时,工作流状态更新为取消

(4) 若子任务中同时存在运行失败或取消状态,工作流状态更新为失败状态

(5) 其他工作流更新为运行中状态

三、Taier1.3即将上线功能

新增功能

· ChunJun的向导模式数据源增强 hive1、hive2、hive3、sparkThrift、oracle、mysql、postgresql、sqlserver 、es7

· flink on standalone、python.shell、spark jar 、pyspark支持

· 自定义任务类型 web界面配置抽取

· windows开发环境适配

袋鼠云开源框架钉钉技术交流qun(30537511),欢迎对大数据开源项目有兴趣的同学加入交流最新技术信息,开源项目库地址:https://github.com/DTStack/Taier

一文读懂:开源大数据调度系统Taier1.2版本新增的「工作流」到底是什么?的更多相关文章

  1. 一文读懂机器学习大杀器XGBoost原理

    http://blog.itpub.net/31542119/viewspace-2199549/ XGBoost是boosting算法的其中一种.Boosting算法的思想是将许多弱分类器集成在一起 ...

  2. 大数据篇:一文读懂@数据仓库(PPT文字版)

    大数据篇:一文读懂@数据仓库 1 网络词汇总结 1.1 数据中台 数据中台是聚合和治理跨域数据,将数据抽象封装成服务,提供给前台以业务价值的逻辑概念. 数据中台是一套可持续"让企业的数据用起 ...

  3. 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?

    本文引用了“蔷薇Nina”的“Nginx 相关介绍(Nginx是什么?能干嘛?)”一文部分内容,感谢作者的无私分享. 1.引言   Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡 ...

  4. 一文读懂高性能网络编程中的I/O模型

    1.前言 随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力.本文(和下篇<高性能网络编程(六):一文读懂高性能网络编程中的线程模型>)旨在为大家提供有用的 ...

  5. 一文读懂HTTP/2及HTTP/3特性

    摘要: 学习 HTTP/2 与 HTTP/3. 前言 HTTP/2 相比于 HTTP/1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何 ...

  6. 从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路

    本文原作者阮一峰,作者博客:ruanyifeng.com. 1.引言 HTTP 协议是最重要的互联网基础协议之一,它从最初的仅为浏览网页的目的进化到现在,已经是短连接通信的事实工业标准,最新版本 HT ...

  7. [转帖]MerkleDAG全面解析 一文读懂什么是默克尔有向无环图

    MerkleDAG全面解析 一文读懂什么是默克尔有向无环图 2018-08-16 15:58区块链/技术 MerkleDAG作为IPFS的核心数据结构,它融合了Merkle Tree和DAG的优点,今 ...

  8. [转帖]一文读懂 HTTP/2

    一文读懂 HTTP/2 http://support.upyun.com/hc/kb/article/1048799/ 又小拍 • 发表于:2017年05月18日 15:34:45 • 更新于:201 ...

  9. [转帖]从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路

    从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路   http://www.52im.net/thread-1709-1-2.html     本文原作者阮一峰,作者博客:r ...

  10. 一文读懂HDMI和VGA接口针脚定义

    一文读懂HDMI和VGA接口针脚定义 摘自:http://www.elecfans.com/yuanqijian/jiekou/20180423666604.html   HDMI概述 HDMI是高清 ...

随机推荐

  1. 在IIS Express下部署NuGet私服

    用途 个人开发,部署自己的NuGet pkg. 环境 Win11 IIS Express (轻度使用,不安装IIS,而使用VS预装的IIS Express) VS2022 步骤 开发环境准备 因我拟用 ...

  2. 代码块--java进阶day03

    1.代码块 1.局部代码块 定义在方法中的一对大括号,可以提早释放内存,走完{}里的逻辑后就会被释放,在之后的编程中无法使用 2.构造代码块 位置在类中,方法外的{},在构造方法执行的时候,构造代码块 ...

  3. lombok用法

    加入 maven 依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lo ...

  4. SpringSecurity5(13-核心组件和认证流程)

    SecurityContextHolder SecurityContextHolder 持有的是安全上下文的信息,当前操作的用户是谁,用户是否已经被认证,他拥有哪些角色权限等,这些都被保存在 Secu ...

  5. 华为od机考2025A卷真题 -查找接口成功率最优时间段

    题目描述与示例 题目描述 服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示,数组中每个元素都是单位时间内失败率数值,数组中的数值为 0~100 的整数,给定一 ...

  6. Laravel配置Route调用artisan

    //web调用artisan Route::get('/artisan', function(\Illuminate\Http\Request $request) { $all = \Illumina ...

  7. 2025西安交大集训Day1:二分,三分,哈希,高精度,位运算,模拟退火

    2025西安交大集训Day1:二分,三分,哈希,高精度,位运算,模拟退火 二分 详见2025dsfz集训Day2:二分与三分,三分在当前文章内已经重构过. 三分 三分算法详细解释 三分算法(Terna ...

  8. Python3_python2打包exe文件

    最近要把绿盟报告导出脚本打包成一个exe,原本是一个py2的文件Vulreport.py,我做了如下步骤. 1.py2topy3 Python3 2to3.py -w Vulreport.py 2.p ...

  9. 解决 podman 容器无法在宿主机和容器内部相互访问问题的记录

    解决 podman 容器无法在宿主机和容器内部相互访问问题的记录 近期在使用 podman 时,遇到了容器无法在宿主机和容器内部相互访问的问题.经过一番探索,参考了这篇文章,成功解决了该问题.在此,我 ...

  10. bootstrap4下拉菜单无法显示问题

    刚才在菜鸟教程学习bootstrap4时在按钮组章节中遇到了下拉菜单,可是自己没有调试出来!!! 我把菜鸟的代码copy(全部)到本地发先可以运行!!! 找了半天原因,可能是自己导入的js文件有错!! ...