Azkaban Flow 2.0 使用簡介


本文上接《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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM