目录
1.使用步骤
1)创建.project文件: azkaban-flow-version:2.0
2)创建.flow文件
3)压缩成.zip文件,上传
注意:flow文件是yaml格式
大小写敏感
通过缩进来表达层次,严禁使用
属性名:后面跟一个空格
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