一、它是啥?
一个轻量级的工作流调度系统
二、组成部分
1、azkaban-db:依赖Mysql,将一些工作流必备的数据表刷到Mysql中
2、azkaban-exec-server:执行任务的服务器
3、azkaban-web-server:配置或者上传任务的服务器(8081端口对应配置页面)
三、简单案例
1、创建 test.project 文件
azkaban-flow-version: 2.0
2、创建 test.flow 文件
# 1、与nodes平级,则全局重试3次
config:
retries: 3
retry.backoff: 3000
nodes:
- name: jobC
type: command
# jobC 依赖 JobA 和 JobB
dependsOn:
- jobA
- jobB
config:
command: echo "CCC"
# 2、单个任务重试3次,每次间隔3s,如果全都失败,那么会一共执行4次
retries: 3
retry.backoff: 3000
# all_success:全都成功(才执行这个jobC)
# all_done:全部完成,失败也算完成
# all_failed:全部失败
# one_success:只要有一个成功
# one_failed:只要有一个失败
condition: all_done
- name: jobA
type: command
config:
# 如果是多个exec-server的,必须将jobA.sh分发到每个exec-server
# 否则会因为执行这个任务的服务器可能没有jobA.sh文件,导致任务执行失败
command: sh /home/yxguan/jobA.sh
- name: jobB
type: command
dependsOn:
- jobA
config:
command: echo "BBB"
# 采用el表达式,根据jobA写到 $JOB_OUTPUT_PROP_FILE 中的结果
# 判定jobB是否执行
condition: ${jobA:wk} == 1
3、创建 jobA.sh 文件
#!/bin/bash
echo "AAA"
wk=`date +%w`
# $JOB_OUTPUT_PROP_FILE 是一个固定的路径,而且写入的数据必须是json格式
echo "{\"wk\":$wk}" > $JOB_OUTPUT_PROP_FILE