天天看點

008.Azkaban-3.x 建立Flow --轉載1. Flow 2.0 基礎2. Job Dependencies3. Job Config4. Flow Config5. 多級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,使用

    name

    type

    來定義一個job,大部分job都會需要

    config

    這個配置,詳細的内容在下文中說明,這裡隻是一個簡單的示例:
nodes:
  - name: jobA
    type: command
    config:
      command: echo "This is an echoed text."
           
  • 選擇上面建立好的兩個檔案,然後将其壓縮為一個名為

    Archive.zip

    的zip檔案,注意,是把兩個檔案壓縮為一個檔案,Linux中的操作如下:
[[email protected] tmp]$ mkdir zip-test
[[email protected] tmp]$ mv flow20.project basic.flow zip-test/
[[email protected] tmp]$ cd zip-test/
# 将目錄下的所有檔案打成一個zip包
[[email protected] zip-test]$ zip -r Archive.zip .

# 錯誤操作
# 這是把zip-test這個目錄打成一個zip包
[[email protected] 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: [email protected]

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
           

Azkaban