調度工具性能對比:Apache Oozie,其配置工做流的過程是編寫大量的XML配置,並且代碼複雜度比較高,不易於二次開發。ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。若是能夠不在乎某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象。java
二者在功能方面大體相同,只是Oozie底層在提交Hadoop Spark做業是經過org.apache.hadoop的封裝好的接口進行提交,而Azkaban能夠直接操做shell語句。在安全性上可能Oozie會比較好。web
工做流定義:Oozie是經過xml定義的而Azkaban爲properties來定義。sql
部署過程:Oozie的部署相對困難些,同時它是從Yarn上拉任務日誌。shell
Azkaban中若是有任務出現失敗,只要進程有效執行,那麼任務就算執行成功,這是BUG,可是Oozie能有效的檢測任務的成功與失敗。apache
操做工做流:Azkaban使用Web操做。Oozie支持Web,RestApi,Java API操做。瀏覽器
權限控制:Oozie基本無權限控制,Azkaban有較完善的權限控制,供用戶對工做流讀寫執行操做。安全
Oozie的action主要運行在hadoop中而Azkaban的actions運行在Azkaban的服務器中。服務器
記錄workflow的狀態:Azkaban將正在執行的workflow狀態保存在內存中,Oozie將其保存在Mysql中。模塊化
出現失敗的狀況:Azkaban會丟失全部的工做流,可是Oozie能夠在繼續失敗的工做流運行工具
Azkaban是由Linkedin開源的一個批量工做流任務調度器。用於在一個工做流內以一個特定的順序運行一組工做和流程。Azkaban定義了一種KV文件格式來創建任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工做流。
它有以下功能特色:
1.Web用戶界面
2.方便上傳工做流
3.方便設置任務之間的關係
4.調度工做流
5.認證/受權(權限的工做)
6.可以殺死並從新啓動工做流
7.模塊化和可插拔的插件機制
8.項目工做區
9.工做流和任務的日誌記錄和審計
Oozie工做流是放置在控制依賴DAG(有向無環圖 Direct Acyclic Graph)中的一組動做(例如,Hadoop的Map/Reduce做業、Pig做業等),其中指定了動做執行的順序。咱們會使用hPDL(一種XML流程定義語言)來描述這個圖。
hPDL是一種很簡潔的語言,只會使用少數流程控制和動做節點。控制節點會定義執行的流程,幷包含工做流的起點和終點(start、end和fail節點)以及控制工做流執行路徑的機制(decision、fork和join節點)。動做節點是一些機制,經過它們工做流會觸發執行計算或者處理(以下圖)
Azkaban:
Azkaban的工做流的建立特別方便,直接經過web界面建立工程,而後提交任務。(建立job的的文件必須是以.job的文件,而且上傳的文件是以zip壓縮包的形式進行上傳)。
建立工做流的基本流程:
(1)建立工程,提交任務。
(2)任務提交完成以後bar.job和foo.job之間的依賴關係顯示在web 界面當中。
(3)而後執行相應提交的任務。以下圖二者的對應關係,能夠直接執行單個的任務,也能夠指定定時任務。可設置定時任務的執行時間。同時能夠在定時執行完成以後作相應的提醒服務。
Oozie的基本操做:
操做準備;
job.properties |
任務的一些配置文件,例如運行的HDFS以及JobTracker (ResourceManager)等 |
Lib |
存放執行的JAR包 |
Workflow.xml |
工做流的依賴 |
****.jar |
執行任務的jar包(自定義的文件) |
在ooize的client端執行:
Oozie job --oozie http://ip:11000/oozie -config ${job.properties} -run
執行以後,能夠在web頁面查詢執行的結果。
在hue當中操做ooize的操做:
Hue是一個可快速開發和調試Hadoop生態系統各類應用的一個基於瀏覽器的圖形化用戶接口。
Hue可實現對oozie任務的開發,監控,和工做流協調調度 。使的oozie的操做變得更加的簡單快捷。
(1) 建立工做流
運行完成產生相對應的xml文件和相對的日誌信息:
添加到定製執行任務。指定定時任務。