使用 Coordinator job 可以执行定时任务和时间触发执行

需要注意的是 Oozie 默认使用的时区与中国时区不是一致的,需要进行一点修改

1.关于时区

a.修改 core-site.xml 文件(运行需要)需要清除编译文件,重启 tomcat 服务(不能是UTC+0800)

Oozie 安装及 examples app 的使用

<property>
<name>oozie.processing.timezone</name>
<value>GMT+0800</value>
</property>

b.修改 $OOZIE_HOME/oozie-server/webapps/oozie/oozie-console.js 文件(Web显示需要),无需重启

function getTimeZone() {
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
return Ext.state.Manager.get("TimezoneId","GMT+0800");
}

2.拷贝 example 文件 cron-schedule

3.编辑 job.properties 文件(注意时间格式)

nameNode=hdfs://cen-ubuntu.cenzhongman.com:8020
jobTracker=localhost:8032
queueName=default
oozieAppsRoot=oozie-apps oozie.coord.application.path=${nameNode}/user/cen/${oozieAppsRoot}/cron-schedule
start=2017-07-30T14:40+0800
end=2017-07-30T14:59+0800
workflowAppUri=${nameNode}/user/cen/${oozieAppsRoot}/cron-schedule

4.编辑 workflow.xml 文件(内容酌情添加,这里什么也不做)(修改了版本号)

<workflow-app xmlns="uri:oozie:workflow:0.5" name="no-op-wf">
<start to="end"/>
<end name="end"/>
</workflow-app>

5.编辑 coordinator.xml 文件(支持两种定时任务方式,下文详细说明)

<coordinator-app name="cron-coord" frequency="0/1 * * * *" start="${start}" end="${end}" timezone="GMT+0800"
xmlns="uri:oozie:coordinator:0.4">
<action>
<workflow>
<app-path>${workflowAppUri}</app-path>
<configuration>
<property>
<name>jobTracker</name>
<value>${jobTracker}</value>
</property>
<property>
<name>nameNode</name>
<value>${nameNode}</value>
</property>
<property>
<name>queueName</name>
<value>${queueName}</value>
</property>
</configuration>
</workflow>
</action>
</coordinator-app>

注意事项

  • 修改时区写法
  • 修改版本号
  • coordinator.xml 文件在本地文件系统中读取,HDFS 中无需修改不影响

6.上传文件至 HDFS 文件系统

7.执行任务

export OOZIE_URL=http://cen-ubuntu:11000/oozie/
bin/oozie job --config oozie-apps/cron-schedule/job.properties -run

关于定时方式

方式一:官方定义方式

EL Constant Value Example
${coord:minutes(int n)} n ${coord:minutes(45)} --> 45
${coord:hours(int n)} n * 60 ${coord:hours(3)} --> 180
${coord:days(int n)} variable ${coord:days(2)} --> minutes in 2 full days from the current date
${coord:months(int n)} variable ${coord:months(1)} --> minutes in a 1 full month from the current date
${cron syntax} variable ${0,10 15 * * 2-6} --> a job that runs every weekday at 3:00pm and 3:10pm UTC time

方式二:corntab方式

Crontab使用参考

Field name Allowed Values Allowed Special Characters
Minutes 0-59 , - * /
Hours 0-23 , - * /
Day-of-month 1-31 , - * ? / L W
Month 1-12 or JAN-DEC , - * /
Day-of-Week 1-7 or SUN-SAT , - * ? / L #

Example

Cron Expression Meaning
10 9 * * * Runs everyday at 9:10am
10,30,45 9 * * * Runs everyday at 9:10am, 9:30am, and 9:45am
0 * 30 JAN 2-6 Runs at 0 minute of every hour on weekdays and 30th of January
0/20 9-17 * * 2-5 Runs every Mon, Tue, Wed, and Thurs at minutes 0, 20, 40 from 9am to 5pm
1 2 L-3 * * Runs every third-to-last day of month at 2:01am
1 2 6W 3 ? Runs on the nearest weekday to March, 6th every year at 2:01am
1 2 * 3 3#2 Runs every second Tuesday of March at 2:01am every year
0 10,13 * * MON-FRI Runs every weekday at 10am and 1pm

注1:开启了检查频率,导致5分钟以内的频率运行失败

  • 错误提示:Error: E1003 : E1003: Invalid coordinator application attributes, Coordinator job with frequency [2] minutes is faster than allowed maximum of 5 minutes (oozie.service.coord.check.maximum.frequency is set to true)

  • 错误原因:开启了检查频率,导致5分钟以内的频率运行失败

  • 解决:关闭频率检查功能 配置oozie-site.xml文件

      <property>
    <name>oozie.service.coord.check.maximum.frequency</name>
    <value>false</value>
    </property>

