Hadoop工作流引擎之Azkaban與Oozie對比(四)


Azkaban是什么?(一)

Azkaban的功能特點(二)

Azkaban的架構(三)

 

  不多說,直接上干貨!

http://www.cnblogs.com/zlslch/category/938837.html

 

 

  目前,市面上最流行的兩種Hadoop工作流引擎調度器Azkaban與Oozie。

具體,可以進一步看我的博客。

  Azkaban概念學習系列http://www.cnblogs.com/zlslch/category/938837.html

  和Oozie概念學習系列http://www.cnblogs.com/zlslch/category/916607.html

 

  下面的表格對上述2種hadoop工作流調度器的關鍵特性進行了比較,盡管這些工作流調度器能夠解決的需求場景基本一致,但在設計理念,目標用戶,應用場景等方面還是存在區別。

特性

Oozie

Azkaban

工作流描述語言

XML (xPDL based)

text file with key/value pairs

依賴機制

explicit

explicit

是否要web容器

Yes

Yes

進度跟蹤

web page

web page

Hadoop job調度支持

yes

yes

運行模式

daemon

daemon

Pig支持

yes

yes

事件通知

no

no

需要安裝

yes

yes

支持的hadoop版本

0.20+

currently unknown

重試支持

workflownode evel

yes

運行任意命令

yes

yes

Amazon EMR支持

no

currently unknown

 

 

 

Azkaban與Oozie對比

  對市面上最流行的兩種調度器,給出以下詳細對比。知名度比較高的應該是Apache Oozie,但是其配置工作流的過程是編寫大量的XML配置,而且代碼復雜度比較高,不易於二次開發。ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。如果可以不在意某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象。

從功能上來對比

  兩者均可以調度linux命令、mapreduce、spark、pig、java、hive、java程序、腳本工作流任務

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

從工作流定義上來對比

  1、Azkaban使用Properties文件定義工作流

  2、Oozie使用XML文件定義工作流

從工作流傳參上來對比

  1、Azkaban支持直接傳參,例如${input}

  2、Oozie支持參數和EL表達式,例如${fs:dirSize(myInputDir)}

從定時執行上來對比

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

  2、Oozie的定時執行任務基於時間和輸入數據

從資源管理上來對比

  1、Azkaban有較嚴格的權限控制,如用戶對工作流進行讀/寫/執行等操作

  2、Oozie暫無嚴格的權限控制

從工作流執行上來對比

  1、Azkaban有三種運行模式:

    1.1、solo server mode:最簡單的模式,數據庫內置的H2數據庫,管理服務器和執行服務器都在一個進程中運行,任務量不大項目可以采用此模式。

    1.2、 two server mode:數據庫為mysql,管理服務器和執行服務器在不同進程,這種模式下,管理服務器和執行服務器互不影響

    1.3 、multiple executor mode:該模式下,執行服務器和管理服務器在不同主機上,且執行服務器可以有多個

    我這次采用第二種模式,管理服務器、執行服務器分進程,但在同一台主機上。

  2、Oozie作為工作流服務器運行,支持多用戶和多工作流

從工作流管理上來對比

  1、Azkaban支持瀏覽器以及ajax方式操作工作流

  2、Oozie支持命令行、HTTP REST、Java API、瀏覽器操作工作流

 

 

另一版本區別:

  兩者在功能方面大致相同,只是Oozie底層在提交Hadoop Spark作業是通過org.apache.hadoop的封裝好的接口進行提交,而Azkaban可以直接操作shell語句。在安全性上可能Oozie會比較好。

  工作流定義:Oozie是通過xml定義的而Azkaban為properties來定義。

  部署過程:  Oozie的部署太虐心了。有點難。同時它是從Yarn上拉任務日志。

        Azkaban中如果有任務出現失敗,只要進程有效執行,那么任務就算執行成功,這是BUG,但是Oozie能有效的檢測任務的成功與失敗。

  操作工作流:Azkaban使用Web操作。Oozie支持Web,RestApi,Java API操作。

  權限控制:   Oozie基本無權限控制,Azkaban有較完善的權限控制,入用戶對工作流讀寫執行操作。

        Oozie的action主要運行在hadoop中而Azkaban的actions運行在Azkaban的服務器中。

  記錄workflow的狀態:Azkaban將正在執行的workflow狀態保存在內存中,Oozie將其保存在Mysql中。

  出現失敗的情況:Azkaban會丟失所有的工作流,但是Oozie可以在繼續失敗的工作流運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM