Apache Oozie
Oozie 是一個用來管理 Hadoop 生態圈 job 的工作流調度系統。由 Cloudera 公司貢獻給 Apache。 Oozie 是運行於 Java servlet 容器上的一個 java web 應用。 Oozie 的目的是按照 DAG(有向無環圖) 調度一系列的 Map/Reduce 或者 Hive 等任務。 Oozie 工作流由 hPDL(Hadoop Process Definition Language)定義 (這是一種 XML 流程定義語言)。
Oozie 的架構
-
Oozie Client
-
提供命令行、 java api、 rest 等方式,對 Oozie 的工作流流程的提交、啓動、運行等操作;
-
-
Oozie WebApp
-
即 Oozie Server,本質是一個 java 應用。可以使用內置的 web 容器, 也可以使用外置的 web 容器;
-
-
Hadoop Cluster:
-
底層執行 Oozie 編排流程的各個 hadoop 生態圈組件;
-
Oozie 基本原理
Oozie 對工作流的編排, 是基於 workflow.xml 文件來完成的。用戶預先將工作流執行規則定製於 workflow.xml 文件中,並在 job.properties 配置相關的參數, 然後由 Oozie Server 向 MR 提交 job 來啓動工作流。
Oozie 工作流類型
-
Workflow
-
規則相對簡單,不涉及定時、批處理的工作流。順序執行流程節點。
-
workflow有個大缺點:沒有定時和條件觸發功能
-
-
Coordinator
-
Coordinator 將多個工作流 Job 組織起來,稱爲 Coordinator Job,並指定觸發時間和頻率,還可以配置數據集、併發數等,類似於在工作流外部增加了一個協調器來管理這些工作流的工作流 Job 的運行。
-
-
Bundle
-
針對 coordinator 的批處理工作流。
-
Bundle 將多個 Coordinator 管理起來,這樣我們只需要一個 Bundle 提交即可。
-