问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Azkaban Flow 2.0 使用简介

创作时间:
作者:
@小白创作中心

Azkaban Flow 2.0 使用简介

引用
1
来源
1.
https://www.cnblogs.com/remainsu/p/azkaban-flow-20-shi-yong-jian-jie.html

本文上接《Azkaban 3.73.1 使用简介》,对Azkaban使用Flow 2.0来创建工作流做简单说明

声明:官方建议使用Flow 2.0来创建Azkaban工作流,且Flow 1.0将被弃用

一、简单的Flow

1. 新建 flow20.project 文件

  • 这是一个必须的文件,且文件名固定为:flow20.project
  • 文件仅一行内容:azkaban-flow-version: 2.0,其作用为表明这是Azkaban Flow 2.0的项目
touch flow20.project
echo "azkaban-flow-version: 2.0" > flow20.project

2. 新建 .flow 文件

  • 这同样是一个必须的文件,且文件固定使用:.flow作为扩展名,如:money.flow、item.flow

.flow文件常用标签

标签
备注
nodes
这其中将包含所有要运行的job
nodes.name
job的名字
nodes.type
job类型,如:command、pig
nodes.config
以键值对的形式,配置要执行的命令或脚本
config
1. 以键值对的形式,为整个工作流定义参数
2. 定义的参数在整个Flow中均有效
3. 使用时通过 ${param_key} 引用定义好的参数

举例:

# 文件名:simple_1.flow
nodes:
- name: jobA
    type: command
    config:
      command: echo "This is an echoed text by simple flow"

3. 打包

压缩上述新建的flow20.project和.flow文件 到同一个.zip文件中

  • 必须是zip压缩文件,当前仅支持zip
  • 所有文件必须在压缩包的根目录中,没有子目录

4. 创建Project & 上传zip & 运行Flow

具体过程略,可参考前一篇博文《Azkaban 3.73.1 简单使用》第3.3节的内容

备注:与之前不同的是,Flow的名字不再是最后一个没有依赖的job的名字,而是 .flow文件的名字

二、Job间有依赖关系的Flow

  1. 新建两个文件:flow20.project和.flow为扩展名的文件

  2. 打包zip & 上传zip & 运行

详细过程略,.flow 文件举例:

# 文件名:dependsOn.flow
nodes:
- name: jobC
    type: command
    config:
      command: echo "This is jobC, depends on jobA and jobB"
    dependsOn:
- jobA
- jobB
- name: jobA
    type: command
    config:
      command: echo "This is jobA."
- name: jobB
    type: command
    config:
      command: echo "This is jobB."

三、嵌入式Flow(Flow间存在依赖)

  1. 新建两个文件:flow20.project和.flow为扩展名的文件

  2. 打包zip & 上传zip & 运行

注意:依赖的Flow节点的type必须指定为:flow

详细过程略,.flow 文件举例:

config:
  param.test: param_test

nodes:
- name: jobC
    type: command
    config:
      command: echo ${param.test} "This is jobC, embedded on embedded_flow."
    dependsOn:
- embedded_flow
- name: embedded_flow
    type: flow
    config:
      param.flow.test: param_flow_test
    nodes:
- name: jobB
        type: command
        config:
          command: echo "This is jobB."
        dependsOn:
- jobA
- name: jobA
        type: command
        config:
          command: echo ${param.flow.test} "This is jobA."

说明:

  1. config 参数无特殊意义,仅作演示使用,

  2. 与之前不同的是,flow间的依赖,所依赖的flow在web页面中的显示是如下图的样子

附录

官方文档

https://azkaban.readthedocs.io/en/latest/createFlows.html#

例子源码

https://github.com/remainsu/azkaban_job

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号