Azkaban(二)【WorkFlow案例实操】

1.使用步骤

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

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
posted @ 2020-07-20 19:41  来自遥远的水星  阅读(419)  评论(0编辑  收藏  举报