Oozie Coordinator job 之定时任务的更多相关文章

  1. Apache Oozie Coordinator 作业自定义配置定时任务

    一,介绍 Oozie是Hadoop的工作流系统,如果使用Oozie来提交MapReduce作业(Oozie 不仅仅支持MapReduce作业,还支持其他类型的作业),可以借助Oozie Coordin ...

  2. 使用Oozie中workflow的定时任务重跑hive数仓表的历史分期调度

    在数仓和BI系统的开发和使用过程中会经常出现需要重跑数仓中某些或一段时间内的分区数据,原因可能是:1.数据统计和计算逻辑/口径调整,2.发现之前的埋点数据收集出现错误或者埋点出现错误,3.业务数据库出 ...

  3. 2-10 就业课(2.0)-oozie:8、定时任务的执行

    4.5.oozie的任务调度,定时任务执行 在oozie当中,主要是通过Coordinator 来实现任务的定时调度,与我们的workflow类似的,Coordinator 这个模块也是主要通过xml ...

  4. Oozie coordinator 作业自定义的配置的一些方法

    Oozie的coordinator有啥用? The Oozie Coordinator system allows the user to define and execute recurrent a ...

  5. oozie coordinator 定时调度

      (本段内容摘自http://blog.sina.com.cn/s/blog_e699b42b0102xjqw.html  Oozie总结 行成于思的博客)      Oozie提出了Coordin ...

  6. 1.18-1.21 Oozie Coordinator调度

    一.时区问题 1.修改系统时区 ## [root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# rm -rf /etc/localtime [root@hadoop-se ...

  7. Hue上的Oozie构建工作流和定时任务步骤

    Oozie是什么? Oozie是一种Java Web应用程序,它运行在Java servlet容器--即Tomcat--中,并使用数据库来存储以下内容: 工作流定义 当前运行的工作流实例,包括实例的状 ...

  8. 【Hadoop离线基础总结】oozie定时任务设置

    目录 简介 概述 oozie定时任务设置 1.拷贝定时任务的调度模板 拷贝hello.sh脚本 3.修改配置文件 4.上传到hdfs对应路径 5.运行定时任务 简介 概述 在oozie当中,主要是通过 ...

  9. 工作流引擎Oozie(二):coordinator

    1. 简介 coordinator是workflow的定时提交器,基于时间条件与数据生成触发(based on time and data triggers).简单点说,coordinator按所定义 ...

随机推荐

  1. Java传引用问题

            Java传引用问题  使用Java调用方法时,可以传值,也可以传引用.下面说说两者的区别: 1.传值 传值中的"值"类型是指java的8大基本类型(基础知识,不知道 ...

  2. python接口测试-项目实践(四)拼接出预期结果

    四 字符串拼接 空值处理 当某字段接口数据为空,则不显示相关字串. 比如字串原本是 "...,净资产收益率:ROE%",当接口数据中ROE为空,不显示',净资产收益率:%' 三目运 ...

  3. html常见元素和理解

    html常见元素分为两类,一类是header区的元素,一类是body区的元素 header区元素: meta title style link scipt base 里面包括像meta,title,s ...

  4. 2018.11.1 Hibernate中的Mapper关系映射文件

    Customer.hbm.xml 基本的参数都在里面了 <?xml version="1.0" encoding="UTF-8"?> <!DO ...

  5. linux 安装redis和集群

    一.安装redis单机 1.安装编译环境 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 2.安装步骤: 第一步:r ...

  6. HDU 1372 Knight Moves(最简单也是最经典的bfs)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1372 Knight Moves Time Limit: 2000/1000 MS (Java/Othe ...

  7. 微信开发----JS-SDK接口

    2018.03.15:GitHub下载代码 208.3.6:更新:我们不再使用JosnHelp返回字典类或者强类型,而是直接返回动态类型,这样就会方便的多. JsonHelp更新详情:微信开发---- ...

  8. center os 创建用户、设置密码、修改用户、删除用户命令

    参考:https://www.linuxidc.com/Linux/2017-06/144916.htm useradd testuser  创建用户testuserpasswd testuser  ...

  9. vim 输入特殊字符

    在VIM中可以通过二合字符和十进制进行输入, 在输入模式中,Ctrl + V, 十进制 在输入模式中,Ctrl + K, 二合字符(区分大小写) 注意:特殊字符也算一个字节 通过用的^@是为了保证结尾 ...

  10. SAP物料主数据的屏幕字段控制,必输,隐藏

    http://www.cnblogs.com/275147378abc/p/5699077.html 1.事务码MM01,把物料组设为选填字段. 2.找到物料组的屏幕字段. 3.在后台根据屏幕字段找到 ...