azkaban基礎概覽

https://azkaban.readthedocs.io/en/latest

一、爲什麼需要工作流調度器

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

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

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

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

1、 通過 Hadoop 先將原始數據同步到 HDFS 上;

2、 藉助 MapReduce 計算框架對原始數據進行清洗轉換,生成的數據以分區表的形式存儲到多張 Hive 表中;

3、 需要對 Hive 中多個表的數據進行 JOIN 處理,得到一個明細數據 Hive 大表;

4、 將明細數據進行各種統計分析,得到結果報表信息;

5、 需要將統計分析得到的結果數據同步到業務系統中,供業務調用使用。

二、工作流調度實現方式

簡單的任務調度:直接使用 linux 的 crontab 來定義;

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

三、常見工作流調度系統

市面上目前有許多工作流調度器 在 hadoop 領域,常見的工作流調度器有 Oozie, Azkaban,Cascading,Hamake 等

四、各種調度工具對比

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

五、Azkaban 與 Oozie 對比

對市面上最流行的兩種調度器,給出以下詳細對比,以供技術選型參考。總體來說,ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。如果可以不在意某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象。
詳情如下:

  • 功能

兩者均可以調度mapreduce,pig,java,腳本工作流任務
兩者均可以定時執行工作流任務

  • 工作流定義

Azkaban使用Properties文件定義工作流
Oozie使用XML文件定義工作流

  • 工作流傳參

Azkaban支持直接傳參,例如inputOozie支持參數和EL表達式,例如inputOozie支持參數和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用戶界面維護和跟蹤你的工作流。
它有如下功能特點:
1、Web用戶界面
2、方便上傳工作流
3、方便設置任務之間的關係
4、調度工作流
5、認證/授權(權限的工作)
6、能夠殺死並重新啓動工作流
7、模塊化和可插拔的插件機制
8、項目工作區
9、工作流和任務的日誌記錄和審計

七、azkaban調度的任務有可能有那些類型

1、shell腳本

2、java程序

3、MR程序

4、spark程序

5、hive的sql

6、python腳本

7、sqoop任務

引用:https://www.cnblogs.com/qingyunzong/p/8810169.html

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