工作流排程器azkaban概述
阿新 • • 發佈:2021-07-10
一、概述
1、 為什麼需要工作流排程系統
一個完整的資料分析系統通常都是由大量任務單元組成: shell指令碼程式,java程式,mapreduce程式、hive指令碼等; 各任務單元之間存在時間先後及前後依賴關係; 為了很好地組織起這樣的複雜執行計劃,需要一個工作流排程系統來排程執行;
例如:
我們可能有這樣一個需求,某個業務系統每天產生20G原始資料,我們每天都要對其進行處理,處理步驟如下所示: 1、通過Hadoop先將原始資料同步到HDFS上; 2、藉助MapReduce計算框架對原始資料進行轉換,生成的資料以分割槽表的形式儲存到多張Hive表中; 3、需要對Hive中多個表的資料進行JOIN處理,得到一個明細資料Hive大表; 4、將明細資料進行復雜的統計分析,得到結果報表資訊; 5、需要將統計分析得到的結果資料同步到業務系統中,供業務呼叫使用。
2、 工作流排程實現方式
簡單的任務排程:直接使用linux的crontab來定義; 複雜的任務排程:自己開發排程平臺,或使用現成的開源排程系統,比如ooize、azkaban等
3、 常見工作流排程系統
市面上目前有許多工作流排程器; 在hadoop領域,常見的工作流排程器有Oozie, Azkaban,Cascading,Hamake等
4、 各種排程工具特性對比
下面的表格對上述四種hadoop工作流排程器的關鍵特性進行了比較,儘管這些工作流排程器能夠解決的需求場景基本一致, 但在設計理念,目標使用者,應用場景等方面還是存在顯著的區別,在做技術選型的時候,可以提供參考:
特性 |
Hamake |
Oozie |
Azkaban |
Cascading |
工作流描述語言 |
XML |
XML (xPDL based) |
text file with key/value pairs |
Java API |
依賴機制 |
data-driven |
explicit |
explicit |
explicit |
是否要web容器 |
No |
Yes |
Yes |
No |
進度跟蹤 |
console/log messages |
web page |
web page |
Java API |
Hadoop job排程支援 |
no |
yes |
yes |
yes |
執行模式 |
command line utility |
daemon |
daemon |
API |
Pig支援 |
yes |
yes |
yes |
yes |
事件通知 |
no |
no |
no |
yes |
需要安裝 |
no |
yes |
yes |
no |
支援的hadoop版本 |
0.18+ |
0.20+ |
currently unknown |
0.18+ |
重試支援 |
no |
workflownode evel |
yes |
yes |
執行任意命令 |
yes |
yes |
yes |
yes |
Amazon EMR支援 |
yes |
no |
currently unknown |
yes |
5、Azkaban與Oozie對比
對市面上最流行的兩種排程器,給出以下詳細對比,以供技術選型參考。 總體來說,ooize相比azkaban是一個重量級的任務排程系統,功能全面,但配置使用也更復雜。 如果可以不在意某些功能的缺失,輕量級排程器azkaban是很不錯的候選物件。詳情如下: **功能** 兩者均可以排程mapreduce,pig,java,指令碼工作流任務 兩者均可以定時執行工作流任務 **工作流定義** Azkaban使用Properties檔案定義工作流 Oozie使用XML檔案定義工作流 **工作流傳參** Azkaban支援直接傳參,例如${input} Oozie支援引數和EL表示式,例如${fs:dirSize(myInputDir)} **定時執行** Azkaban的定時執行任務是基於時間的 Oozie的定時執行任務基於時間和輸入資料 **資源管理** Azkaban有較嚴格的許可權控制,如使用者對工作流進行讀/寫/執行等操作 Oozie暫無嚴格的許可權控制 **工作流執行** Azkaban有兩種執行模式,分別是solo server mode(executor server和web server部署在同一臺節點)和 multi server mode(executor server和web server可以部署在不同節點) Oozie作為工作流伺服器執行,支援多使用者和多工作流 **工作流管理** Azkaban支援瀏覽器以及ajax方式操作工作流 Oozie支援命令列、HTTP REST、Java API、瀏覽器操作工作流
二、azkaban介紹
Azkaban是由Linkedin開源的一個批量工作流任務排程器。用於在一個工作流內以一個特定的順序執行一組工作和流程。 Azkaban定義了一種KV檔案格式來建立任務之間的依賴關係,並提供一個易於使用的web使用者介面維護和跟蹤你的工作流。
特點:
Web使用者介面 方便上傳工作流 方便設定任務之間的關係 排程工作流 認證/授權(許可權的工作) 能夠殺死並重新啟動工作流 模組化和可插拔的外掛機制 專案工作區 工作流和任務的日誌記錄和審計
轉自:https://www.cnblogs.com/weiyiming007/p/12159991.html