Oozie任務調度框架詳解安裝及使用簡介(一)

摘要:我的最近一段時間一直在使用oozie,從剛開始的各類別扭到如今愈來愈以爲有意思的狀況下,想整理一下關於oozie的認知,整理出來一個oozie系列,原本市面上關於oozie的資料就比較少,但願寫完後能造成本身對oozie的獨特理解和增強總體性的把握.java

一.常見的調度框架

1.1.crontab定時器

linux自帶定時器,沒有web界面 ,不利於監控任務和調度任務,在工做量比較小的狀況下,建議使用linux的crontab定時命令mysql

##crongtab 命令 
*   *   *   *   *    後面接調度 job 的命令  
分  時  日   月  周  
##簡單實例(天天0點11分執行) 
11 0 * * * /home/hduser/lubians/intelligentDevice/intelligentDevice.sh 
複製代碼
1.2.Azkaban調度

開源項目,key/value配置對,操做簡單,帶web界面linux

Azkaban開源網站git

1.3.Oozie調度

apache項目,xml配置文件,操做稍微有難度,帶web查看界面,經常使用於hadoop相關任務的調度github

Oozie官網web

二.使用背景

公司下半年技術架構升級,將整個大數據集羣管理流程化,規模化,引入了更多的技術組件,這其中就有Oozie.算法

2.1. 以前使用的調度技術

在這以前公司使用的調度工具主要是TaskCtl和Kettle,TaskCtl分爲三層,Manage,Server和Agent.sql

能夠理解爲將調度分層了.shell

TASKCTL主要能夠完成串行、並行、依賴、互斥、執行計劃、定時、容錯、循環、條件分支、遠程、負載均衡、自定義條件等各類不一樣的核心調度功能。數據庫

根據不一樣的功能分類,TASKCTL將客戶端分爲Admin(平臺管理)、Designer(流程集成開發環境)、Monitor(流程監控管理)三套不一樣的軟件。

**Admi:**平臺節點管理、任務類型管理、工程管理、應用設置、全局變量管理以及流程導入導出等功能。

**Designer:**平臺流程代碼信息管理、代碼設計編輯、流程圖形編輯、規則語法適時檢測功能以及編譯發佈等功能。

**Monitor:**圖形方式監控、多角度統計監控、流程起停重置、任務鎖定、任務重作、信息對象查詢等。

2.2. 爲何使用Oozie

TaskCtl最大的問題是做爲調度系統須要一臺單獨的調度服務器,而且和Hadoop生態圈的產品搭配不是很好,因此考慮另行辦法在Hadoop集羣上使用調度工具.

使用Oozie的緣由是由於公司使用的是Ambari集羣管理工具,自帶Oozie插件安裝,同時Oozie支持Java API調度,會在工做中用到Java語言的緣故,選擇了Oozie.

三.Oozie介紹

3.1. Oozie是什麼

oozie是一個workflow(工做流)協調系統,是由Cloudera公司貢獻給Apache的,主要用來管理Hadoop做業(job).屬於web應用程序,由oozie client和oozie server兩個組件構成.

oozie server運行於java servlet容器(tomcat)中的web程序.

image_1akhmftbi11bjakq13n210q216db2a.png

3.2. 爲何須要Oozie

①對於較爲複雜的Hadoop做業系統來講,單純的依靠shell腳本方式,手工方式調度是的流程更加難以控制.

②複雜系統的算法須要不少不一樣的做業(如mr,Java程序,shell腳本,hivesql,sqoop,spark等)按照特定的順序,串行並行,不一樣時間,不一樣條件進行執行,就須要oozie這樣的調度系統作支撐,將複雜問題簡單化.

3.3. oozie能帶來什麼

①將hadoop生態系統中常見的mr任務啓動,hdfs操做,shell調度,hive操做等經過統一的方式進行連貫調度.

②將複雜的依賴關係,時間觸發,事件觸發使用xml語言進行表達,提升開發效率.

③一組任務使用一個DAG(有向無環圖)來表示,圖形化的表達,流程邏輯更加清晰.

④支持不少種任務調度,能完成大部分的hadoop任務處理.

⑤程序定義支持EL常量和函數,寫過shell腳本的小夥伴使用根本沒難度.

四.Oozie架構圖

在網上找了一個oozie架構圖,以下:

image_1akhmf44nvfh140gqc68pmhs1t.png

oozie包含四大服務組件:

workflow: 用於支持動做有向無環圖(DAG)的設計和執行,能夠按照特定的順序執行mr,hive和shell等節點.

