Azkaban-3.x 创建Flow

1. Flow 2.0 基础

使用Azkaban Flow 2.0 来创建任务流,Flow 1.0 将被废弃

  • 创建一个名为flow20.project的文本文件,添加如下内容用以说明这是一个Azkaban Flow 2.0的项目:
azkaban-flow-version: 2.0
  • 创建一个名为basic.flow的文本文件,其中定义了一个project中所有需要运行的job,使用nametype来定义一个job,大部分job都会需要config这个配置,详细的内容在下文中说明,这里只是一个简单的示例:
nodes:
  - name: jobA
    type: command
    config:
      command: echo "This is an echoed text."
  • 选择上面创建好的两个文件,然后将其压缩为一个名为Archive.zip的zip文件,注意,是把两个文件压缩为一个文件,Linux中的操作如下:
[hadoop@beh07 tmp]$ mkdir zip-test
[hadoop@beh07 tmp]$ mv flow20.project basic.flow zip-test/
[hadoop@beh07 tmp]$ cd zip-test/
# 将目录下的所有文件打成一个zip包
[hadoop@beh07 zip-test]$ zip -r Archive.zip .

# 错误操作
# 这是把zip-test这个目录打成一个zip包
[hadoop@beh07 tmp]$ zip -r Archive.zip zip-test

2. Job Dependencies

使用dependsOn标签配置Job之间的依赖,以下示例中,在jobA和jobB成功运行之后,jobC将开始运行。

nodes:
  - name: jobC
    type: noop
    # jobC depends on jobA and jobB
    dependsOn:
      - jobA
      - jobB

  - name: jobA
    type: command
    config:
      command: echo "This is an echoed text."

  - name: jobB
    type: command
    config:
      command: pwd

3. Job Config

Azkaban支持很多类型的Job,在type标签中指定即可,在config标签下使用key: value形式可以加入更多的配置。以下配置中,设置了要执行的pig脚本的位置,这个脚本需要和flow20.project以及basic.flow这两个文件一起打成zip包并上传到Project。

nodes:
  - name: pigJob
    type: pig
    config:
      pig.script: sql/pig/script.pig

4. Flow Config

Flow级别的配置也使用config标签,但是它与node标签同级。Flow级别的配置将会作用于所有的Job。

---
config:
  user.to.proxy: foo
  failure.emails: noreply@foo.com

nodes:
  - name: jobA
    type: command
    config:
      command: echo "This is an echoed text."

5. 多级Flow

你可以在Flow中添加其他子Flow,而不仅是添加Job。

nodes:
  - name: embedded_flow
    type: flow
    config:
      prop: value
    nodes:
      - name: jobB
        type: noop
        dependsOn:
          - jobA

      - name: jobA
        type: command
        config:
          command: pwd

推荐阅读更多精彩内容