1. 程式人生 > >什麼是Oozie——大資料任務排程框架

什麼是Oozie——大資料任務排程框架

Oozie簡介

  • Oozie是大資料四大協作框架之一——任務排程框架,另外三個分別為資料轉換工具Sqoop,檔案收集庫框架Flume,大資料WEB工具Hue。
  • 它能夠提供對Hadoop MapReduce和Pig Jobs的任務排程與協調。
  • Oozie需要部署到Java Servlet容器中執行。
  • 功能相似的任務排程框架還有Azkaban和Zeus。

Oozie三大功能模組

這裡寫圖片描述

從圖中不難看出,Oozie主要有三大功能模組構成:

  • workflow(工作流):定義job任務執行。
  • Coordinator:
    定時觸發workflow,週期性執行workflow
  • 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,供之後使用。