Azkaban概述詳解
本文簡單介紹一下Azkaban及其特點。azkaban是一個開源的任務調度系統,用於負責任務的調度運行(如數據倉庫調度),用以替代linux中的crontab。
一、Azkaban是什麼?
1.1 Azkaban是什麼?
- Azkaban是一套簡單的任務調度服務,整體包括三部分webserver、dbserver、executorserver。
- Azkaban是linkin的開源項目,開發語言爲Java。
- Azkaban是由Linkedin開源的一個批量工作流任務調度器。用於在一個工作流內以一個特定的順序運行一組工作和流程。
- Azkaban定義了一種KV文件格式來建立任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流。
1.2 Azkaban典型使用場景
實際當中經常有這些場景:每天有一個大任務,這個大任務可以分成A,B,C,D四個小任務,A,B任務之間沒有依賴關係,C任務依賴A,B任務的結果,D任務依賴C任務的結果。一般的做法是,開兩個終端同時執行A,B,兩個都執行完了再執行C,最後再執行D。這樣的話,整個的執行過程都需要人工參加,並且得盯着各任務的進度。但是我們的很多任務都是在深更半夜執行的,通過寫腳本設置crontab執行。其實,整個過程類似於一個有向無環圖(DAG)。每個子任務相當於大任務中的一個流,任務的起點可以從沒有度的節點開始執行,任何沒有通路的節點之間可以同時執行,比如上述的A,B。總結起來的話,我們需要的就是一個工作流的調度器,而azkaban就是能解決上述問題的一個調度器。
1.3 Azkaban官網
二、Azkaban的功能特點
它具有如下功能特點:
- 1、Web用戶界面
- 2、方便上傳工作流
- 3、方便設置任務之間的關係
- 4、工作流調度
- 5、認證/授權
- 6、能夠殺死並重啓工作流
- 7、模塊化和可插拔的插件機制
- 8、項目工作區
- 9、工作流和任務的日誌記錄和審計
三、Azkaban的架構
Azkaban是一種類似於Oozie的工作流控制引擎,可以用來解決多個Hadoop(或Spark等)離線計算任務之間的依賴關係問題。也可以用其代替crontab來對週期性任務進行調度,並且更爲直觀,可靠,同時提供了美觀的可視化管理界面。
Azkaban由三部分構成:
1、Relational Database(Mysql)
azkaban將大多數狀態信息都存於MySQL中,Azkaban Web Server 和 Azkaban Executor Server也需要訪問DB。
2、Azkaban Web Server
提供了Web UI,是azkaban的主要管理者,包括 project 的管理,認證,調度,對工作流執行過程的監控等。
3、Azkaban Executor Server
調度工作流和任務,紀錄工作流活任務的日誌,之所以將AzkabanWebServer和AzkabanExecutorServer分開,主要是因爲在某個任務流失敗後,可以更方便的將重新執行。而且也更有利於Azkaban系統的升級
MySQL實例:Azkaban使用MySQL來存儲項目和執行。
Azkaban Web服務器:Azkaban使用Jetty作爲Web服務器,用作控制器以及提供Web界面
Azkaban執行服務器:Azkaban執行服務器執行提交工作流