Azkaban 主要經過界面上傳配置文件來進行任務的調度。它有兩個重要的概念:git
目前 Azkaban 3.x 同時支持 Flow 1.0 和 Flow 2.0,本文主要講解 Flow 1.0 的使用,下一篇文章會講解 Flow 2.0 的使用。github
在 Azkaban 主界面能夠建立對應的項目:sql
新建任務配置文件 Hello-Azkaban.job
,內容以下。這裏的任務很簡單,就是輸出一句 'Hello Azkaban!'
:shell
#command.job type=command command=echo 'Hello Azkaban!'
將 Hello-Azkaban.job
打包爲 zip
壓縮文件:app
經過 Web UI 界面上傳:oop
上傳成功後能夠看到對應的 Flows:測試
點擊頁面上的 Execute Flow
執行任務:大數據
點擊 detail
能夠查看到任務的執行日誌:日誌
這裏假設咱們有五個任務(TaskA——TaskE),D 任務須要在 A,B,C 任務執行完成後才能執行,而 E 任務則須要在 D 任務執行完成後才能執行,這種狀況下須要使用 dependencies
屬性定義其依賴關係。各任務配置以下:code
Task-A.job :
type=command command=echo 'Task A'
Task-B.job :
type=command command=echo 'Task B'
Task-C.job :
type=command command=echo 'Task C'
Task-D.job :
type=command command=echo 'Task D' dependencies=Task-A,Task-B,Task-C
Task-E.job :
type=command command=echo 'Task E' dependencies=Task-D
壓縮後進行上傳,這裏須要注意的是一個 Project 只能接收一個壓縮包,這裏我還沿用上面的 Project,默認後面的壓縮包會覆蓋前面的壓縮包:
多個任務存在依賴時,默認採用最後一個任務的文件名做爲 Flow 的名稱,其依賴關係如圖:
從這個案例能夠看出,Flow1.0 沒法經過一個 job 文件來完成多個任務的配置,可是 Flow 2.0 就很好的解決了這個問題。
步驟與上面的步驟一致,這裏以查看 HDFS 上的文件列表爲例。命令建議採用完整路徑,配置文件以下:
type=command command=/usr/app/hadoop-2.6.0-cdh5.15.2/bin/hadoop fs -ls /
執行結果:
MR 做業配置:
type=command command=/usr/app/hadoop-2.6.0-cdh5.15.2/bin/hadoop jar /usr/app/hadoop-2.6.0-cdh5.15.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar pi 3 3
執行結果:
做業配置:
type=command command=/usr/app/hive-1.1.0-cdh5.15.2/bin/hive -f 'test.sql'
其中 test.sql
內容以下,建立一張僱員表,而後查看其結構:
CREATE DATABASE IF NOT EXISTS hive; use hive; drop table if exists emp; CREATE TABLE emp( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; -- 查看 emp 表的信息 desc emp;
打包的時候將 job
文件與 sql
文件一併進行打包:
執行結果以下:
在測試時,咱們可能須要頻繁修改配置,若是每次修改都要從新打包上傳,這會比較麻煩。因此 Azkaban 支持配置的在線修改,點擊須要修改的 Flow,就能夠進入詳情頁面:
在詳情頁面點擊 Eidt
按鈕能夠進入編輯頁面:
在編輯頁面能夠新增配置或者修改配置:
若是出現如下異常,多半是由於執行主機內存不足,Azkaban 要求執行主機的可用內存必須大於 3G 才能執行任務:
Cannot request memory (Xms 0 kb, Xmx 0 kb) from system for job
若是你的執行主機沒辦法增大內存,那麼能夠經過修改 plugins/jobtypes/
目錄下的 commonprivate.properties
文件來關閉內存檢查,配置以下:
memCheck.enabled=false
更多大數據系列文章能夠參見 GitHub 開源項目: 大數據入門指南