一 概述
1.1 什麼是 Azkaban
Azkaban 是由 Linkedin 公司推出的一個批量工作流任務排程器,主要用于在一個工作流内以一個特定的順序運作一組工作和流程,它的配置是通過簡單的 key:value 對的方式,通過配置中的 Dependencies 來設定依賴關系。Azkaban 使用 job 配置檔案建立任務之間的依賴關系,并提供一個易于使用的 web 使用者界面維護和跟蹤你的工作流。
1.2 為什麼需要工作流排程系統
- 一個完整的資料分析系統通常都是由大量任務單元組成:Shell 腳本程式,Java 程式,MapReduce 程式、Hive 腳本等
- 各任務單元之間存在時間先後及前後依賴關系
- 為了很好地組織起這樣的複雜執行計劃,需要一個工作流排程系統來排程執行;例如,我們可能有這樣一個需求,某個業務系統每天産生 20G 原始資料,我們每天都要對其進行處理,處理步驟如下所示:
- 通過 Hadoop 先将原始資料上傳到 HDFS 上(HDFS 的操作);
- 使用 MapReduce 對原始資料進行清洗(MapReduce 的操作);
- 将清洗後的資料導入到 hive 表中(hive 的導入操作);
- 對 Hive 中多個表的資料進行 JOIN 處理,得到一張 hive 的明細表(建立中間表);
- 通過對明細表的統計和分析,得到結果報表資訊(hive 的查詢操作);
1.3 Azkaban 特點
- 相容任何版本的 hadoop
- 易于使用的 Web 使用者界面
- 簡單的工作流的上傳
- 友善設定任務之間的關系
- 排程工作流
- 子產品化和可插拔的插件機制
- 認證/授權(權限的工作)
- 能夠殺死并重新啟動工作流
- 有關失敗和成功的電子郵件提醒
1.4 常見工作流排程系統
- 簡單的任務排程:直接使用 crontab 實作;
- 複雜的任務排程:開發排程平台或使用現成的開源排程系統,比如 ooize、azkaban 等
1.5 Azkaban 的架構
-
:AzkabanWebServer
是整個 Azkaban 工作流系統的主要管理者,它使用者登入認證、負責 project 管理、定時執行工作流、跟蹤工作流執行進度等一系列任務。AzkabanWebServer
-
:負責具體的工作流的送出、執行,它們通過 mysql 資料庫來協調任務的執行。AzkabanExecutorServer
- 關系型資料庫(MySQL):存儲大部分執行流狀态,
和AzkabanWebServer
都需要通路資料庫。AzkabanExecutorServer