coordinator: 用於定時調度特定的 workflow 進行執行,能夠基於事件,資源存在,傳遞參數等自動執行.

bundle: 批量設定一組coordinator執行.

SLA(Service Level Agreement, oozie服務器等級協定): 用於程序執行過程的日誌跟蹤.

4.1.Oozie簡易架構

image_1akhm3bv8muv162h1u41ve318189.png

如上圖,oozie調度自己就是一個mr程序,開始,執行,結束或者失敗,簡單易懂.

因此咱們能夠思考一下,在oozie調度mr程序時,其實同一時間是運行了兩個mr的,一個是調度自己,一個是任務.

4.2.一個有向無環圖

任務自己是一個有向無環圖(DAG)

image_1akhmaidd6a3d6m11ak15oe9p0m.png

圖中fork標籤後面的 MR job 和 Hive job 是並行執行的,都成功後經過 join 節點合併.

4.3.coordinator生命週期

image_1akhmbdfe32m1m6f363juu27713.png

coordinator是一個定時服務,經過定時來固定頻率的執行任務,這裏的功能相似crontab.

4.4.bundle Job

image_1akhmcmbn12hu12g412tv1cjo19g11g.png

bundle的做用就是設定多個coordinator定時服務按批次執行,這樣使得多個任務也造成一個DAG.

五.Oozie的安裝與配置

5.1.Oozie的安裝方式

單獨安裝: 須要安裝server端和client端

組件安裝: 使用Ambari進行oozie組件添加(可使用HA)

注意:若是使用CDH集羣管理工具,也是一鍵配置,由於我是直接組件式安裝,這裏就不細講了,有須要的小夥伴能夠聯繫我,看狀況寫一下ambari配置oozie.

5.2.Oozie配置

節點內存配置:

這裏的節點內存配置可能會涉及到oozie調度阻塞的問題,這個在以後有時間整理一下整個問題現象以及解決辦法,這裏就看一下

#(節點併發),決定了你能夠同時執行幾個action
oozie.service.callablequeueservice.callable.concurrency 
#(隊列大小) 
oozie.service.callablequeueservice.queue.size 
#(擴展)一些擴展相關 
oozie.service.ActionService.executor.ext.classes 
複製代碼

clipboard.png

5.3.oozie元數據更改

ambari配置oozie元數據

clipboard1.png

Ambari默認數據庫爲Derby.

咱們配置時,無特殊需求狀況下,通常默認選擇mysql

選擇數據庫類型,庫名,用戶名,url鏈接串,驅動,密碼

測試鏈接成功便可.

5.4.ext2.2添加

進入oozie文件夾

將ext-2.2.tar.gz解壓放到./libext/ext-2.2目錄下

5.5.第三方jar包添加
  • 運行時的共享目錄(在HDFS下)
  • libserver目錄
  • libtools目錄

六.Oozie管理

6.1.Oozie管理Web界面

http://ip:11000/oozie/

這裏有時候會出現oozieUI界面沒法訪問問題,以後更新一篇文章,簡單說明一下.

6.2.oozie使用
  • 任務列表查看
  • 任務狀態查看
  • 流程返回信息
  • 節點信息查看
  • 流程圖信息
  • 日誌查看
  • 系統信息查看和配置

clipboard2.png

6.3.狀態識別
狀態 含義說明
PREP 一個工做流Job第一次建立將處於PREP狀態,表示工做流Job已經定義,可是沒有運行。
RUNNING 當一個已經被建立的工做流Job開始執行的時候,就處於RUNNING狀態。它不會達到結束狀態,只能由於出錯而結束,或者被掛起。
SUSPENDED 一個RUNNING狀態的工做流Job會變成SUSPENDED狀態,並且它會一直處於該狀態,除非這個工做流Job被從新開始執行或者被殺死。
SUCCEEDED 當一個RUNNING狀態的工做流Job到達了end節點,它就變成了SUCCEEDED最終完成狀態。
KILLED 當一個工做流Job處於被建立後的狀態,或者處於RUNNING、SUSPENDED狀態時,被殺死,則工做流Job的狀態變爲KILLED狀態。
FAILED 當一個工做流Job不可預期的錯誤失敗而終止,就會變成FAILED狀態。

clipboard3.png

我是魯邊, 2020 peace and love

別驚訝,今年的主題就是愛與和平,希望我能一直用下去...

按例按例,個人我的公衆號:魯邊社,歡迎關注,分享更多的技術文章和技術資料

avatar
相關文章
相關標籤/搜索