首页 > 其他分享 >一文读懂:开源大数据调度系统Taier1.2版本新增的「工作流」到底是什么?

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

时间:2022-10-19 10:36:19浏览次数:65  
标签:状态 工作 Taier 任务 读懂 开源 Taier1.2 失败 节点

一、什么是工作流?

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

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

01 工作流 — 功能介绍

● 虚拟节点

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

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

● 周期生成

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

一文读懂:开源大数据调度系统Taier1.2版本新增的「工作流」到底是什么?_子任务_02

● 补数据运行

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

● 调度属性

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

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

● 工作流所在目录

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

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

02 工作流 — 依赖成环

具体实现:

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

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

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

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

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

01 Taier— 周期实例生成

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

● CycleJobBuilder

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

● JobDependency

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

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

02 Taier— 调度流程

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

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

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 开发环境适配


标签:状态,工作,Taier,任务,读懂,开源,Taier1.2,失败,节点
From: https://blog.51cto.com/u_15137832/5765383

相关文章

  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够......
  • 实验6:开源控制器实践——RYU
    (一)基本要求搭建下图所示SDN拓扑,协议使用OpenFlow1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。阅读Ryu文档的TheFirstApplication一节,运行当中的L2Switch,h1......
  • 实验6:开源控制器实践——RYU
    实验6:开源控制器实践——RYU实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。实验要求(一)基本......
  • 实验6:开源控制器实践——RYU
    一、实验目的1.能够独立部署RYU控制器;2.能够理解RYU控制器实现软件定义的集线器原理;3.能够理解RYU控制器实现软件定义的交换机原理。二、实验环境(一)基本要求1.搭建......
  • 实验6:开源控制器实践——RYU
    实验6:开源控制器实践——RYU一、实验目的1.能够独立部署RYU控制器;2.能够理解RYU控制器实现软件定义的集线器原理;3.能够理解RYU控制器实现软件定义的交换机原理。二、......
  • 实验6:开源控制器实践——RYU
    1.建立拓扑并连接RYU控制器2.通过Ryu的图形界面查看网络拓扑3.(1)创建L2Switch.py文件点击查看代码fromryu.baseimportapp_managerfromryu.controllerimporto......
  • 实验6:开源控制器实践——RYU
    实验要求(一)基本要求1.搭建下图所示SDN拓扑,协议使用OpenFlow1.0,并连接Ryu控制器。建立拓扑并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑2.阅读Ryu文档的TheFirst......
  • 实验5:开源控制器实践——POX
    一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够运用POX控制器编写自定义网络......
  • 实验6:开源控制器实践——RYU
    一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktopamd6......
  • 实验5:开源控制器实践——POX
    生成拓扑:点击查看代码sudomn--topo=single,3--mac--controller=remote,ip=127.0.0.1,port=6633--switchovsk,protocols=OpenFlow10阅读Hub模块代码,使用tcpdu......