在安裝好Azkaban後,熟悉Azkaban的用法花了較長時間,也踩了一些坑,接下來將詳細描述Azkaban的使用過程。html
目錄python
1、界面介紹web
2、Projects分佈式
1. 建立Command類型單一Job示例學習
1)建立一個Project,填寫名稱和描述測試
2)點擊Create Project以後this
3)建立Jobspa
4)打包Job資源文件並上傳插件
2. 建立Command類型多Job工做流unix
1)建立Project
2)上傳文件
3)執行一次
4)指定定時任務
首頁有6個菜單:
建立工程:建立以前咱們先了解下Project、Flow和Job之間的關係,一個Project包含一個或多個Flow,一個Flow包含多個Job。Job是你想在Azkaban中運行的一個進程,能夠是簡單的Linux命令,能夠是Java程序,也能夠是複雜的Shell腳本,固然,若是你安裝相關插件,也能夠運行插件。一個Job能夠依賴於另外一個Job,這種多個Job和它們的依賴組成的圖表叫作Flow。
建立Job很簡單,只要建立一個以.job結尾的文本文件就好了,例如咱們建立一個工做,用來打印Hello Azkaban, welcome to the world!,名字叫作command.job
#command.job type=command command=echo 'Hello Cellphone, welcome to this world!'
一個簡單的job就建立好了,解釋下,type的command,告訴Azkaban用unix原生命令去運行,好比原生命令或者Shell腳本,固然也有其餘類型,後面介紹。
注意:只能是zip格式!!!
在分佈式計算(四)Azkaban安裝文中說到,安裝的是two server model模式,因此在執行Flow時須要顯示指定useExecutor,在 flow params中設置"useExecutor" = EXECUTOR_ID,而EXECUTOR_ID是數據表executors的id。若是不指定,配置的Flow是沒法成功執行的。若是不想經過頁面設置來指定Executor,能夠在properties文件中指定,同時在代碼中加上對該屬性的解析,而後,才能分發到指定Executor。
前面介紹過多個Job和它們的依賴組成Flow。怎麼建立依賴,只要指定dependencies參數就好了。好比導入Hive前,須要進行數據清洗,數據清洗前須要上傳,上傳以前須要從Ftp獲取日誌。
定義5個Job:
1. download_log_from_ftp1:從ftp1下載日誌
2. download_log_from_ftp2:從ftp2下載日誌
3. upload_log_to_hdfs:上傳日誌到hdfs
4. clean_data:清洗數據
5. transport_data_to_hive:將清洗完的數據入hive庫
依賴關係:
3依賴1和2,4依賴3,5依賴4,1和2沒有依賴關係。
download_log_from_ftp1.job
type=command # 執行sh腳本,建議這樣作,後期只需維護腳本就好了,azkaban定義工做流程 # 這裏爲了測試,把command修改成echo + 相應命令 command=echo 'sh /job/download_log_from_ftp1.sh'
download_log_from_ftp2.job
type=command # 執行sh腳本,建議這樣作,後期只需維護腳本就好了,azkaban定義工做流程 # 這裏爲了測試,把command修改成echo + 相應命令 command=echo 'sh /job/download_log_from_ftp2.sh'
upload_log_to_hdfs.job
type=command command=echo 'sh /job/upload_log_to_hdfs.sh' #多個依賴用逗號隔開 dependencies=download_log_from_ftp1,download_log_from_ftp2
clean_data.job
type=command command=echo 'sh /job/clean_data.sh' #多個依賴用逗號隔開 dependencies=upload_log_to_hdfs
transport_data_to_hive.job
type=command command=echo 'sh /job/transport_data_to_hive.sh' #多個依賴用逗號隔開 dependencies=clean_data
能夠運行unix命令,也能夠運行python腳本(強烈推薦)。將上述job打成zip包。
建立工程MultiJob,並上傳MultiJob.zip
點擊transport_data_to_hive進入流程,azkaban流程名稱以最後一個沒有依賴的job定義的。
右上方是配置執行當前流程或者執行定時流程。
說明:
Flow view:流程視圖,能夠禁用,啓用某些Job
Notification:定義任務成功或者失敗是否發送郵件
Failure Options:定義一個Job失敗,剩下的Job怎麼執行
Concurrent:並行任務執行設置
Flow Parametters:參數設置
設置好上述參數,點擊execute。
綠色表明成功,藍色是運行,紅色是失敗。能夠查看job運行時間,依賴和日誌,點擊details能夠查看各個job運行狀況。
能夠查看下次執行時間。
1. Azkaban 執行 Flow 一直處於 Preparing 狀態,沒法正常執行
修改 web-server conf/azkaban.properties 配置
# execute 主機過濾器配置, 去掉 MinimumFreeMemory # MinimumFreeMemory 過濾器會檢查 executor 主機空餘內存是否會大於 6G,若是不足 6G,則 web-server 不會將任務交由該主機執行 azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus