工作流引擎Oozie(二):coordinator
1. 簡介
coordinator是workflow的定時提交器,基於時間條件與資料生成觸發(based on time and data triggers)。簡單點說,coordinator按所定義的時間週期進行輪詢,若資料生成條件滿足,則觸發workflow任務;否則,則等待資料生成或跳過(排程策略由設定的超時時間決定)。
2. 詳解
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,具體數值由<input-events> <data-in ..>
傳入,也可通過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,
- app-path,workflow所在的HDFS目錄;
- property,定義傳給workflow的引數
coordinator提供了一些用於時間計算的函式,比如:
- coord:nominalTime(),返回coordinator的每一執行週期的當前時間;
- coord:dateOffset(String baseDate, int instance, String timeUnit),計算偏移後的時間,newDate = baseDate + instance * timeUnit;
- coord:formatTime(String ts, String format),定義格式化的時間,其中format應遵循Java's SimpleDateFormat。
返回多個時間:
<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>
相關推薦
工作流引擎Oozie(二):coordinator
1. 簡介 coordinator是workflow的定時提交器,基於時間條件與資料生成觸發(based on time and data triggers)。簡單點說,coordinator按所定義的時間週期進行輪詢,若資料生成條件滿足,則觸發workflow任務;否則,則等待資料生成或跳過(排程策略由設定
工作流引擎Oozie(一):workflow
觸發 line last ssa pig oozie apt cnblogs 定時任務 1. Oozie簡介 Yahoo開發工作流引擎Oozie(馭象者),用於管理Hadoop任務(支持MapReduce、Spark、Pig、Hive),把這些任務以DAG(有向無環圖)方式
flowable工作流進階(二)
Flowable spring boot 進階(二) 資料庫表介紹 Flowable的資料庫名稱都以ACT_開頭。第二部分是表的用例的雙字元標識。此用例也將大致匹配服務API。 ACT_RE_ *:RE代表repository。具有此字首的表包含靜態資訊,例如流程定義和流程
信數金服決策引擎分享(二):灰度釋出-冠軍/挑戰者試驗的另一個應用
其次,你還需要用程式碼實現對冠軍/挑戰者試驗引數的管理,比如設定執行當前決策邏輯的交易量,和執行新的決策邏輯的交易量。這用程式碼並不難實現,但改變這些引數意味著要經歷一個完整的軟體開發週期。比如把百分比從5%提高到20%,你需要軟體工程師做出修改,需要QA測試,需要一個正式的生產版本,工作負擔相
Activiti工作流框架學習(二)——使用Activiti提供的API完成流程操作
可以在專案中加入log4j,將logj4.properties檔案拷入到src目錄下,這樣框架執行的sql就可以輸出到到控制檯,log4j提供的日誌級別有以下幾種: Fatal error warn info debug trace 一、部署流程定義 1,在工程專
瀏覽器工作原理(二):瀏覽器渲染過程概述
sync 結構 dom end 繪制 fault 異步加載 步驟 targe 參考:https://segmentfault.com/a/1190000012925872#articleHeader4 瀏覽器器內核拿到內容後,渲染大概可以劃分成以下幾個步驟: 解析html
Flex佈局實戰(二):網格 \ 聖盃 \ 輸入框 \ 懸掛式 \ 固定底欄 \ 流式佈局
參考:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 下面程式碼可能會比較多,但核心CSS程式碼已經用 /**/ 的標記標出,直接看核心程式碼就好。 一、網格佈局 1、基本網格佈局 最簡單
PHP模板引擎Smarty(二)深入淺出之Smarty模板引擎工作機制(一)
深入淺出Smarty模板引擎工作機制,我們將對比使用smarty模板引擎和沒使用smarty模板引擎的兩種開發方式的區別,並動手開發一個自己的模板引擎,以便加深對smarty模板引擎工作機制的理解。 在沒有使用Smarty模板引擎的情況下,我們都是將PHP程式和網頁模
目標檢測光流法(二):opencv下的光流L-K演算法
後續將簡單介紹光流法的一些簡單實現包,包括opencv下的光流演算法與matlab下的光流演算法。該節主要介紹opencv下的光流實現。 Opencv的光流實現由好幾個方法可以(也就是說有好幾個函式可以用),每個函式當然也對應著不同的原理,那麼它的效果以及演算
(二):Flink概述,Flink如何支援批流處理,程式流程
前言 以下都儘量對比Spark(或者大資料生態的其他技術)進行理解。 Flink簡介,Flink能做什麼 Flink簡介 Flink最初是一個名為Stratosphere的研究專案,目標是為柏林地區的一些大學建立下一代大資料分析平臺。 它於2014年4月16
Java中,IO流(二):字元流
import java.io.*; /** * 字元流 1) 編碼問題 2)認識文字和文字檔案 java的文字(char)是16位無符號整數,是字元的unicode編碼(雙位元組編碼) 檔案是byte byte byte ...的資料序列 文字檔案是文字(char)序列
Chrome學習筆記(二):UI元件,面板引擎 —— 基礎設施篇
本文連結地址:Chrome學習筆記(二):UI元件,面板引擎 —— 基礎設施篇 Chrome的UI是很奇妙的,因為看起來能很好的跨平臺,而且可以很好的相容各個平臺的特性,比如在Mac下最小化和關閉按鈕在左側,還相容全屏的特性,在Linux上,也能載入GTK的外框,外加現在Chrome在推的Aura,更是直
Java8函數式編程(二):類比Spark RDD算子的Stream流操作
編程方式 min 也有 ffffff 種類 spa 封裝 方法 都是 1 Stream流 對集合進行叠代時,可調用其iterator方法,返回一個iterator對象,之後便可以通過該iterator對象遍歷集合中的元素,這被稱為外部叠代(for循環本身正是封裝了其的語法糖
用函數式編程,從0開發3D引擎和編輯器(二):函數式編程準備
cat null 存在 處理程序 字符串 優勢 attr 互轉 defined 大家好,本文介紹了本系列涉及到的函數式編程的主要知識點,為正式開發做好了準備。 函數式編程的優點 1.粒度小 相比面向對象編程以類為單位,函數式編程以函數為單位,粒度更小。 正所謂: 我只想要
Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 頁面
Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 頁面 在《Spring Boot(一):快速開始》中介紹瞭如何使用 Spring Boot 構建一個工程,並且提供 RESTful API ,本節我們繼續介紹如何使用 Spring Boot 渲染 Web 頁面。 1. 什麼是
從0開發3D引擎(二):準備預備知識
大家好,本文介紹了開發3D引擎需要的預備知識,給出了相關的資源。 上一篇博文 從0開發3D引擎(一):開篇 瞭解Web 3D Web 3D的歷史-WebGL 目前Web 3D是基於WebGL這個Web端3D API的,它的版本歷史為: (圖來自於WebGPU 開發狀態與計劃) (注:OpenGL是桌面端的
Docker(二):理解容器編排工具Kubernetes內部工作原理
一、Kubernetes是什麼 要說到Docker就不得不說說Kubernetes。當Docker容器在微服務的環境下數量一多,那麼統一的,自動化的管理自然少不了。而Kubernetes就是一個這樣的工具,它不僅僅提供了健康檢查和自修復,還有自動擴容縮容,以及服務發現和負載均衡等等功能。總的來說它使我們對
深入理解JS中的物件(二):new 的工作原理
**目錄** - 序言 - 不同返回值的建構函式 - 深入 new 呼叫函式原理 - 總結 - 參考 **1.序言** 在 [深入理解JS中的物件(一):原型、原型鏈和建構函式](https://www.cnblogs.com/forcheng/p/12866827.html) 中,我們分析了JS中
Javascript面向對象編程(二):構造函數的繼承
沒有 cal type 這一 今天 nts 實現繼承 刪除 函數綁定 今天要介紹的是,對象之間的"繼承"的五種方法。 比如,現在有一個"動物"對象的構造函數。 function Animal(){ this.species = "動物"; } 還有一個
虛擬化(二):虛擬化及vmware workstation產品使用
應該 server esxi aof 手機 text 產品 窗體 pass 虛擬化(一):虛擬化及vmware產品介紹 vmware workstation的最新版本號是10.0.2。相信大家也都使用過,當中的簡單的虛擬機的創建。刪除等,都非常easy