azkaban

azkaban概述

1、azkaban是什么?
azkaban是任务调度的工具

2、azkaban使用步骤
1、需要创建两个文件[.project文件和.flow文件]
2、在.project文件中添加一行内容: azkaban-flow-version: 2.0
.flow文件中配置job任务
3、将两个文件打成.zip包
4、上传azkaban web页面
azkaban在两个文件中都是使用的yaml的语法
yaml语法规范:
1、大小写敏感
2、通过缩进表示层次关系
3、缩进只能空格,不能用tab
4、属性名与属性值之间通过 :空格

3、hello word
nodes:
- name: A[任务名]
type: command[任务类型[command、flow、javaprocess]]
config:
command: echo “hello word” [command执行的命令]

4、作业依赖
通过dependsOn配置job的依赖关系
nodes:
- name: A
type: command
config:
command: echo “JOB A”
- name: B
type: command
config:
command: echo “JOB B”
dependsOn:
- A[依赖的任务名]
-
5、内嵌工作流
azkaban可以配置job为内嵌流
通过type: flow配置任务为内嵌流
nodes:
- name: A
type: flow[配置任务A为内嵌流,流中有A1、A2两个任务]
nodes:
- name: A1
type: command
config:
command: echo “JOB A1”
- name: A2
type: command
config:
command: echo “JOB A2”

6、自动重试
在config属性中通过retries配置重试次数,通过retry.backoff配置重试的时间间隔
nodes:
- name: A
type: command
config:
command: sh not_exists.sh
retries: 3 [重试次数]
retry.backoff: 5000[重试时间间隔,单位是毫秒]

7、公共的配置
公共的配置是写在.flow文件的开头
config:
retries: 3
retry.backoff: 5000
nodes:
- name: A
type: command
config:
command: echo “JOB A”
- name: B
type: command
config:
command: echo “JOB B”
dependsOn:
- A[依赖的任务名]
上述任务A与任务B就拥有了retries、retry.backoff两个属性

8、运行java程序
通过type: javaprocess配置任务是运行java程序
通过java.class指定运行哪个类[类中必须要有main方法]
通过Xmx、Xms配置程序运行时的内存大小
Xmx、Xms在配置的时候一般配置的一样,减少内存的抖动带来的GC的性能影响
nodes:
- name: A
type: javaprocess
config:
java.class: javaclass的全类名
Xmx: 1024m
Xms: 1024m

9、条件工作流
通过condition属性配置该任务执行的前提条件
条件工作流可以分为两类:
1、job运行脚本,在脚本中将参数名与对应的参数值以json字符串的方式添加到azkaban内置变量[$JOB_OUTPUT_PROP_FILE]中
后续要想取出变量对应的值,通过 ${任务名:参数名}
nodes:
- name: A
type: command
config:
command: sh a.sh
- name: B
type: command
config:
command: echo “JOB B”
dependsOn:
- A
condition: ${A:name} == “zhangsan” && ${A:age} == 20
a.sh的脚本内容
echo ‘{“name”:“zhangsan”,“age”:20}’ >> $JOB_OUTPUT_PROP_FILE
2、通过azkaban内部宏来进行判断任务是否满足执行条件
azkaban内部宏:
all_success: 只有依赖的任务全部执行成功才会执行本任务
all_done: 只有依赖的任务全部完成[success、failed、killed]才会执行本任务
all_failed: 只有依赖的任务全部执行失败才会执行本任务
one_failed: 依赖的任务至少有一个失败才会执行本任务
one_success: 依赖的任务至少有一个成功才会执行本任务
nodes:
- name: A
type: command
config:
command: echo “JOB A”
- name: B
type: command
config:
command: echo “JOB B”
- name: C
type: command
config:
command: echo “JOB C”
dependsOn:
- A
- B
condition: all_success

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值