1.工作流調度工具:(azkaban 和oozie的對比)
工作流調度:一個完整的數據分析系統通常都是由大量任務單元組成:shell腳本程序,java程序,mapreduce程序、hive腳本等,各任務單元之間存在時間先后及前后依賴關系。為了很好地組織起這樣的復雜執行計划,需要一個工作流調度系統來調度執行。
調度工具性能對比:Apache Oozie,其配置工作流的過程是編寫大量的XML配置,而且代碼復雜度比較高,不易於二次開發。ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。如果可以不在意某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象。
Oozie和Azkaban的區別:
兩者在功能方面大致相同,只是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可以在繼續失敗的工作流運行
2.調度工具介紹:(azkaban 和oozie)
Azkaban介紹
Azkaban是由Linkedin開源的一個批量工作流任務調度器。用於在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban定義了一種KV文件格式來建立任務之間的依賴關系,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流。
它有如下功能特點:
1.Web用戶界面
2.方便上傳工作流
3.方便設置任務之間的關系
4.調度工作流
5.認證/授權(權限的工作)
6.能夠殺死並重新啟動工作流
7.模塊化和可插拔的插件機制
8.項目工作區
9.工作流和任務的日志記錄和審計
Oozie介紹
Oozie工作流是放置在控制依賴DAG(有向無環圖 Direct Acyclic Graph)中的一組動作(例如,Hadoop的Map/Reduce作業、Pig作業等),其中指定了動作執行的順序。我們會使用hPDL(一種XML流程定義語言)來描述這個圖。
hPDL是一種很簡潔的語言,只會使用少數流程控制和動作節點。控制節點會定義執行的流程,並包含工作流的起點和終點(start、end和fail節點)以及控制工作流執行路徑的機制(decision、fork和join節點)。動作節點是一些機制,通過它們工作流會觸發執行計算或者處理(如下圖)
3.Azkaban和Oozie的基本操作
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頁面查詢執行的結果。
4.在hue當中操作ooize的操作
在hue當中操作ooize的操作:
Hue是一個可快速開發和調試Hadoop生態系統各種應用的一個基於瀏覽器的圖形化用戶接口。
Hue可實現對oozie任務的開發,監控,和工作流協調調度 。使的oozie的操作變得更加的簡單快捷。
(1) 創建工作流
運行完成產生相對應的xml文件和相對的日志信息:
添加到定制執行任務。指定定時任務。