Oozie工作流之理論篇

Oozie工作流之理論篇

簡介

Apache Oozie 是一個面向Hadoop平臺的工作流引擎框架。

它能夠提供對Hadoop Mapreduce、Pig Jobs、Spark、Sqoop、Hive的任務調度與協調。

Oozie工作流是放置在控制依賴DAG(有向無環圖Direct Acyclic Graph)中的一組動作,如Hadoop的Map/Reduce作業:
DG_Workflow

對於Oozie工作流(workflow)來說,一個工作流就是一些活動(actions)的容器,其中活動包括Hadoop Map/Reduce jobs或者Pig jobs等,然後通過有向無環圖來控制依賴,比如一個活動必須要在另一個活動結束之後才能運行。

定義

Oozie工作流定義,同JBoss jBPM提供的jPDL一樣,也提供了類似的流程定義語言hPDL,通過XML文件格式來實現流程的定義。對於工作流系統,一般都會有很多不同功能的節點,比如分支、併發、匯合等等。

控制流節點

Oozie定義了控制流節點(Control Flow Nodes)和動作節點(Action Nodes),其中控制流節點定義了流程的開始和結束(start,end和fail節點),以及工作流的執行路徑(execution path)機制,如:decision,fork,join節點

動作節點

Oozie的動作節點提供了工作流觸發實際執行計算任務的途徑,並且可以支持多種不同的動作,如:Hadoop map-reduce,Pig,Sqoop以及子工作流。還可以支持額外的擴展。

運行

Oozie工作流作業是在遠程系統中運行的,也就是說所有由動作節點觸發的計算和處理人的都不在Oozie之中。而是如:Hadoop平臺,將workflow.xml工作流定義文件上傳到HDFS文件系統目錄,然後運行Map/Reduce作業,遠程系統通過回調的方式通知Oozie活動的運行情況。

觸發

Oozie工作流可以根據時間與數據變化等外部條件進行觸發。
一些工作流是根據需要觸發的,但是大多數情況下,我們有必要基於一定的時間段和(或)數據可用性和(或)外部事件來運行它們。Oozie協調系統(Coordinator system)讓用戶可以基於這些參數來定義工作流執行計劃。Oozie協調程序讓我們可以以謂詞的方式對工作流執行觸發器進行建模,那可以指向數據、事件和(或)外部事件。工作流作業會在謂詞得到滿足的時候啓動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章