Azkaban:來自Linkedin的批量工作流任務調度器
Azkaban是由Linkedin開源的一個批量工作流任務調度器。Azkaban來自LinkedIn公司,用于管理他們的Hadoop批處理 工作流。日常生產環境中,為了得到想要的數據,通常需要執行很多作業,一批作業執行完畢,再將中間結果進一步處理,最后得到有價值的數據,因此作業之間執 行有先后順序和依賴關系。這樣的一組作業稱為一個工作流,Azkaban就是用來構建、運行和管理工作流的工具,它提供友好的Web用戶界面來維護和跟蹤 用戶的工作流程。Azkaban已經在LinkedIn運行了好幾年,管理著很多Hadoop和數據倉庫作業流,具有很強的可用性。
簡單來講,它有幾個特點:
- 兼容各個版本的hadoop
- 用戶可通過web頁面提交工作流,方便上傳工作流,方便設置任務之間的關系
- 工作流調度
- 系統模塊化和可插拔的插件機制
- 用戶認證和權限驗證
- 用戶操作追蹤
- 任務執行結果郵件報警
- 按照SLA執行報警和殺作業
- 失敗作業重試,能夠殺死并重新啟動工作流
- 項目工作區
- 工作流和任務的日志記錄和審計 </ul>
- Azkaban Web Server:Azkaban使用Jetty作為Web服務器,除了提供web頁面響應服務,還負責項目管理,認證,調度,監控和發起執行,它是azkaban的大腦。
- Azkaban Executor Server:負責作業的執行,對執行過程及結果進行監控,并將執行狀況匯報給Azkaban Web Server,兩者采用http接口進行通信。
- MySQL: 負責存儲azkaban系統的數據,包括用戶上傳的工作流文件、作業執行的日志等。Executor Server和Web Server都通過jdbc頻繁地對其操作。 </ul>
- ADMIN:最高權限,可以胡作非為,包括添加其它用戶權限和刪除項目
- READ:查看作業、工作流、和相關日志
- WRITE:上傳、修改項目工作流文件
- EXECUTE:執行、暫停、取消作業。execute, pause, cancel jobs
- SCHEDULE:添加、修改、刪除工作流調度命令 </ul>
Azkaban目前有2個大版本,azkaban1.x和azkaban2.x,1系結構比較簡單,不需要依賴數據庫,執行器和調度器以及 webServer都集成在一起,缺點是沒有用戶和權限管理,其它功能不夠豐富,隨著用戶規模增大和系統健壯性需求,azkaban系統演進到最新2.x 版本。
Azkaban 2由三個重要的組件組成
任務調度
Azkaban里面除了按時間指定任務何時啟動,還可以指定任務周期:就是任務的重復執行頻率。這對于那些需要每天或每小時重復執行的任務很有用。 除了設置時間,還能設置任務的失敗策略和報警機制。比如可以選擇是第一次失敗就報警,還是整個流完成后報警。對于工作流中的單個任務還可以設置是否啟動。
插件機制
Azkaban支持可插拔的擴展插件,以便提供更多功能,更好的支持其他系統。例如hdfs查看插件可以查看hadoop上的文件。而job類型插 件則能夠定義具體的任務的啟動和執行方式,包括hive,pig等。用戶可以方便的擴展插件來支持不同的hadoop版本,或者支持其他的系統。
權限管理
一個登陸用戶對一個項目可以有以下五種權限:
項目主頁:http://azkaban.github.io/azkaban2/
引用地址:http://www.biaodianfu.com/azkaban.html