1. 程式人生 > >Azkaban學習(一)Azkaban的基礎介紹

Azkaban學習(一)Azkaban的基礎介紹

1、為什麼需要工作流排程器

(1)一個完整的資料分析系統通常都是由大量任務單元組成: shell 指令碼程式,java 程式,mapreduce 程式、hive 指令碼等

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

(3)為了很好地組織起這樣的複雜執行計劃,需要一個工作流排程系統來排程執行

例如,我們可能有這樣一個需求,某個業務系統每天產生 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 工作流排程器的關鍵特性進行了比較,儘管這些工作流排程 器能夠解決的需求場景基本一致,但在設計理念,目標使用者,應用場景等方面還是存在顯著 的區別,在做技術選型的時候,可以提供參考


5、Azkaban 與 Oozie 對比

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

詳情如下:

(1)功能 

兩者均可以排程mapreduce,pig,java,指令碼工作流任務 

兩者均可以定時執行工作流任務

(2)工作流定義 

Azkaban使用Properties檔案定義工作流 

Oozie使用XML檔案定義工作流

(3)工作流傳參 

Azkaban支援直接傳參,例如inputOozie支援引數和EL表示式,例如inputOozie支援引數和EL表示式,例如{fs:dirSize(myInputDir)}

(4)定時執行 

Azkaban的定時執行任務是基於時間的

Oozie的定時執行任務基於時間和輸入資料

(5)資源管理 

Azkaban有較嚴格的許可權控制,如使用者對工作流進行讀/寫/執行等操作 

Oozie暫無嚴格的許可權控制

(6)工作流執行 

Azkaban有兩種執行模式,分別是solo server mode(executor server和web server部署在同一臺節點)和multi server mode(executor server和web server可以部署在不同節點) 

Oozie作為工作流伺服器執行,支援多使用者和多工作流

(7)工作流管理 

Azkaban支援瀏覽器以及ajax方式操作工作流 

Oozie支援命令列、HTTP REST、Java API、瀏覽器操作工作流

6、Azkaban 介紹

Azkaban是由Linkedin開源的一個批量工作流任務排程器。用於在一個工作流內以一個特定的順序執行一組工作和流程。Azkaban定義了一種KV檔案格式來建立任務之間的依賴關係,並提供一個易於使用的web使用者介面維護和跟蹤你的工作流。 

它有如下功能特點: 

  1、Web使用者介面 

  2、方便上傳工作流 

  3、方便設定任務之間的關係 

  4、排程工作流 

  5、認證/授權(許可權的工作) 

  6、能夠殺死並重新啟動工作流 

  7、模組化和可插拔的外掛機制 

  8、專案工作區 

  9、工作流和任務的日誌記錄和審計

7、azkaban排程的任務有可能有那些型別

  1、shell指令碼

  2、java程式

  3、MR程式

  4、spark程式

  5、hive的sql

  6、python指令碼

  7、sqoop任務