Apache Oozie 教程:使用 Oozie 排程 Hadoop 作業
在這個 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 - 捆綁包應該開始並提交協調器應用程式的時間。
相關文章
- Apache Oozie學習筆記(一)Apache筆記
- [2019大資料影片教程]小白3天速成排程框架oozie(原始碼+影片+筆記)大資料框架原始碼筆記
- ETL排程系統及常見工具對比:Azkaban、Oozie、數棲雲
- oozie.action.hadoop.LauncherException: IO error Connection timed out: no further informationHadoopExceptionErrorORM
- oozie web頁面訪問To enable Oozie web console install the Ext JS libraryWebJS
- Oozie--安裝部署
- 工作流引擎Oozie(二):coordinator
- oracle使用DBMS_SCHEDULER排程作業Oracle
- [原始碼解析]Oozie來龍去脈之提交任務原始碼
- [原始碼解析]Oozie來龍去脈之內部執行原始碼
- 使用持續整合工具Jenkins進行Kettle作業排程Jenkins
- oracle排程程式作業dbms_schedulerOracle
- 使用 K8s 進行作業排程實戰分享K8S
- 批處理作業排程-分支界限法
- 作業系統之排程演算法作業系統演算法
- async-await:協作排程 vs 搶佔排程AI
- 實現Quartz.NET的HTTP作業排程quartzHTTP
- 作業系統精髓設計原理 程式排程作業系統
- 大資料排程元件之Apache DolphinScheduler大資料元件Apache
- Hadoop YARN:排程效能最佳化實踐HadoopYarn
- TKE 使用者故事 | 作業幫 Kubernetes 原生排程器優化實踐優化
- Elastic-job實戰(分散式作業排程框架)AST分散式框架
- .NET Core Hangfire週期性作業排程問題
- 【作業系統】4.程序排程演算法作業系統演算法
- 使用FUTURE 中的訊息避免計劃排程的批處理作業 - CodeOpinion
- 作業系統4——處理機排程與死鎖作業系統
- 分散式後臺作業排程器JobRunr介紹 - JAXenter分散式
- 海豚排程任務型別Apache SeaTunnel部署指南型別Apache
- Apache DolphinScheduler 限制秒級別的定時排程Apache
- 使用Spring Boot排程WebSocket推送的教程和原始碼 - BaeldungSpring BootWeb原始碼
- 課程排課系統:智慧排課+線上約課+直播上課+作業打卡!
- Flink排程之排程器、排程策略、排程模式模式
- 在Docker容器中使用Hadoop執行Python MapReduce作業DockerHadoopPython
- 使用Hazelcast排程Spring tasksASTSpring
- 不可不知的資源管理排程器Hadoop YarnHadoopYarn
- ORA-27492 無法執行作業,排程程式不可用
- Volcano:在離線作業混部管理平臺,實現智慧資源管理和作業排程
- Apache Hadoop Day5ApacheHadoop