1.使用步骤

1)创建.project文件: azkaban-flow-version:2.0

2)创建.flow文件

3)压缩成.zip文件,上传

注意:flow文件是yaml格式

大小写敏感

通过缩进来表达层次,严禁使用\t

属性名:后面跟一个空格

2.案例:

1.hello word

nodes:
- name: Job名称
type: command<job类型[command/javaprocess/flow]>
config:
command: echo "...."/sh xx.sh

2.作业依赖[dependsOn配置作业的依赖关系]

nodes:
- name: A
type: command
config:
command: echo "A"
- name: B
type: command
config:
command: echo "B"
dependsOn:
- A

3.内嵌工作流

nodes:
- name: A
type: flow #flow代表当前Job就是一个工作流
#config:
# command: echo "A" 当前不会打印,因为只有type为command才会执行命令
nodes:
- name: B
type: command
config:
command: echo "A.B"

4.全局配置 [在开头通过config进行配置,后续可以通过${属性名}来引用]

config:
属性名1: 属性值
属性名2: 属性值
nodes:
- name: A
type: command
config:
command: echo "${属性名1} .."

5.自动重试[retries代表重试的次数,retry.backoff代表重试的时间间隔]

nodes:
- name: A
type: command
config:
command: echo "${属性名1} .."
retries: 3
retry.backoff: 5000 #毫秒

6.执行java程序

nodes:
- name: A
type: javaprocess
config:
java.class: com.atguigu.XXX
Xmx: 1024M
Xms: 1024M
# type:javaprocess [代表执行java程序]
# java.class: [执行哪个java类,类中必须要有main方法]
# Xms: [代表启动时的内存容量大小]
# Xmx: [代表执行时的内存的最大容量大小]
# 一般Xms要与Xmx设置一致,防止内存的抖动

7.条件工作流

7.1 根据job的参数进行判断
【在脚本中将json字符串写到azkaban内部的变量<$JOB_OUTPUT_PROP_FILE>中,后续通过${Job名称:属性名}】
在写入$JOB_OUTPUT_PROP_FILE变量的时候,要在脚本的最后一行写入
nodes:
- name: A
type: command
config:
command: sh a.sh
- name: B
type: command
config:
command: echo "B"
condition: ${A:属性名} == "属性值"

a.sh内容

##! /bin/bash
...
echo '{"属性名":"属性值"}' >> $JOB_OUTPUT_PROP_FILE
7.2 azkaban内部宏
nodes:
- name: A
type: command
config:
command: sh a.sh
- name: C
type: command
config:
command: sh c.sh
- name: B
type: command
config:
command: echo "B"
condition: ${A:属性名} == "属性值" && all_success
dependsOn:
- A
- C
#all_done: 依赖任务全部完成[kill、failed、success..都代表完成]
#all_success: 依赖的任务必须全部success
#all_failed: 依赖的任务必须全部failed
#one_failed: 依赖的任务必须要求其中一个failed
#one_success: 依赖的任务必须要求其中一个success

Azkaban(二)【WorkFlow案例实操】的更多相关文章

  1. 新硬盘挂载-fdisk+mount案例实操

    新硬盘挂载-fdisk+mount案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 现在很多服务器都支持热插拔了,当有新的硬盘插入到服务器上我们需要将其分区,格式化,然后挂载 ...

  2. Kafka集群优化篇-调整broker的堆内存(heap)案例实操

    Kafka集群优化篇-调整broker的堆内存(heap)案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看kafka集群的broker的堆内存使用情况 1>. ...

  3. Python相关分析—一个金融场景的案例实操

    哲学告诉我们:世界是一个普遍联系的有机整体,现象之间客观上存在着某种有机联系,一种现象的发展变化,必然受与之关联的其他现象发展变化的制约与影响,在统计学中,这种依存关系可以分为相关关系和回归函数关系两 ...

  4. 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了

    引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中?         本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中 ...

  5. Hive中的数据类型以及案例实操

    @ 目录 基本数据类型 集合数据类型 案例实操 基本数据类型 对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它 ...

  6. (二)Linux实操之——网络配置、进程管理、服务管理、组管理、YUM

    接上段   (一)Linux实操之——权限.任务调度.磁盘分区 4.网络配置 4.1 NAT模式的网络配置 目前我们采用的网络配置是NAT模式. windows下cmd通过 ipconfig 命令可以 ...

  7. 【windows 访问控制】十二、C#实操 主体 System.Security.Principal 案例

    案例1.主体(包含用户和组)和标识(用户名)的使用. PrincipalPolicy枚举:主体类型 分为window主体.未认证的主体和未分配主体GenericPrincipal.GenericIde ...

  8. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

  9. C#多线程同步案例实操

    好久没有写博客了,为了养成学习的习惯,培养积极年轻的心态,又回到了博客园这个平台继续撸起时隔多年未光顾的空间. 项目需求: 实现一个简单的获取始发目的耗时.距离,将结果输出表格. 方案思路: 通过多线 ...

随机推荐

  1. PCIE学习笔记--TLP Header详解(三)

    目录篇地址为:http://blog.chinaaet.com/justlxy/p/5100053481 Completions Completions的TLP Header的格式如下图所示: 这里来 ...

  2. 机器人的运动范围 牛客网 剑指Offer

    机器人的运动范围 牛客网 剑指Offer 题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大 ...

  3. XOR算法

    原理 依据的是异或门 即同为0,异为1 0^0=0 0^1=1 1^0=1 1^1=0 对一个数据进行两次XOR运算会得到这个数据本身 所以加密时就将message和其对应的key进行一波XOR运算得 ...

  4. hudi clustering 数据聚集(一)

    概要 数据湖的业务场景主要包括对数据库.日志.文件的分析,而管理数据湖有两点比较重要:写入的吞吐量和查询性能,这里主要说明以下问题: 1.为了获得更好的写入吞吐量,通常把数据直接写入文件中,这种情况下 ...

  5. 网页视频不能自动播放?HTML5 video报错Uncaught (in promise) DOMException解决方法

    话说发哥四年前写了一个网页,如上图效果,实际网址http://pano.z01.com ,话说做好时是正常的,突然某一天,客户说你这个网站动画不见了,这是什么原因? 结果检查脚本一切正常. 其实也不是 ...

  6. Python 函数 参数传递

    参数传递    在 python 中,类型属于对象,变量是没有类型的:        a=[1,2,3]        a="Runoob"    以上代码中,[1,2,3] 是 ...

  7. OPA-Gatekeeper实验:对特定用户的更新时间窗口做限制

    实验目的 OPA-Gatekeeper可以在Kubernetes 中,通过策略来实现一些额外的管理.安全方面的限制,例如:限制特定用户在 Namespace 中的行为权限 本次实验将在test命名空间 ...

  8. Scrapy入门到放弃06:Spider中间件

    前言 写一写Spider中间件吧,都凌晨了,一点都不想写,主要是也没啥用...哦不,是平时用得少.因为工作上的事情,已经拖更好久了,这次就趁着半夜写一篇. Scrapy-deltafetch插件是在S ...

  9. [bzoj1934]善意的投票

    最小割,考虑最小割就是要将整张图分为两块,本题中就分别表示赞同和不赞同,那么首先一开始赞同的点向S连边,不赞同的点向T连边,如果这些点分到了另一边就要割掉这条边,朋友关系同理,连双向边同样表示分到两边 ...

  10. .Net Crank性能测试入门

    Crank 是微软新出的一个性能测试框架,集成了多种基准测试工具,如bombardier.wrk等. Crank通过统一的配置,可以转换成不同基准测试工具命令进行测试.可参考Bombardier Jo ...