Azkaban配置Work Flow案例实操

Work Flow案例实操

1. Yarm语法简介

2.0 azkaban支持 properties配置文件,也支持yml配置文件!
3.0 azkaban默认支持yml配置文件!

yarm语法:

  yml:  简洁,适合表示层级关系复杂的数据!
  • yml主要使用缩进表示层级关系,一旦下一行出现了缩进,表示下一行是上一行的子属性!
  • 缩进时,如果缩进的距离一致,层级一致!
  • 大量使用空格,缩进时不能使用tab,K-V之间必须使用空格!

K-V类型表示方法:

k:(空格)v

对象类型数据,map(k-v)

jack:
  name: jack
  age: 20

单行:

jack: {name: jack,age: 20}

数组类型数据,List,Set

fruits:
  - apple
  - banana

单行:

fruits: [apple,banana]

2. HelloWorld案例

1)在windows环境,新建azkaban.project文件,编辑内容如下

azkaban-flow-version: 2.0

注意:该文件作用,是采用新的Flow-API方式解析flow文件。

2)新建basic.flow文件,内容如下

nodes:
  - name: jobA
    type: command
    config:
      command: echo "Hello World"

(1)Name:job名称

(2)Type:job类型。command表示你要执行作业的方式为命令

(3)Config:job配置

3)将azkaban.project、basic.flow文件压缩到一个zip文件,文件名称必须是英文。

4)在WebServer新建项目:http://hadoop102:8081/index
在这里插入图片描述

5)给项目名称命名和添加项目描述
在这里插入图片描述

6)first.zip文件上传
在这里插入图片描述

7)选择上传的文件
在这里插入图片描述

8)执行任务流
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9)在日志中,查看运行结果
在这里插入图片描述
在这里插入图片描述

3. JavaProcess案例

JavaProcess类型可以运行一个自定义主类方法,type类型为javaprocess,可用的配置为:
Xms:最小堆
Xmx:最大堆
java.class:要运行的Java对象,其中必须包含Main方法

案例:
1)新建一个azkaban的maven工程
2)创建包名:com.azkaban
3)创建AzTest类

package com.azkaban;

public class AzTest {
    public static void main(String[] args) {
        System.out.println("This is for testing!");
    }
}

4)打包成jar包azkaban-1.0-SNAPSHOT.jar

5)新建testJava.flow,内容如下

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

6)将Jar包、flow文件和project文件打包成javatest.zip
7)创建项目=》上传javatest.zip =》执行作业=》观察结果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4. 作业依赖案例

需求:JobA和JobB执行完了,才能执行JobC

具体步骤:
1)修改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"

(1)dependsOn:作业依赖,后面案例中演示

2)将修改后的basic.flow和azkaban.project压缩成second.zip文件

3)重复HelloWorld后续步骤。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5. 自动失败重试案例

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

具体步骤:
1)编译配置流

nodes:
  - name: JobA
    type: command
    config:
      command: sh /not_exists.sh
      retries: 3
      retry.backoff: 10000

参数说明:
retries:重试次数
retry.backoff:重试的时间间隔

2)将修改后的basic.flow和azkaban.project压缩成four.zip文件

3)重复HelloWorld后续步骤。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4)执行并观察到一次失败+三次重试

在这里插入图片描述

5)也可以点击上图中的Log,在任务日志中看到,总共执行了4次。

在这里插入图片描述
6)也可以在Flow全局配置中添加任务失败重试配置,此时重试配置会应用到所有Job。
案例如下:

config:
  retries: 3
  retry.backoff: 10000
nodes:
  - name: JobA
    type: command
    config:
      command: sh /not_exists.sh

6. 手动失败重试案例

需求:JobA=》JobB(依赖于A)=》JobC=》JobD=》JobE=》JobF。生产环境,任何Job都有可能挂掉,可以根据需求执行想要执行的Job。

具体步骤:
1)编译配置流

nodes:
  - name: JobA
    type: command
    config:
      command: echo "This is JobA."

  - name: JobB
    type: command
    dependsOn:
      - JobA
    config:
      command: echo "This is JobB."

  - name: JobC
    type: command
    dependsOn:
      - JobB
    config:
      command: echo "This is JobC."

  - name: JobD
    type: command
    dependsOn:
      - JobC
    config:
      command: echo "This is JobD."

  - name: JobE
    type: command
    dependsOn:
      - JobD
    config:
      command: echo "This is JobE."

  - name: JobF
    type: command
    dependsOn:
      - JobE
    config:
      command: echo "This is JobF."

2)将修改后的basic.flow和azkaban.project压缩成five.zip文件

3)重复HelloWorld后续步骤。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Enable和Disable下面都分别有如下参数:
Parents:该作业的上一个任务
Ancestors:该作业前的所有任务
Children:该作业后的一个任务
Descendents:该作业后的所有任务
Enable All:所有的任务

4)可以根据需求选择性执行对应的任务。

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值