本文上接《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
- 新建兩個文件:flow20.project 和 .flow 為擴展名的文件
- 打包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間存在依賴)
- 新建兩個文件:flow20.project 和 .flow 為擴展名的文件
- 打包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."
說明:
- config 參數無特殊意義,僅作演示使用,
- 與之前不同的是,flow間的依賴,所依賴的flow在web頁面中的顯示是如下圖的樣子

附錄
官方文檔
https://azkaban.readthedocs.io/en/latest/createFlows.html#