流程/排程管理套件的選擇

之前公司用Azkaban做batch job的schedule管理

更早以前在前公司的時候是只用crontab做排程

單用crontab其實也夠強大了,只是會延伸幾個問題

1. job失敗的時候怎麼辦? 繼續做下去或是全部取消
2. Retry機制的如何實現
3. dependency管理,一個作業會依賴其他作業是否完成
4. 是否能防止同樣的job同時間執行

幾個問題都是在做schedule會遇到的,crontab時代大概就是選擇自己實作file lock

然後用時間錯開的方式去做job dependency,這些方法其實有經驗了也夠用了

但開始用azkaban管理套件之後才開始覺這類作業應該要能更聰明

只是Azkaban已經有好一段時間沒有更新了,上面想換個Rundeck用

看了某篇部落的介紹去研究了幾套
http://qiita.com/shrkw/items/5c3d53358b0016a09504 日文注意

除了Rundeck之外還有關注的是Luigi跟Jenkins, Oozie等

不過這次目標的使用者也包含DBA等

Jenkins本身性質比較偏向開發人員的流程整合,所以就先不納入考慮

而Oozie則是前工作的時候研究過了,想碰點新玩意

這邊只做了Rundeck, Luigi, Azkaban的比較

Web UI最強大的就是Rundeck,API支援也最完整

但是它偏偏少了我在azkaban愛用的dependency graph

有了這工具每項依賴可以很清楚的管理,只能期待之後的版本會不會追加了

Luigi的話問題是Web UI太過簡單,也不能透過Web去觸發ad-hoc job

大部份的作業都得靠python script完成,比Jenkins又更偏向開發者向了

comments powered by Disqus