Azkaban是由Linkedin開源的一個批量工做流任務調度器。用於在一個工做流內以一個特定的順序運行一組工做和流程。Azkaban定義了一種KV文件格式來創建任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工做流。簡而言之就是一個工做流調度系統。java
由於一個完整的數據分析系統一般都是由大量任務單元組成:shell腳本程序,Java程序,mapreduce程序、Hive腳本等node
而各任務單元之間存在時間前後及先後依賴關係linux
爲了很好地組織起這樣的複雜執行計劃,須要一個工做流調度系統來調度執行;web
在Hadoop領域,常見工做流調度系統有:Oozie, Azkaban,Cascading,Hamakeshell
下面的表格對上述四種hadoop工做流調度器的關鍵特性進行了比較,儘管這些工做流調度器可以解決的需求場景基本一致,但在設計理念,目標用戶,應用場景等方面仍是存在顯著的區別,在作技術選型的時候,能夠提供參考ide
特性模塊化 |
Hamakeoop |
Ooziespa |
Azkaban.net |
Cascading |
工做流描述語言 |
XML |
XML (xPDL based) |
text file with key/value pairs |
Java API |
依賴機制 |
data-driven |
explicit |
explicit |
explicit |
是否要web容器 |
No |
Yes |
Yes |
No |
進度跟蹤 |
console/log messages |
web page |
web page |
java API |
Hadoop job調度支持 |
no |
yes |
yes |
yes |
運行模式 |
command line utility |
daemon |
daemon |
API |
Pig支持 |
yes |
yes |
yes |
yes |
事件通知 |
no |
no |
no |
yes |
須要安裝 |
no |
yes |
yes |
no |
支持的hadoop版本 |
0.18+ |
0.20+ |
currently unknown |
0.18+ |
重試支持 |
no |
workflownode evel |
yes |
yes |
運行任意命令 |
yes |
yes |
yes |
yes |
Amazon EMR支持 |
yes |
no |
currently unknown |
yes |
其中比較經常使用的爲Azkaban和Oozie。
1 Web用戶界面
2 方便上傳工做流
3 方便設置任務之間的關係
4 調度工做流
5 認證/受權(權限的工做)
6 可以殺死並從新啓動工做流
7 模塊化和可插拔的插件機制
8 項目工做區
9 工做流和任務的日誌記錄和審計
Azkaban有web界面,輸入https://localhost:8443 (注意是https)能夠訪問Azkaban的用戶界面。如圖:
首頁有四個菜單
建立job很簡單,只要建立一個以.job結尾的文本文件就好了。好比:
若是是多個job而且有依賴關係,能夠使用dependencies參數指定依賴關係。如:
這樣job就建立好了。
將上面兩個job打成zip包,在頁面上點擊update上傳。上傳以後如圖:
以後點擊綠色的Execute Flow,彈出窗口:
左邊的選項卡依次爲:
左下角的Schedule是設置調度時間,右下角的Execute爲直接運行,點擊Execute。運行以後在Graph能夠看到:
在job List中能夠看到個job運行的起始終止時間。
這樣工做流的調度就執行完了,Azkaban的使用仍是挺簡單的吧。