Oozie的學習筆記

jopen 10年前發布 | 29K 次閱讀 Oozie 分布式/云計算/大數據
介紹
       在Hadoop中執行的任務有時候需要把多個Map/Reduce作業連接到一起,這樣才能夠達到目的。[1]在Hadoop生態圈中,有一種相對比較 新的組件叫做Oozie[2],它讓我們可以把多個Map/Reduce作業組合到一個邏輯工作單元中,從而完成更大型的任務。本文中,我們會向你介紹 Oozie以及使用它的一些方式。
  什么是Oozie?
  Oozie是一種Java Web應用程序,它運行在Java servlet容器——即Tomcat——中,并使用數據庫來存儲以下內容:
  ●工作流定義
  ●當前運行的工作流實例,包括實例的狀態和變量
   Oozie工作流是放置在控制依賴DAG(有向無環圖 Direct Acyclic Graph)中的一組動作(例如,Hadoop的Map/Reduce作業、Pig作業等),其中指定了動作執行的順序。我們會使用hPDL(一種XML 流程定義語言)來描述這個圖。
   hPDL是一種很簡潔的語言,只會使用少數流程控制和動作節點。控制節點會定義執行的流程,并包含工作流的起點和終點(start、end和fail節 點)以及控制工作流執行路徑的機制(decision、fork和join節點)。動作節點是一些機制,通過它們工作流會觸發執行計算或者處理任務。 Oozie為以下類型的動作提供支持: Hadoop map-reduce、Hadoop文件系統、Pig、Java和Oozie的子工作流(SSH動作已經從Oozie schema 0.2之后的版本中移除了)。
   所有由動作節點觸發的計算和處理任務都不在Oozie之中——它們是由Hadoop的Map/Reduce框架執行的。這種方法讓Oozie可以支持現 存的Hadoop用于負載平衡、災難恢復的機制。這些任務主要是異步執行的(只有文件系統動作例外,它是同步處理的)。這意味著對于大多數工作流動作觸發 的計算或處理任務的類型來說,在工作流操作轉換到工作流的下一個節點之前都需要等待,直到計算或處理任務結束了之后才能夠繼續。Oozie可以通過兩種不 同的方式來檢測計算或處理任務是否完成,也就是回調和輪詢。當Oozie啟動了計算或處理任務的時候,它會為任務提供唯一的回調URL,然后任務會在完成 的時候發送通知給特定的URL。在任務無法觸發回調URL的情況下(可能是因為任何原因,比方說網絡閃斷),或者當任務的類型無法在完成時觸發回調URL 的時候,Oozie有一種機制,可以對計算或處理任務進行輪詢,從而保證能夠完成任務。
  Oozie工作流可以參數化(在工作流定義中使用像${inputDir}之類的變量)。在提交工作流操作的時候,我們必須提供參數值。如果經過合適地參數化(比方說,使用不同的輸出目錄),那么多個同樣的工作流操作可以并發。
   一些工作流是根據需要觸發的,但是大多數情況下,我們有必要基于一定的時間段和(或)數據可用性和(或)外部事件來運行它們。Oozie協調系統 (Coordinator system)讓用戶可以基于這些參數來定義工作流執行計劃。Oozie協調程序讓我們可以以謂詞的方式對工作流執行觸發器進行建模,那可以指向數據、事 件和(或)外部事件。工作流作業會在謂詞得到滿足的時候啟動。
  經常我們還需要連接定時運行、但時間間隔不同的工作流操作。多個隨后運行的工作流的輸出會成為下一個工作流的輸入。把這些工作流連接在一起,會讓系統把它作為數據應用的管道來引用。Oozie協調程序支持創建這樣的數據應用管道。

安裝
         
1、Building Oozie

System Requirements:

  • Unix box (tested on Mac OS X and Linux)
  • Java JDK 1.6+
  • Maven 3.0.1+
  • Hadoop 0.20.2+
  • Pig 0.7+

JDK commands (java, javac) must be in the command path.

The Maven command (mvn) must be in the command path.


oozie的編譯非常困難,oozie的版本,hadoop的版本都非常敏感

經驗總結

目前看來,編譯Hadoop2.2.0版本的oozie,使用oozie4.4.0編譯分布式程序集,命令如下  

mvn clean package assembly:single -DskipTests=true -Dhadoop.version=2.2.0 

具體參考  Building Oozie


異常情況:

oozie4.0.1對hadoop2.2.0的編譯修改


2、Server Installation

  1. copy所有的hadooplibs的jar包到libexts目錄中。特別注意的是,hadoop-auth-2.2.0.jar
  2. 建 立軟鏈接到bin目錄下。   ln -s ../distro/target/oozie-4.0.0-distro/oozie-4.0.0/bin/oozied.sh bin/oozied.sh ,和oozie-setup.sh  , 這兩個即可,oozied.sh 包含了ooziedb.sh 
  3. 創建oozie的數據庫。bin/oozied.sh db create -sqlfile oozie.sql -run DB Connection.
  4. 生成war包,自動放置到tomcat的webapp 下面。bin/oozie-setup.sh prepare-war -d libext
  5. 運行,只需要運行$ bin/oozied.sh start

3、Client Installation

4、Oozie Share Lib Installation


具體的詳細安裝,可以參考 安裝詳細步驟參見官網資料


使用
    運行示例  running example
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!