Apache Oozie 教程:使用 Oozie 排程 Hadoop 作業

banq發表於2021-12-30

在這個 Apache Oozie 教程部落格中,我們將介紹:
  • Apache Oozie 簡介
  • Oozie 工作流
  • Oozie 協調員
  • Oozie 捆綁包
  • 字數統計工作流作業 
  • 基於時間的字數統計協調員工作

我們將透過介紹 Apache Oozie 開始本 Oozie 教程。然後繼續前進,我們將瞭解可以使用 Apache Oozie 建立和執行的作業型別。

Apache Oozie 是一個排程系統,用於在分散式環境中管理和執行 Hadoop 作業。我們可以透過組合不同型別的任務來建立所需的管道。它可以是您的 Hive、Pig、Sqoop 或 MapReduce 任務。使用 Apache Oozie,您還可以安排您的作業。在一個任務序列中,兩個或多個作業也可以被程式設計為彼此並行執行。它是一個可擴充套件、可靠和可擴充套件的系統。  
Oozie 是一個開源 Java Web 應用程式,負責觸發工作流操作。反過來,它使用 Hadoop 執行引擎來執行任務。
Apache Oozie 透過回撥和輪詢來檢測任務的完成情況。當 Oozie 啟動一個任務時,它會為該任務提供一個唯一的回撥 HTTP URL,並在任務完成時通知該 URL。如果任務未能呼叫回撥 URL,Oozie 可以輪詢任務以完成。
Apache Oozie 中有三種型別的作業:
  • Oozie 工作流作業- 這些是有向無環圖 (DAG),它指定要執行的一系列操作。
  • Oozie Coordinator Jobs - 這些包括由時間和資料可用性觸發的工作流作業。
  • Oozie Bundles - 這些可以稱為多個協調器和工作流作業的包。

 

Apache Oozie 教程:Oozie 工作流
工作流是排列在有向無環圖 (DAG) 中的一系列動作。動作相互依賴,因為下一個動作只能在當前動作輸出後執行。工作流操作可以是 Pig 操作、Hive 操作、MapReduce 操作、Shell 操作、Java 操作等。可以有決策樹來決定作業應該如何執行以及在何種條件下執行。
我們可以根據作業建立不同型別的操作,每種型別的操作都可以有自己的標籤型別。 在執行工作流之前,應將工作流和指令碼或 jar 放在 HDFS 路徑中。
命令:oozie job –oozie http://localhost:11000/oozie -config job.properties -run
要檢查作業的狀態,您可以轉到 Oozie Web 控制檯,即 http://host_name:11000。透過單擊作業,您將看到作業的狀態。
在我們想要並行執行多個作業的場景中,我們可以使用Fork。每當我們使用 fork 時,我們必須使用 Join 作為結束節點進行 fork。對於每個分叉,都應該有一個連線。加入假設所有並行執行的節點都是單個分叉的子節點。例如,我們可以同時並行建立兩個表。
如果我們想根據決策的輸出執行一個動作,我們可以新增決策標籤。例如,如果我們已經有了 hive 表,我們就不需要再次建立它。在這種情況下,如果表已經存在,我們可以新增一個決策標籤來不執行建立表步驟。決策節點有一個類似於 switch case 的 switch 標籤。
job-tracker、name-node、script、param的值可以直接傳入。但是,這變得難以管理。這是配置檔案(即 .property 檔案)派上用場的地方。
 

Apache Oozie 教程:Oozie 協調器
您可以安排複雜的工作流以及使用 Coordinator 定期安排的工作流。Oozie Coordinators 根據時間、資料或事件謂詞觸發工作流作業。當滿足給定條件時,作業協調器內的工作流開始。
協調員工作所需的定義是:

  • start - 作業的開始日期時間。
  • end - 作業的結束日期時間。
  • timezone - 協調器應用程式的時區。
  • 頻率- 執行作業的頻率(以分鐘為單位)。

更多的屬性可用於控制資訊:
  • timeout - 動作在被丟棄之前等待滿足附加條件的最長時間(以分鐘為單位)。0 表示如果在動作實現時所有輸入事件都沒有得到滿足,動作應該立即超時。-1 表示沒有超時,動作將永遠等待。預設值為 -1。
  • concurrency - 可以並行執行的作業的最大運算元。預設值為 1。
  • 執行- 如果協調器作業的多個例項滿足其執行標準,則指定執行順序。有可能:


    • 先進先出(預設)
    • 後進先出
    • LAST_ONLY

命令: oozie job –oozie http://localhost:11000/oozie -config <path to coordinator.properties file> -run
如果在提交協調器作業時未隨作業配置提供定義中使用的配置屬性,則作業提交將失敗。
  

Apache Oozie 教程:Oozie 捆綁包
Oozie Bundle 系統 允許您定義和執行一組協調器應用程式,通常稱為資料管道。在 Oozie 包中,協調器應用程式之間沒有明確的依賴關係。但是,您可以使用協調器應用程式的資料依賴性來建立隱式資料應用程式管道。 您可以啟動/停止/掛起/恢復/重新執行包。它提供了更好和更容易的操作控制。

Kick-off-time  - 捆綁包應該開始並提交協調器應用程式的時間。



 

相關文章