簡單的任務排程使用crontab、複雜的任務排程使用oozie、azkaban等開發排程系統。
一、為什麼學習Azkaban
一個完整的資料分析系統通常都是由大量任務單元(shell指令碼、java程式、MapReduce程式、Hive指令碼等)組成。各任務單元之間存在先後及前後依賴關係,為了組織起這樣的複雜執行計劃,需要一個工作流排程系統來排程執行。
二、什麼是Azkaban
Azkaban是由LinkedIn公司推出的一個批次工作流任務排程器,主要用於在一個工作流內以一個特定的順序執行一組工作和流程,它的配置是透過簡單的 key:value
(鍵值對)的方式,透過配置中的dependencies來設定依賴關係。Azkaban使用job配置檔案建立任務之間的依賴關係,並提供一個易於使用的web使用者介面維護和跟蹤你的工作流。
三、Azkaban的特點
- 相容各種版本的Hadoop
- 易於使用的web使用者介面
- 簡單的工作流上傳
- 方便設定任務之間的關係
- 排程工作流
- 模組化和可插拔的外掛機制
- 認證/授權(許可權的工作)
- 能夠殺死並重新啟動任務流
- 有關失敗和成功的電子郵件提醒
四、Azkaban的架構
Azkaban Web Server
是整個 Azkaban 工作流系統的主要管理者負責使用者登入認證、負責 project 管理、定時執行工作流、跟蹤工作流執行進度等一系列任務。
AzkabanExecutorServer
負責具體的工作流的提交、執行,透過 mysql資料庫來協調任務的執行。
關係型資料庫(MySQL)
儲存大部分執行流狀態,AzkabanWebServer 和 AzkabanExecutorServer 都需要訪問資料庫。
五、Oozie和Azkaban特性對比
特性 | Oozie | Azkaban |
工作流描述語言 | XML | 鍵值對 |
是否要web容器 | ✔ | ✔ |
進度跟蹤 | 網頁 | 網頁 |
Hadoop job排程支援 | ✔ | ✔ |
執行模式 | daemon | daemon |
事件通知 | × | ✔ |
需要安裝 | ✔ | ✔ |
支援的Hadoop版本 | 0.20+ | ✔ |
重試支援 | workflownode evel | ✔ |
執行任意命令 | ✔ | ✔ |
— 要養成終身學習的習慣 —