工作流引擎Oozie(二):coordinator
coordinator是workflow的定時提交器,基於時間條件與資料生成觸發(based on time and data triggers)。簡單點說,coordinator按所定義的時間週期進行輪詢,若資料生成條件滿足,則觸發workflow任務;否則,則等待資料生成或跳過(排程策略由設定的超時時間決定)。 |
coordinator-app
coordinator-app name="coord-demo" frequency="${coord:days(1)}" start="${start_time}" end="${end_time}" timezone="Asia/Shanghai" xmlns="uri:oozie:coordinator:0.1"
檔案頭定義了coordinator任務的名稱,執行頻率(frequency),開始與起止時間(start、end)。${coord:days(1)}為coordinator內建的EL function (Expression Language),表示為執行週期為一天。frequency的時間單位為分鐘,則${coord:days(1)}=1440,${coord:hours(3)}=180. 一般地,在job.properties定義如:start_time=2016-06-07T00:00Z,應以UTC時區為準。
Control information
<controls> <!--超時時間,若為0,一旦資料生成超時則coordinator action被丟棄; 若為-1,則一直等待資料生成; 若 > 0,即為超時時間(單位:分鐘)--> <timeout>-1</timeout> <!--併發action數--> <concurrency>1</concurrency> <!--同時被觸發的多個coordinator job的執行次序--> <execution>${execution_order}</execution> </controls>
datasets
<datasets> <!--資料生成目錄--> <dataset name="data" frequency="${coord:hours(1)}" initial-instance="${start_time}" timezone="${timezone}"> <uri-template>${nameNode}/path/to/${YEAR}-${MONTH}-${DAY}/${HOUR}/</uri-template> <done-flag></done-flag> </dataset> </datasets>
相關引數:
- initial-instance,對應初始時間的資料目錄,作為時間週期偏移的基準目錄
- uri-template,檔案目錄HDFS目錄,${YEAR}、${MONTH}等為EL Time Constants,具體數值由 傳入,也可透過job.properties傳入自定義的引數。
- done-flag,資料目錄生成的檔案標識,若未指定,則預設為 _SUCCESS 檔案;若指定為空,則表示資料夾本身。
input-events
<input-events> <data-in name="dataReady" dataset="data"> <instance>${coord:current(-1)}</instance> </data-in> </input-events>
定義了資料觸發條件,${coord:current(-1)}表示對於當前時間的偏移,其中偏移量=數值* dataset frequency。有些時候,我們要判斷多個目錄是否生成,比如,判斷一天的24個小時目錄,這時應這樣寫:
<data-in name="dataReady2" dataset="data"> <start-instance>${coord:current(-24)}</start-instance> <end-instance>${coord:current(-1)}</end-instance> </data-in>
action
<action> <workflow> <app-path>${wf_app_path}</app-path> <configuration> <property> <name>dayTime</name> <value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, 'DAY'), 'yyyy-MM-dd')}</value> </property> </configuration> </workflow> </action>
定義coordinator要觸發的workflow,
coordinator提供了一些用於時間計算的函式,比如:
返回多個時間:
<value>${coord:formatTime(coord:dateOffset(coord:dateOffset(coord:nominalTime(), -12, 'HOUR'), -6, 'DAY'), 'yyyy-MM-dd')},${coord:formatTime(coord:dateOffset(coord:dateOffset(coord:nominalTime(), -12, 'HOUR'), -5, 'DAY')</value>
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2679715/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 高可用Hadoop平臺-Oozie工作流Hadoop
- 高可用Hadoop平臺-Oozie工作流之Hadoop排程Hadoop
- activiti工作流引擎元件元件
- 工作流引擎:jbpm和activiti
- oozie java apiJavaAPI
- Kafka的coordinatorKafka
- Apache Oozie 教程:使用 Oozie 排程 Hadoop 作業ApacheHadoop
- 工作流引擎架構設計架構
- Makeflow 4.0 釋出,工作流引擎
- 用 Swift 模仿 Vue + Vuex 進行 iOS 開發(二):CoordinatorSwiftVueiOS
- 工作流引擎的工作原理與功能
- OA軟體的核心:工作流引擎
- 瀏覽器核心渲染引擎工作流程瀏覽器
- 幾大主流工作流引擎對比
- 工作流引擎四重罪
- 淺析LR.Net工作流引擎
- 工作流引擎WorkFlow開源專案
- Flowable - 6.6.0 更新說明 (主流工作流引擎)
- 有人研究開源工作流引擎JBPM麼?
- 開源表單工作流引擎好用嗎?
- Oozie--安裝部署
- 專案實踐之工作流引擎基本文件!Activiti工作流框架中流程引擎API和服務詳解框架API
- 主流工作流引擎 flowable 三種方式部署流程
- incident如何使用Golang構建工作流程引擎?IDEGolang
- 高效能工作流引擎:DataBuilder與polarisUI
- Learun FrameWork 強大工作流引擎,讓OA更智慧Framework
- 馳騁工作流引擎-父子流程設計說明
- Cadence:馴服複雜流程的工作流引擎
- Spring Boot 整合 Activiti 工作流引擎 極簡教程Spring Boot
- LeaRun.Java工作流引擎 快速開發業務流程Java
- java Activiti 工作流引擎 SSM 框架模組設計方案JavaSSM框架
- 談談BPM、工作流引擎與OA的關係
- 將Bonita工作流引擎和eXo Portal相結合
- 將XForm整合到你的工作流引擎裡面ORM
- Apache Oozie學習筆記(一)Apache筆記
- 【iOS】MVVM+RxSwift+ReactorKit+CoordinatoriOSMVVMSwiftReact
- Druid中coordinator的介紹UI
- BPM系統,工作流引擎,表單引擎常用30個功能與常見問題