Azkaban(一)Azkaban的基礎介紹

1、爲何須要工做流調度器

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

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

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

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

  一、 經過 Hadoop 先將原始數據同步到 HDFS 上;web

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

  三、 須要對 Hive 中多個表的數據進行 JOIN 處理,獲得一個明細數據 Hive 大表;sql

  四、 將明細數據進行各類統計分析,獲得結果報表信息;shell

  五、 須要將統計分析獲得的結果數據同步到業務系統中,供業務調用使用。瀏覽器

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支持直接傳參,例如inputOozieELinputOozie支持參數和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、瀏覽器操做工做流

6、Azkaban 介紹

Azkaban是由Linkedin開源的一個批量工做流任務調度器。用於在一個工做流內以一個特定的順序運行一組工做和流程。Azkaban定義了一種KV文件格式來創建任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工做流。 
它有以下功能特色: 
  一、Web用戶界面 
  二、方便上傳工做流 
  三、方便設置任務之間的關係 
  四、調度工做流 
  五、認證/受權(權限的工做) 
  六、可以殺死並從新啓動工做流 
  七、模塊化和可插拔的插件機制 
  八、項目工做區 
  九、工做流和任務的日誌記錄和審計

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

  一、shell腳本

  二、java程序

  三、MR程序

  四、spark程序

  五、hive的sql

  六、python腳本

  七、sqoop任務

相關文章
相關標籤/搜索