李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
07.Azkaban条件工作流介绍
Leefs
2022-04-25 AM
850℃
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
标签云
MySQL
FastDFS
BurpSuite
线程池
栈
数据结构和算法
Netty
正则表达式
Java编程思想
国产数据库改造
Python
DataWarehouse
数据结构
Hbase
Spark Streaming
Tomcat
Yarn
机器学习
排序
JVM
Shiro
Java阻塞队列
Beego
Hive
MyBatisX
Scala
JavaScript
Hadoop
Livy
Nacos
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