Oozie任務排程框架詳解及使用簡介(一)
摘要:個人最近一段時間一直在使用oozie,從剛開始的各種彆扭到現在越來越覺得有意思的情況下,想整理一下關於oozie的認知,整理出來一個oozie系列,本來市面上關於oozie的資料就比較少,希望寫完後能形成自己對oozie的獨特理解和加強整體性的把握.
一.常見的排程框架
1.1.crontab定時器
linux自帶定時器,沒有web介面 ,不利於監控任務和排程任務,在工作量比較小的情況下,建議使用linux的crontab定時命令
##crongtab 命令 * * * * * 後面接排程 job 的命令 分 時 日 月 周 ##簡單例項(每天0點11分執行) 11 0 * * * /home/hduser/lubians/intelligentDevice/intelligentDevice.sh
1.2.Azkaban排程
開源專案,key/value配置對,操作簡單,帶web介面
Azkaban開源網站
1.3.Oozie排程
apache專案,xml配置檔案,操作稍微有難度,帶web檢視介面,常用於hadoop相關任務的排程
Oozie官網
二.使用背景
公司下半年技術架構升級,將整個大資料叢集管理流程化,規模化,引入了更多的技術元件,這其中就有Oozie.
2.1. 之前使用的排程技術
在這之前公司使用的排程工具主要是TaskCtl和Kettle,TaskCtl分為三層,Manage,Server和Agent.
可以理解為將排程分層了.
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程式.
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架構圖,如下:
oozie包含四大服務元件:
workflow: 用於支援動作有向無環圖(DAG)的設計和執行,可以按照特定的順序執行mr,hive和shell等節點.
coordinator: 用於定時排程特定的 workflow 進行執行,可以基於事件,資源存在,傳遞引數等自動執行.
bundle: 批量設定一組coordinator執行.
SLA(Service Level Agreement, oozie伺服器等級協定): 用於程式執行過程的日誌跟蹤.
4.1.Oozie簡易架構
如上圖,oozie排程本身就是一個mr程式,開始,執行,結束或者失敗,簡單易懂.
所以我們可以思考一下,在oozie排程mr程式時,其實同一時間是運行了兩個mr的,一個是排程本身,一個是任務.
4.2.一個有向無環圖
任務本身是一個有向無環圖(DAG)
圖中fork標籤後面的 MR job 和 Hive job 是並行執行的,都成功後通過 join 節點合併.
4.3.coordinator生命週期
coordinator是一個定時服務,通過定時來固定頻率的執行任務,這裡的功能類似crontab.
4.4.bundle Job
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
5.3.oozie元資料更改
ambari配置oozie元資料
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使用
- 任務列表檢視
- 任務狀態檢視
- 流程返回資訊
- 節點資訊檢視
- 流程圖資訊
- 日誌檢視
- 系統資訊檢視和配置
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狀態。 |
我是魯邊, 2020 peace and love
別驚訝,今年的主題就是愛與和平,但願我能一直用下去...
按例按例,我的個人公眾號:魯邊社,歡迎關注
相關推薦
Oozie任務排程框架詳解及使用簡介(一)
摘要:個人最近一段時間一直在使用oozie,從剛開始的各種彆扭到現在越來越覺得有意思的情況下,想整理一下關於oozie的認知,整理出來一個oozie系列,本來市面上關於oozie的資料就比較少,希望寫完後能形成自己對oozie的獨特理解和加強整體性的把握. 一.常見的排程框架 1.1.crontab定時器
Java定時任務排程工具詳解(5)— Quartz 之 Trigger
五、淺談Trigger Trigger是什麼 Quartz中的觸發器用來告訴排程程式作業什麼時候觸發 即Trigger物件是用來觸發執行Job的 Quartz框架中的Trigger示意圖 觸發器通用屬性 JobKey:表示job例項的標識,觸發
Java定時任務排程工具詳解之Timer篇(初級)
一.Timer簡介 定時任務的基本概念,Timer的函式,綜合運用和缺陷 基於給定的時間點,給定的時間間隔或者給定的執行次數自動執行的任務。 Timer 和Quartz Timer: 出身:由jdk提供,呼叫方式簡單粗暴; 能力:Timer能完成
Quartz任務排程器詳解
個人理解: 總共三步走: 1,一個java類去實現Job,重新裡面execute方法,execute()方法裡面為要觸發的邏輯 2,一個觸發器,定義何時執行 3,Job例項化一個JobDetail 物件和觸發器一起組成一個任務,註冊到scheduler 裡面 schedul
LTS原理--輕量級分散式任務排程框架(Light Task Schedule)(一)
LTS(light-task-scheduler)主要用於解決分散式任務排程問題,支援實時任務,定時任務和Cron任務。有較好的伸縮性,擴充套件性,健壯穩定性而被多家公司使用,同時也希望開源愛好者一起貢獻。 專案地址 這兩個地址都會同步更新。感興趣,請加Q
Solon 框架詳解(十一)- Solon Cloud 的配置說明
> Solon 詳解系列文章: > [Solon 框架詳解(一)- 快速入門](https://www.cnblogs.com/noear/p/14115763.html) > [Solon 框架詳解(二)- Solon的核心](https://www.cnblogs.com/noear/p
RDIFramework.NET框架基於Quartz.Net實現任務排程詳解及效果展示
在上一篇Quartz.Net實現作業定時排程詳解,我們通過例項程式碼詳細講解與演示了基於Quartz.NET開發的詳細方法。本篇我們主要講述基於RDIFramework.NET框架整合Quartz.NET,以實現任務排程,並對任務持久化操作的全過程。本文主要通過以下幾個方面講解: 1、任務排程概述 2
大資料技術學習筆記之Hadoop框架基礎4-MapReduceshuffer過程詳解及zookeeper框架學習
一、MapReduce Shuffle -》MapReduce執行五個階段 input  
Redux-saga框架使用詳解及Demo教程
前面我們講解過redux框架和dva框架的基本使用,因為dva框架中effects模組設計到了redux-saga中的知識點,可能有的同學們會用dva框架,但是對redux-saga又不是很熟悉,今天我們就來簡單的講解下saga框架的主要API和如何配合redux框架使用 redux-saga
10. LCD驅動程式 ——框架分析 第017課 LCD原理詳解及裸機程式分析 15.linux-LCD層次分析(詳解)
引言: 由LCD的硬體原理及操作(可參看韋哥部落格:第017課 LCD原理詳解及裸機程式分析) 我們知道只要LCD控制器的相關暫存器正確配置好,就可以在LCD面板上顯示framebuffer中的內容。 若應用程式需要在LCD螢幕上顯示文字或影象時,只需要把相應的顯示內容以正確的格式寫到Framebuff
LVS四種工作模式及排程演算法詳解
LVS即Linux虛擬伺服器 LVS實現了基於IP的資料請求負載均衡排程方案,它實現了四層交換,終端網際網路使用者從外部訪問公司的外部負載均衡伺服器,終端使用者的Web請求會發送給LVS排程器,LVS根據自身的排程演算法將客戶端請求
Quartz 企業級任務排程框架(一)之簡介
什麼是Quartz任務排程庫?Quartz是一個功能豐富的開源作業排程庫,可以整合到幾乎任何Java應用程式中 - 從最小的獨立應用程式到最大的電子商務系統。Quartz可以用來建立執行數十,數百乃至數萬個作業的簡單或複雜的計劃;作業的任務被定義為標準的Java元件,它可以執
任務排程框架Hangfire 簡介
任務排程是我們專案中常見的功能,雖然任務排程的功能實現本身並不難,但一個好用的輪子還是可以給我們的開發的效率提升不少的。 在.net環境中,較為有名的任務排程框架是HangFire與Quartz.NET,本文這裡主要介紹Hangfire,相比Quartz.NET來說,它提供了更加友好的頁面,使用起來更加方便
什麼是Oozie——大資料任務排程框架
Oozie簡介 Oozie是大資料四大協作框架之一——任務排程框架,另外三個分別為資料轉換工具Sqoop,檔案收集庫框架Flume,大資料WEB工具Hue。 它能夠提供對Hadoop MapReduce和Pig Jobs的任務排程與協調。 Oozie需要
依賴注入框架 ----Dagger2 使用詳解及原始碼分析
在開始說Dagger之前先說下什麼叫依賴注入。 依賴: 在建立物件A的過程中,需要用到物件B的例項,這種情況較呼叫者A對被呼叫者B有一個依賴。 例如下面的例子: 組裝一臺電腦時,要用到Cpu,那麼電腦這個物件,依賴Cpu物件。 public cl
Android 網路框架之Retrofit2使用詳解及從原始碼中解析原理
就目前來說Retrofit2使用的已相當的廣泛,那麼我們先來了解下兩個問題: 1 . 什麼是Retrofit? Retrofit是針對於Android/Java的、基於okHttp的、一種輕量級且安全的、並使用註解方式的網路請求框架。 2 . 我們為什麼要
任務排程框架Quartz原理簡介
第一章 Quartz 1.1 Quartz概念 Quartz是OpenSymphony開源組織的一個Java開源專案, 在2009被Terracotta收購。Quartz官網 1.2 Quartz任務排程主要元素 Quartz任務排程
spring框架的定時任務cronExpression表示式詳解
欄位 允許值 允許的特殊字元秒0-59, - * /分0-59, - * /小時0-23, - * /日期1-31, - * / L W C月份1-12 或者 JAN-DEC, - * /星期1-7 或者 SUN-SAT, - * / L C #年(可選)留空, 1970-2099, - *
OpenVPN下載、安裝、配置及使用詳解 OpenVPN簡介 OpenVPN是一個用於建立虛擬專用網路(Virtual Private Network)加密通道的免費開源軟體。使用OpenVPN可以方
local 192.168.0.2 #指定監聽的本機IP(因為有些計算機具備多個IP地址),該命令是可選的,預設監聽所有IP地址。 port 1194 #指定監聽的本機埠號 proto udp #指定採用的傳輸協議,可以選擇tcp或udp dev tun #指定建立的通訊隧道型別,可選tun或tap ca c
SpringBoot整合任務排程框架Quartz及持久化配置
[toc] > 本文側重SpringBoot與Quartz的整合,Quartz的基本入門概念不清楚的小夥伴可以看看這篇文章:[任務排程框架Quartz快速入門!](https://www.cnblogs.com/summerday152/p/14192845.html) ## 本篇要點 - 介紹Spri