Azkaban的常用调度

Azkaban的常用调度

1、作业依赖案例

需求:JobA和JobB执行完了,才能执行JobC
具体步骤:
basic.flow为如下内容
nodes:
  - name: jobC
    type: command
    # jobC 依赖 JobA和JobB
    dependsOn:
      - jobA
      - jobB
    config:
      command: echo "I’m JobC"

  - name: jobA
    type: command
    config:
      command: echo "I’m JobA"

  - name: jobB
    type: command
    config:
      command: echo "I’m JobB"

2、自动失败重试案例

需求:如果执行任务失败,需要重试3次,重试的时间间隔10000ms

编译配置流
nodes:
  - name: JobA
    type: command
    config:
      command: sh /not_exists.sh
      retries: 3
      retry.backoff: 10000
参数说明:
retries:重试次数
retry.backoff:重试的时间间隔

3、手动重试

Enable和Disable下面都分别有如下参数:

​ Parents:该作业的上一个任务

​ Ancestors:该作业前的所有任务

​ Children:该作业后的一个任务

​ Descendents:该作业后的所有任务

​ Enable All:所有的任务

4、JavaProcess作业类型

JavaProcess类型可以运行一个自定义主类方法,type类型为javaprocess,可用的配置为:

Xms:最小堆

Xmx:最大堆

classpath:类路径

java.class:要运行的Java对象,其中必须包含Main方法

main.args:main方法的参数

nodes:
  - name: test_java
    type: javaprocess
    config:
      Xms: 96M
      Xmx: 200M
      java.class: com.yyds.Test

5、条件工作流

条件工作流功能允许用户自定义执行条件来决定是否运行某些Job。条件可以由当前Job的父Job输出的运行时参数构成,也可以使用预定义宏。在这些条件下,用户可以在确定Job执行逻辑时获得更大的灵活性,例如,只要父Job之一成功,就可以运行当前Job。

(1)运行时参数案例

1)基本原理

(1)父Job将参数写入JOB_OUTPUT_PROP_FILE环境变量所指向的文件

(2)子Job使用 ${jobName:param}来获取父Job输出的参数并定义执行条件

2)支持的条件运算符:

(1)== 等于

(2)!= 不等于

(3)> 大于

(4)>= 大于等于

(5)< 小于

(6)<= 小于等于

(7)&& 与

(8)|| 或

(9)! 非

3)案例:

需求:

JobA执行一个shell脚本。

JobB执行一个shell脚本,但JobB不需要每天都执行,而只需要每个周一执行。

(1)新建JobA.sh

#!/bin/bash
echo "do JobA"
wk=`date +%w`
echo "{\"wk\":$wk}" > $JOB_OUTPUT_PROP_FILE

(2)新建JobB.sh

#!/bin/bash
echo "do JobB"

(3)新建condition.flow

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
(2) 预定义宏案例

Azkaban中预置了几个特殊的判断条件,称为预定义宏。

预定义宏会根据所有父Job的完成情况进行判断,再决定是否执行。可用的预定义宏如下:

(1)all_success: 表示父Job全部成功才执行(默认)
(2)all_done:表示父Job全部完成才执行
(3)all_failed:表示父Job全部失败才执行
(4)one_success:表示父Job至少一个成功才执行
(5)one_failed:表示父Job至少一个失败才执行

1)案例

需求:

JobA执行一个shell脚本

JobB执行一个shell脚本

JobC执行一个shell脚本,要求JobA、JobB中有一个成功即可执行

(1)新建JobA.sh

#!/bin/bash
echo "do JobA"

(2)新建JobC.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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值