Azkaban概述

一 概述

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

1.一個完整的數據分析系統通常都是由大量任務單元組成:
shell腳本程序,java程序,mapreduce程序、hive腳本等

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

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

    例如,我們可能有這樣一個需求,某個業務系統每天產生20G原始數據,我們每天都要對其進行處理,處理步驟如下所示:

(1)通過Hadoop先將原始數據上傳到HDFS上(HDFS的操作);
(2) 使用MapReduce對原始數據進行清洗(MapReduce的操作);
(3) 將清洗後的數據導入到hive表中(hive的導入操作);
(4) 對Hive中多個表的數據進行JOIN處理,得到一張hive的明細表(創建中間表);
(5) 通過對明細表的統計和分析,得到結果報表信息(hive的查詢操作);

1.2 Azkaban的適用場景

    根據以上業務場景: (2)任務依賴(1)任務的結果,(3)任務依賴(2)任務的結果,(4)任務依賴(3)任務的結果,(5)任務依賴(4)任務的結果。一般的做法是,先執行完(1)再執行(2),再一次執行(3)(4)(5)。

    這樣的話,整個的執行過程都需要人工參加,並且得盯着各任務的進度。但是我們的很多任務都是在深更半夜執行的,通過寫腳本設置crontab執行。其實,整個過程類似於一個有向無環圖(DAG)。每個子任務相當於大任務中的一個節點,也就是,我們需要的就是一個工作流的調度器,而Azkaban就是能解決上述問題的一個調度器。

1.3 什麼是azkaban

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

1.4 Azkaban特點

(1) 兼容任何版本的hadoop
(2) 易於使用的Web用戶界面
(3) 簡單的工作流的上傳
(4) 方便設置任務之間的關係
(5) 調度工作流
(6) 模塊化和可插拔的插件機制
(7) 認證/授權(權限的工作)
(8) 能夠殺死並重新啓動工作流
(9) 有關失敗和成功的電子郵件提醒

1.5 常見工作流調度系統

1.簡單的任務調度:直接使用crontab實現;

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

1.6 ooize和azkaban特性對比

    下面的表格對上述四種hadoop工作流調度器的關鍵特性進行了比較,儘管這些工作流調度器能夠解決的需求場景基本一致,但在設計理念,目標用戶,應用場景等方面還是存在顯著的區別,在做技術選型的時候,可以提供參考

特性 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由三個關鍵組件構成:
Azkaban由三個關鍵組件構成:

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

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

3.關係型數據庫(MySQL):存儲大部分執行流狀態,AzkabanWebServer和AzkabanExecutorServer都需要訪問數據庫。

1.8 Azkaban下載地址

下載地址:http://azkaban.github.io/downloads.html

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