1. 程式人生 > >11、Oozie 工作流排程技術

11、Oozie 工作流排程技術

1.Oozie 簡介

Oozie 是一個 Hadoop 作業的工作流排程管理系統。Oozie 工作流(Workflow)是放置在控制依賴 DAG(有向無環圖)中的一組動作(Action)集合,控制依賴可確保後續操作在前面的操作已成功完成後才會啟動。Oozie 的協調作業(Coordinator)是通過時間(頻率)和有效資料來觸發當前的 Oozie 工作流。

Oozie 支援多種 Hadoop 作業(包括:HDFS,MapReduce,Hive,StreamingMR,Loader,Spark,Distcp)以及系統類作業(例如 Java 與 Shell)。

Oozie 支援如下三種引擎:

WorkflowEngine 工作流引擎:以 Action 的方式執行工作流 Job,用來執行 Map/Reduce 與 Pig 等 Job。CoordinatorEngine 協調員引擎:基於時間和資料觸發器執行工作流(Workflow),它可以定時排程工作流(例如每隔一小時執行一次),也可以在資料可用的時候觸發工作流(例如等到輸入資料準備好的情況下再啟動工作流)。BundleEngine 管道引擎:提供了更高級別的 Oozie 抽象,使用者可以批量設定Coordinator 應用,並且能夠啟動/停止/暫停/恢復/重新執行一組 Coordinator應用,從而提高易用性與靈活性。

Oozie 是一個工作流排程引擎,對各種型別的 Hadoop 作業進行編排與排程。主要應用於以下幾種場景:

編排與管理邏輯複雜的多種型別的 Hadoop 作業,按照指定的順序協同執行基於時間(頻率)觸發工作流,例如每天/小時執行一次的重複任務或者指定時間執行的任務。基於資料有效性觸發工作流,當依賴的 HDFS 資料產生之後才觸發下一步動作,可用於資料管道處理。實時監控與管理叢集的工作流,快速定位問題;掌握叢集的資源使用情況,並根據需要調整工作流的排程,最大化利用叢集資源。

2.Oozie 架構

3.作業流基本原理

Oozie 對工作流的編排,是基於 workflow.xml 檔案來完成的。使用者預先將工作流執行規則定製於 workflow.xml 檔案中,並在 job.properties 配置上相關的引數,然後由 OozieServer 向 MR 提交一個 Job 來啟動工作流。

Hue 或其他元件通過 Oozie 提供的 Rest 介面來訪問 Oozie 服務。

Rest 請求進入 OozieServer 後,經 filter 和 servlet 的識別,DagEngine 將輸入轉化成 MapReduce 能識別的資料,提交給 MapReduce 執行。

 

4.Oozie 的特性

(1) 訪問方式多樣化:提供視覺化作業管理的同時 Oozie 也提供 Rest 介面與Shell 介面,方便與第三方對接。

(2) 檢視 Oozie 配置:提供視覺化介面檢視 Oozie 配置。

(3) 操作方式多樣化:對作業,工作流、定時排程,批量排程的啟動,暫停,停止,恢復,檢視等操作,提高易用性與靈活性。

(4) 安全增強:支援 Oozie 許可權管理,提供管理員與普通使用者兩種角色。支援單點登入登出,HTTPS 方式訪問以及審計日誌。(5) 可靠性增強:支援 OozieHA。

(6) 可維護性增強:支援告警,日誌壓縮,健康檢查。

5.工作流生命週期

上述各種狀態存在相應的轉移(工作流程因為某些事件,可能從一個狀態跳轉到另一個狀態),其中合法的狀態轉移有如下幾種,如下表所示: