Azkaban(一)—— Azkaban介紹

1.1 爲什麼需要工作流調度系統

  1. 一個完整的數據分析系統通常都是由大量任務單元組成:Shell腳本程序,Java程序,MapReduce程序、Hive腳本等。

  2. 各任務單元之間存在時間先後及前後依賴關係。

  3. 爲了很好地組織起這樣的複雜執行計劃,需要一個工作流調度系統來調度執行。

1.2 什麼是Azkaban

Azkaban是由Linkedin公司推出的一個批量工作流任務調度器,主要用於在一個工作流內以一個特定的順序運行一組工作和流程,它的配置是通過簡單的key:value對的方式,通過配置中的dependencies 來設置依賴關係。Azkaban使用job配置文件建立任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流。

1.3 Azkaban適用場景

根據以上業務場景: (2)任務依賴(1)任務的結果,(3)任務依賴(2)任務的結果,(4)任務依賴(3)任務的結果,(5)任務依賴(4)任務的結果。一般的做法是,先執行完(1)再執行(2),再一次執行(3)(4)(5)。這樣的話,整個的執行過程都需要人工參加,並且得盯着各任務的進度。但是我們的很多任務都是在深更半夜執行的,通過寫腳本設置crontab執行。其實,整個過程類似於一個有向無環圖(DAG)。每個子任務相當於大任務中的一個節點,也就是,我們需要的就是一個工作流的調度器,而Azkaban就是能解決上述問題的一個調度器。

1.4 Azkaban特點

  1. 兼容任何版本的Hadoop

  2. 易於使用的Web用戶界面

  3. 簡單的工作流的上傳

  4. 方便設置任務之間的關係

  5. 調度工作流

  6. 模塊化和可插拔的插件機制

  7. 認證/授權(權限的工作)

  8. 能夠殺死並重新啓動工作流

  9. 有關失敗和成功的電子郵件提醒

1.5 常見的工作流調度系統

1)簡單的任務調度:直接使用crontab實現;詳見 Linux定時任務crontab

2)複雜的任務調度:開發調度平臺或使用現成的開源調度系統,比如Ooize、Azkaban等

1.6 Azkaban和Ooize特性對比

特性 Oozie Azkaban
工作流描述語言 XML text file with key/value pairs
是否要web容器 Yes Yes
進度跟蹤 web page web page
Hadoop job調度支持 yes yes
運行模式 daemon daemon
事件通知 no Yes
需要安裝 yes yes
支持的hadoop版本 0.20+ currently unknown
重試支持 workflownode evel yes
運行任意命令 yes yes

1.7 Azkaban的架構

Azkaban的架構

  • AzkabanWebServer

    AzkabanWebServer是整個Azkaban工作流系統的主要管理者,它負責用戶登錄認證、project管理、定時執行工作流、跟蹤工作流執行進度等一系列任務。

  • AzkabanExecutorServer

    負責具體的工作流的提交、執行,它們通過MySQL數據庫來協調任務的執行。

  • 關係型數據庫(MySQL)

    存儲大部分執行流狀態,AzkabanWebServer和AzkabanExecutorServer都需要訪問數據庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章