Azkaban作業參數使用介紹

Azkaban中的參數詳解

參數傳遞是調度字體工作流運行時非常重要的一部分,工作流的執行,單個作業的執行,多個工作流之間的依賴執行,歷史人物重算,都涉及到參數傳遞和同步。

azkaban的工作流中的參數可以分爲如下幾個類型:

1: Azkaban UI 頁面輸入參數

2: 環境變量參數

3:job作業文件中定義的參數

4:工作流的用戶定義的屬性文件,上游作業傳遞給下游的參數

5:工作流運行時產生的系統參數

6:job的common參數

 

以下是參數類型與其對應的參數範圍:

參數類型 參數的作用域
UI 頁面輸入參數 ,即工作流參數 flow全局有效
工作流ZIP壓縮包中的屬性文件 flow全局有效,zip文件目錄以及子目錄有效
工作流運行時參數 flow全局有效
環境變量參數 flow全局有效
job的common參數 job內局部有效
JOB文件中定義的參數 job內局部有效
上游作業傳遞給下游的參數 job內局部有效

其中,全局參數,在整個工作流的作業文件配置中,都可以通過 ${參數名} 的方式引用使用。


job配置中的參數

commod參數配置

除了typem,commond,decpendencies三個參數外,還有如下一些保留參數可以爲每個job配置

參數 說明
retries 失敗的job的自動重試的次數
retry.backoff 重試的間隔(毫秒)
working.dir 指定命令被調用的目錄。默認的working目錄是executions/${execution_ID}目錄
env.property 指定在命令執行前需設置的環境變量。Property定義環境變量的名稱,
因此 env.VAR_NAME=VALUE就創建了一個$VAR_NAME環境變量
並且指定了它的VALUE
failure.emails job失敗時發送的郵箱,用逗號隔開
success.emails job成功時發送的郵箱,用逗號隔開
notify.emails job成功或失敗都發送的郵箱,用逗號隔開

一個flow的email屬性,只會取最後一個job的配置,其他的job的email配置將會被忽略。


單個job的創建

創建job很簡單,只要創建一個以.job結尾的文本文件就行了,例如我們創建一個工作,用來打印hello world,名字叫做command.job

#command.job

type=command

command=echo 'hello world'

一個簡單的job就創建好了,解釋下,type的command,告訴azkaban用unix原生命令去運行,比如原生命令或者shell腳本,當然也有其他類型。

一個工程不可能只有一個job,我們現在創建多個依賴job,這也是採用azkaban的首要目的。


多個command類型多job工作流flow

jobs和它們的依賴組成flow。怎麼創建依賴,只要指定dependencies參數就行了。比如導入hive前,需要進行數據清洗,數據清洗前需要上傳,上傳之前需要從ftp獲取日誌。

比如定義5個job:

1:o2o_2_hive.job:將清洗完的數據入hive庫

2:o2o_clean_data.job:調用mr清洗hdfs數據

3:o2o_up_2_hdfs.job:將文件上傳至hdfs

4:o2o_get_file_ftp1.job:從ftp1獲取日誌

5:o2o_get_file_fip2.job:從ftp2獲取日誌

彼此之間依賴關係
3依賴4和5,2依賴3,1依賴2,4和5沒有依賴關係。

o2o_2_hive.job:

type=command
# 執行sh腳本,建議這樣做,後期只需維護腳本就行了,azkaban定義工作流程
command=sh /job/o2o_2_hive.sh
dependencies=o2o_clean_data

 

o2o_clean_data.job:

type=command
# 執行sh腳本,建議這樣做,後期只需維護腳本就行了,azkaban定義工作流程
command=sh /job/o2o_clean_data.sh
dependencies=o2o_up_2_hdfs

 

o2o_up_2_hdfs.job:

type=command
#需要配置好hadoop命令,建議編寫到shell中,可以後期維護
command=hadoop fs -put /data/*
#多個依賴用逗號隔開
dependencies=o2o_get_file_ftp1,o2o_get_file_ftp2

 

o2o_get_file_ftp1.job:

type=command
command=wget "ftp://file1" -O /data/file1

 

o2o_get_file_ftp2.job:

type=command
command=wget "ftp:file2" -O /data/file2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章