Apache Oozie Workflow Scheduler for Hadoop
Oozie is a workflow scheduler system to manage Apache Hadoop jobs.
Oozie 是一個工作流調度系統用來管理 Hadoop 任務
工作流調度:工作流程的編排,調度:安排事件的觸發執行(時間觸發,事件觸發)
Oozie is integrated with the rest of the Hadoop stack supporting several types of Hadoop jobs out of the box (such as Java map-reduce, Streaming map-reduce, Pig, Hive, Sqoop and Distcp) as well as system specific jobs (such as Java programs and shell scripts).
Oozip 集成了 Hadoop 其他的幾種協議(如 MapReduce Pig Hive Sqoop Distcp)和系統專有的任務(如 java程序 shell腳本)
底層是一個僅有 Map Task 的 MapReduce 程序
一、橫向比較
1.Linux Crontab Linux自帶的定時任務指令(寫絕對路徑)
特點:簡單,結合 shell 腳本能實現大部分的功能
缺點:太簡單了,沒有監控界面

crontab: usage error: unrecognized option
usage: crontab [-u user] file 指向文件
crontab [ -u user ] [ -i ] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab) 指定編輯器
-l (list user's crontab) 列表
-r (delete user's crontab) 刪除
-i (prompt before deleting user's crontab) 刪除前提示
minute hour day month week command
0-60 0-24 0-31 1-12 0-7( 0=7=周日 )
( * ):所有可能的值
( , ):並列
( - ):范圍
( / ):頻率
eg:
# 每周六晚上8點-12點每30分鍾加早上10點執行一次
0-60/30 20-7,8 * * 6 /bin/ls
2.AzKaban Linkedin 公司一個開源的工作流管理程序
特點:簡單得一塌糊塗,又漂亮的不像實力派
缺點:...

Azkaban
3.Oozie Apache 頂級項目
特點:Apache 出品,強大
缺點:存在 jar 包沖突,長得不是一般的丑(程序員就不該有審美)

Oozie
4.Zeus 宙斯 阿里開源的框架(找不到了,阿里遺棄了?)
特點:比較簡單,阿里出品,有中文文檔,中文界面
缺點:小眾,畢竟國內
關於Oozie(拷貝模板改之)
1.Oozie是 Cloudeara 公司共享給 Apache 的一個開源頂級項目,提供對 Hadoop MapReduce Hive Pig 的任務的調度;Oozie需要部署到一個 Java Servlet 容器中(如:Tomcat)運行,需要使用關系型數據庫存儲調度信息
2.Oozie 工作流的定義,同 Jboss jBPM 提供的 jPDL 一樣,提供了類似流程定義語言 hPDL ,通過 XML 格式實現流程定義。對於工作流系統,一般都會有很多不同的功能節點,如分支、並發、匯合等
3.Ooize 定義了**控制流節點 Control Flow Nodes 和動作節點 Action Nodes **。其中控制流節點定義了流程的開始和結束,以及控制流程的執行路徑( Execution Path ) ,如 decision / fork / join 等;而動作節點包括 Hadoop MapReduce / HDFS / Pig / SSH / HTTP / eMail / Oozie 子流程等。
關於各個版本的架構(重點)
Oozie v1 is a server based Workflow Engine 工作流引擎 specialized專門 in running workflow jobs with actions that execute Hadoop Map/Reduce and Pig jobs.

Oozie v2 is a server based Coordinator Engine 協調引擎 specialized in running workflows based on time and data triggers(時間觸發 數據觸發). It can continuously不斷地 run workflows based on time (e.g. run it every hour), and data availability (e.g. wait for my input data to exist before running my workflow).

Oozie v3 is a server based Bundle Engine 綁定引擎 that provides a higher-level oozie abstraction抽象 that will batch批量 a set of coordinator applications. The user will be able to start/stop/suspend暫停/resume繼續/rerun a set coordinator jobs in the bundle level(捆綁包層次) resulting a better and easy operational control.
v3提供了一個更高級別的抽象Oozie,將批處理一組協調應用程序。

整體服務框架

- 左側:Oozie 通過 Tomcat Http Server 對外提供了 JAVA API 、REST API 、CLI(終端) 、Web 接口(hue) ;產生的數據存儲在 Oozie object dstabase 上
- 中間:Oozie 的三層結構
- 右側:Oozie 的 Coordinator Engine 協調引擎 能夠監控基於 Time-based triggers 和 HDFS 上的 Data-based triggers;每一個 Oozie Job 都是一個只有 Map Task 的 MapReduce 程序
