Azkaban(二)【WorkFlow案例實操】
阿新 • • 發佈:2020-07-20
目錄
1.使用步驟
1)建立.project檔案: azkaban-flow-version:2.0
2)建立.flow檔案
3)壓縮成.zip檔案,上傳
注意:flow檔案是yaml格式
大小寫敏感
通過縮排來表達層次,嚴禁使用\t
屬性名:後面跟一個空格
2.案例:
1.hello word
nodes:
- name: Job名稱
type: command<job型別[command/javaprocess/flow]>
config:
command: echo "...."/sh xx.sh
2.作業依賴[dependsOn配置作業的依賴關係]
nodes: - name: A type: command config: command: echo "A" - name: B type: command config: command: echo "B" dependsOn: - A
3.內嵌工作流
nodes:
- name: A
type: flow #flow代表當前Job就是一個工作流
#config:
# command: echo "A" 當前不會列印,因為只有type為command才會執行命令
nodes:
- name: B
type: command
config:
command: echo "A.B"
4.全域性配置 [在開頭通過config進行配置,後續可以通過${屬性名}來引用]
config:
屬性名1: 屬性值
屬性名2: 屬性值
nodes:
- name: A
type: command
config:
command: echo "${屬性名1} .."
5.自動重試[retries代表重試的次數,retry.backoff代表重試的時間間隔]
nodes:
- name: A
type: command
config:
command: echo "${屬性名1} .."
retries: 3
retry.backoff: 5000 #毫秒
6.執行java程式
nodes:
- name: A
type: javaprocess
config:
java.class: com.atguigu.XXX
Xmx: 1024M
Xms: 1024M
# type:javaprocess [代表執行java程式]
# java.class: [執行哪個java類,類中必須要有main方法]
# Xms: [代表啟動時的記憶體容量大小]
# Xmx: [代表執行時的記憶體的最大容量大小]
# 一般Xms要與Xmx設定一致,防止記憶體的抖動
7.條件工作流
7.1 根據job的引數進行判斷
【在指令碼中將json字串寫到azkaban內部的變數<$JOB_OUTPUT_PROP_FILE>中,後續通過${Job名稱:屬性名}】
在寫入$JOB_OUTPUT_PROP_FILE變數的時候,要在指令碼的最後一行寫入
nodes:
- name: A
type: command
config:
command: sh a.sh
- name: B
type: command
config:
command: echo "B"
condition: ${A:屬性名} == "屬性值"
a.sh內容
##! /bin/bash
...
echo '{"屬性名":"屬性值"}' >> $JOB_OUTPUT_PROP_FILE
7.2 azkaban內部巨集
nodes:
- name: A
type: command
config:
command: sh a.sh
- name: C
type: command
config:
command: sh c.sh
- name: B
type: command
config:
command: echo "B"
condition: ${A:屬性名} == "屬性值" && all_success
dependsOn:
- A
- C
#all_done: 依賴任務全部完成[kill、failed、success..都代表完成]
#all_success: 依賴的任務必須全部success
#all_failed: 依賴的任務必須全部failed
#one_failed: 依賴的任務必須要求其中一個failed
#one_success: 依賴的任務必須要求其中一個success