李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
07.Azkaban条件工作流介绍
Leefs
2022-04-25 AM
1389℃
0条
[TOC] ### 一、概述 **条件工作流功能允许用户自定义执行条件来决定是否运行某些Job。条件可以由当前Job的父 Job 输出的运行时参数构成,也可以使用预定义宏。**在这些条件下,用户可以在确定 Job执行逻辑时获得更大的灵活性,例如,只要父 Job 之一成功,就可以运行当前 Job。 ### 二、运行时参数案例 #### 2.1 基本原理 (1)父 Job 将参数写入**JOB_OUTPUT_PROP_FILE**环境变量所指向的文件; (2)子 Job 使用 `${jobName:param}`来获取父 Job 输出的参数并定义执行条件 #### 2.2 支持的条件运算符 | 符号 | 说明 | | ---- | -------- | | == | 等于 | | != | 不等于 | | \> | 大于 | | \>= | 大于等于 | | < | 小于 | | <= | 小于等于 | | && | 与 | | `双竖杠` | 或 | | ! | 非 | #### 2.3 案例 > 需求: > > + JobA 执行一个 shell 脚本。 > + JobB 执行一个 shell 脚本,但 JobB 不需要每天都执行,而只需要每周一执行。 **(1)新建JobA.sh脚本文件** ```sh #!/bin/bash echo "do JobA" wk=`date +%w` echo "{\"wk\":$wk}" > $JOB_OUTPUT_PROP_FILE ``` **(2)新建JobB.sh脚本文件** ```sh #!/bin/bash echo "do JobB" ``` **(3)新建 condition.flow文件** ```yaml nodes: - name: JobA type: command config: command: sh JobA.sh - name: JobB type: command dependsOn: - JobA config: command: sh JobB.sh condition: ${JobA:wk} == 1 ``` 注意:最后的**condition**是和**config**在同一个层级。 **(4)新建first.project文件** ```project azkaban-flow-version: 2.0 ``` **(5)将JobA.sh、JobB.sh、condition.flow、first.project文件统一进行压缩到ZIP包中** ![07.Azkaban条件工作流介绍01.jpg](https://lilinchao.com/usr/uploads/2022/04/4095630776.jpg) **(6)在Azkaban WEB界面执行作业,查看执行结果** ![07.Azkaban条件工作流介绍02.jpg](https://lilinchao.com/usr/uploads/2022/04/3352718039.jpg) + 按照我们设定的条件,JobB 会根据当日日期决定是否执行。 ### 三、预定义宏案例 #### 3.1 概念 Azkaban 中预置了几个特殊的判断条件,称为预定义宏。 预定义宏会根据所有父 Job 的完成情况进行判断,再决定是否执行。 **可用的预定义宏如下:** | 参数 | 说明 | | ----------- | ------------------------------- | | all_success | 表示父 Job 全部成功才执行(默认) | | all_done | 表示父 Job 全部完成才执行 | | all_failed | 表示父 Job 全部失败才执行 | | one_success | 表示父 Job 至少一个成功才执行 | | one_failed | 表示父 Job 至少一个失败才执行 | #### 3.2 案例 > 需求: > > + JobA 执行一个 shell 脚本 > + JobB 执行一个 shell 脚本 > + JobC 执行一个 shell 脚本,要求 JobA、JobB 中有一个成功即可执行 **(1)新建 JobA.sh** ```sh #!/bin/bash echo "do JobA" ``` **(2)新建 JobC.sh** ```sh #!/bin/bash echo "do JobC" ``` **(3)新建macro.flow** ``` nodes: - name: JobA type: command config: command: sh JobA.sh - name: JobB type: command config: command: sh JobB.sh - name: JobC type: command dependsOn: - JobA - JobB config: command: sh JobC.sh condition: one_success ``` **(4)将JobA.sh、JobC.sh、macro.flow、first.project 文件,打包成 macro.zip** ![07.Azkaban条件工作流介绍03.jpg](https://lilinchao.com/usr/uploads/2022/04/3682676435.jpg) **(5)创建 macro 项目-->上传 macro.zip 文件-->执行作业-->观察结果** ![07.Azkaban条件工作流介绍04.jpg](https://lilinchao.com/usr/uploads/2022/04/456230449.jpg)
标签:
Azkaban
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/2013.html
上一篇
06.Azkaban之JavaProcess任务类型
下一篇
什么是OLAP
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
BurpSuite
ClickHouse
Elastisearch
持有对象
递归
Spark Core
容器深入研究
Azkaban
Thymeleaf
Hbase
前端
MyBatis-Plus
Spark RDD
Flume
Java
排序
Spring
并发线程
MyBatisX
Zookeeper
CentOS
Shiro
DataX
JavaScript
DataWarehouse
gorm
FileBeat
数学
数据结构和算法
锁
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