什麼是Oozie——大資料任務排程框架
阿新 • • 發佈:2019-01-14
Oozie簡介
- Oozie是大資料四大協作框架之一——任務排程框架,另外三個分別為資料轉換工具Sqoop,檔案收集庫框架Flume,大資料WEB工具Hue。
- 它能夠提供對Hadoop MapReduce和Pig Jobs的任務排程與協調。
- Oozie需要部署到Java Servlet容器中執行。
- 功能相似的任務排程框架還有Azkaban和Zeus。
Oozie三大功能模組
從圖中不難看出,Oozie主要有三大功能模組構成:
- workflow(工作流):定義job任務執行。
- Coordinator:
- Bundle Job:繫結多個coordinator,一起提交或觸發所以coordinator
Oozie工作流
- Oozie工作流定義,同JBoss jBPM提供的jPDL一樣,也提供了類似的流程定義語言hPDL,通過XML檔案格式來實現流程的定義。對於工作流系統,一般都會有很多不同功能的節點,比如分支、併發、匯合等等。
- Oozie定義了控制流節點(Control Flow Nodes)和動作節點(Action Nodes),其中控制流節點定義了流程的開始和結束,以及控制流程的執行路徑(Execution Path),如decision、fork、join等;而動作節點包括Hadoop map-reduce、Hadoop檔案系統、Pig、SSH、HTTP、eMail和Oozie子流程。
- oozie本質就是一個作業協調工具(底層原理是通過將xml語言轉換成mapreduce程式來做,但只是在集中map端做處理,避免shuffle的過程。)
執行workflow之前首先要進行相關配置:
- job.properties 定義job相關屬性以及引數
- workflow.xml 定義控制流和動作節點
- lib 存放job任務執行的相關資料檔案[jar]
特別注意:
Oozie的工作流必須是一個有向無環圖,實際上Oozie就相當於Hadoop的一個客戶端,當用戶需要執行多個關聯的MR任務時,只需要將MR執行順序寫入workflow.xml,然後使用Oozie提交本次任務,Oozie會託管此任務流。
Oozie Cli命令
注意:使用Oozie之前必須先啟動hdfs,yarn和jobhistory,這裡jobhistory一開始很容易忘~
l 啟動任務
oozie job -oozie oozie_url -config job.properties_address -run
l 停止任務
oozie job -oozie oozie_url -kill jobId -oozie-oozi -W
l 提交任務
oozie job -oozie oozie_url -config job.properties_address -submit
l 開始任務
oozie job -oozie oozie_url -config job.properties_address -startJobId -oozie-oozi -W
l 檢視任務執行情況
oozie job -oozie oozie_url -config job.properties_address -info jobId -oozie-oozi -W
說明: 所有的命令都是以oozie job -oozie oozie_url 開頭的-config 制定job.properties資料夾的位置,-run 檔案啟動後會返回一個唯一的jobId,供之後使用。