1. 程式人生 > >工作流引擎Oozie(二):coordinator

工作流引擎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>

相關推薦

工作引擎Ooziecoordinator

1. 簡介 coordinator是workflow的定時提交器,基於時間條件與資料生成觸發(based on time and data triggers)。簡單點說,coordinator按所定義的時間週期進行輪詢,若資料生成條件滿足,則觸發workflow任務;否則,則等待資料生成或跳過(排程策略由設定

工作引擎Oozieworkflow

觸發 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