Oozie coordinator 作业自定义的配置的一些方法
Oozie的coordinator有啥用?
The Oozie Coordinator system allows the user to define and execute recurrent and interdependent workflow jobs (data application pipelines).
说白了就是可以把各个 workflow作业组织起来。比如,A作业执行完成之后,会有输出,该输出触发B作业的执行。那么 A B 这两个workflow作业就可以通过一个coordinator作业组织起来。
什么是coordinator作业?
Coordinator Job: A coordinator job
is an executable instance of a coordination definition. A job submission is
done by submitting a job configuration that resolves all parameters in the
application definition.
这说明coordinator作业也是需要配置相应的参数的。与提交workflow作业时配置 workflow.xml类似,coordinator作业也有一个名为coordinator.xml的配置文件。
什么是coordinator action?
Coordinator
Action: A coordinator action is a
workflow job that is started when a set of conditions are met (input dataset
instances are available).
coordinator action本质上是一个workflow 作业!
Coordinator
Application: A coordinator application
defines the conditions under which coordinator actions should be created (the
frequency) and when the actions can be started. The coordinator application
also defines a start and an end time. Normally, coordinator applications are
parameterized. A Coordinator application is written in XML.
coordinator application 负责管理各个coordinator action。有start time 和 end time,负责其中定义的action的起动与终止。
前面一直在纠结这个问题:oozie coordinator 作业如何配置???
现在记录如下:
Oozie提供的一个官方的关于定时作业配置文件,内容如下:
<coordinator-app name="cron-coord" frequency="${coord:minutes(10)}" start="${start}" end="${end}" timezone="UTC"
xmlns="uri:oozie:coordinator:0.2">
<action>
<workflow>
<app-path>${workflowAppUri}</app-path>
<configuration>
<property>
<name>jobTracker</name>
<value>${jobTracker}</value>
</property>
<property>
<name>nameNode</name>
<value>${nameNode}</value>
</property>
</configuration>
</workflow>
</action>
</coordinator-app>
从上面可以看出, frequency已经写死了,指定为每十分钟执行一次。其中启动时间和结束时间以变量的形式给出,如start="${start}" end="${end}"
这两个变量可以通过job.properties 文件或者在命令行提交时指定参数即可。此外,还可以通过HTTP POST请求的形式,带着相关的参数进行作业提交(Oozie 提供了WebService API。)
其实,frequency和 start、end 一样,也可以用变量来代替,这样就可以实现我前面帖子里面的问题了---定时提交作业,且只运行一次。
但是,需要注意的是 frequency的格式问题:它只能是 cron expression。否则就会报以下的错误:
Invalid
coordinator application attributes, parameter [frequency] = [10 * ? ?
?] must be an integer or a cron syntax. Parsing error For input string:
"10 * ? ? ?"
关于 cron expression可以参考Quartz,因为Oozie的定时功能是基于它实现的。
此外,我还碰到了一个这样的问题:
Coordinator job with frequency '10 * * * *' materializes no actions between start and end time.
从Oozie的源代码可以看出,抛出该异常的程序代码如下:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if (nextTime == null) {
throw new IllegalArgumentException("Invalid coordinator cron frequency: " + coordJob.getFrequency());
}
if (!nextTime.before(coordJob.getEndTime())) {
throw new IllegalArgumentException("Coordinator job with frequency '" +
coordJob.getFrequency() + "' materializes no actions between start and end time.");
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这是因为我的start time 和 end time设置的不合理,下一次作业的运行时间在结束时间之前了,就会出现下面的错误。
Coordinator job with frequency '10 * * * *' materializes no actions between start and end time.
文章开头说了Coordinator作业可以把其他作业组织起来。因此,提交一个Coordinator作业时,会生成一个 父作业ID 和 若干子作业的ID,子作业就是Coordinator作业的配置文件中的 <workflow>标签中指定的子作业。比如:
生成的一个父作业ID:0000033-160516121313115-oozie-oozi-C
相应的子作业ID:0000033-160516121313115-oozie-oozi-C@1
由于该子作业是一个workflow作业,workflow作业的ID:0000034-160516121313115-oozie-oozi-W
另外,相关的具体规则可参考Oozie官网文档
Oozie coordinator 作业自定义的配置的一些方法的更多相关文章
- Apache Oozie Coordinator 作业自定义配置定时任务
一,介绍 Oozie是Hadoop的工作流系统,如果使用Oozie来提交MapReduce作业(Oozie 不仅仅支持MapReduce作业,还支持其他类型的作业),可以借助Oozie Coordin ...
- oozie coordinator 定时调度
(本段内容摘自http://blog.sina.com.cn/s/blog_e699b42b0102xjqw.html Oozie总结 行成于思的博客) Oozie提出了Coordin ...
- Oozie Coordinator job 之定时任务
使用 Coordinator job 可以执行定时任务和时间触发执行 需要注意的是 Oozie 默认使用的时区与中国时区不是一致的,需要进行一点修改 1.关于时区 a.修改 core-site.xml ...
- Oozie、Flume、Mahout配置与应用
-------------------------Oozie-------------------- [一.部署] 1)部署Oozie服务端 [root@cMaster~]#sudo yum inst ...
- 【.net 深呼吸】自定义缓存配置(非Web项目)
在前一篇烂文中,老周简单讲述了非Web应用的缓存技术的基本用法.其实嘛,使用系统默认方案已经满足我们的需求了,不过,如果你真想自己来配置缓存,也是可以的. 缓存的自定义配置可以有两种方案,一种是用代码 ...
- NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1
Issue NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1 Error NBU7.0 Image Cleanup作业失败, D ...
- phpstorm 自定义函数配置
phpstorm 自定义函数配置 打开设置->活动模板->
- JSP自定义标签配置
JSP自定义标签配置 JSP自定义标签 <taglib> <taglib-uri>/WEB-INF/you.tld</taglib-uri> ...
- SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)
1.概念:Ribbon 负载均衡 2.具体内容 现在所有的服务已经通过了 Eureka 进行了注册,那么使用 Eureka 注册的目的是希望所有的服务都统一归属到 Eureka 之中进 行处理,但是现 ...
随机推荐
- ajax配合一般处理程序(.ashx)登录的一般写法
前端: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> ...
- SignalR入门篇
写在前面的废话 在写关于SignalR的学习笔记之前研究了几天的webSocket,毕竟这才是未来的技术趋势,虽然很早就听说过WebSocket,但是并没有在实际项目中遇到过,所以也就没有深入研究.通 ...
- jquery完整弹窗代码
</html> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...
- Java开发程序,使用编辑器编写创建Java项目、类
打开Eclipse 出现界面 工作空间的路径可以选择一个大空间的磁盘存放,点击确定: 创建:程序左上角-文件-新建-JAVA项目 输入项目名(项目名不能为中文),点击完成: 在 包资源管理器中点击 ...
- java面向对象三大特性之继承
通过重用已经测试并验证通过的代码,怎样才减少开发工作,所有开发团队都在为一问题而努力.一个久经考验的方法是通过有效地使用Java继承优化应用程序开发. 继承的从某种意义上讲,继承的短暂美就如同宇宙中所 ...
- 多级弹出菜单jQuery插件ZoneMenu
ZoneMenu是一个菜单jQuery插件,只需占用页面上的一个小区域,却可以实现多级菜单. 在线体验:http://keleyi.com/jq/zonemenu/ 点击这里下载 完整HTML文件代码 ...
- arcgis for flex展示GIS基本功能
1.地图框选搜索: 这是空间查询,在地图上框选一定的范围,然后搜索出在这个范围之内的所有信息,搜索到的详细信息在列表框显示出来 2.属性查询: 3.数据库展示: 4.绘制图形: 地图上绘制各种不同形状 ...
- Thrift-java实例
➠更多技术干货请戳:听云博客 Thrift实例1 功能描述:客户端与服务器端分别是两个应用,先启动服务器端,再启动客户端,实现执行客户端运行服务器端的加法方法. 源码截图(源码在附件中): 客户端: ...
- Android 刷新相册
Android4.4之前: sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://" + f ...
- .NET开源插件内核
http://www.cnblogs.com/newmin/ .NET开源插件内核:支持WinForm和Asp.net. 设计的初衷是:利用“开发平台 + 插件内核"来开发子系统,及对系统进 ...