Oozie的coordinator怎么配置

71次阅读
没有评论

共计 2695 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章主要介绍“Oozie 的 coordinator 怎么配置”,在日常操作中,相信很多人在 Oozie 的 coordinator 怎么配置问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oozie 的 coordinator 怎么配置”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

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,

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 怎么配置”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2695字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)