開源python |
Oozieweb |
成熟穩定可靠,可直接用於生產環境服務器 |
|
Azkaban框架 |
單點、簡單粗暴,有兩套獨立的調度實現,必須二次開發纔可用分佈式 |
|
|
Airflowspa |
|
代碼以及流程配置都是python翻譯 |
|
本身封裝日誌 |
基於quartz單機server |
使用zk來作分佈式控制blog |
經常使用quartz+zk作調度系統 |
使用db心跳來作分佈式控制 |
好比阿里Zeus(3年前再也不開源,還須要作一些二次開發才能用) |
||
基於quartz分佈式 |
quartz自己使用db鎖來作分佈式控制 |
|
Ps:
zeus相比azkaban,有一點作的很差,是all-in-one,即主從部署在一塊兒,有兩個問題,一個是資源浪費,一個是主從相互影響;
|
Oozie |
Azkaban |
Zeus |
版本 |
4.3(5.0Beta) |
3.45 |
|
高可用性 |
支持(zk) |
不支持(存在單點) |
支持(db心跳) |
高穩定性 |
是 |
未知 |
未知 |
功能 |
豐富 |
簡單 |
簡單 |
界面 |
Ext2 |
最好 |
Gwt |
是否須要二次開發 |
否 |
是 |
是 |
是否須要人工干預 |
否 |
是 |
否 |
重啓服務器流程自動恢復 |
是 |
否 |
是 |
是否有任務重複運行風險 |
否 |
是 |
是 |
代碼質量 |
高 |
通常 |
通常 |
代碼更新 |
正常 |
過於頻繁 |
中止開源,無人維護 |
主從分離(任務分配與執行分離) |
是 |
是 |
否 |
最小佔用資源 |
2個server Yarn |
1個web server 2個executor server |
2個server |
任務 |
Task/Job |
一個具體的操做 |
工做流 |
Workflow |
由多個任務組成 |
調度 |
Coordinator |
按照條件觸發工做流,好比定時 |
定義 |
Definition |
描述要作的事情,好比任務定義、工做流定義、調度定義 |
實例 |
Instance |
定義的一次具體執行,包括執行時間、狀態等 |
l 模型Model分爲三種:任務Task/Job、工做流Workflow、調度Coordinator,一個或多個任務組合成一個工做流,工做流能夠手工觸發,也能夠配置調度來觸發,常見的調度好比定時;
l 定義Definition的每一次執行都是一個實例Instance,實例記錄開始、結束時間、狀態、日誌等;
全部的調度框架的抽象是相同或者近似的,因此理論上能夠將調度框架A的任務、工做流、調度定義 翻譯Translate 爲調度框架B的任務、工做流、調度定義,實現調度框架的切換;
一個形象的類比是,調度框架A是中國工人,調度框架B是日本工人,中國工人生病了,如今須要增長一個翻譯人員C,將中國工人的工做內容和時間告訴日本工人,同時不斷將日本工人工做的進展同步給中國工人,全部的變化對領導層都是透明的;