Apache Oozie Coordinator 作业自定义配置定时任务
一,介绍
Oozie是Hadoop的工作流系统,如果使用Oozie来提交MapReduce作业(Oozie 不仅仅支持MapReduce作业,还支持其他类型的作业),可以借助Oozie Coordinator 作业来实现定时运行。
对于Oozie的作业而言,在它提交给Hadoop之前首先需要部署好。即,将配置文件(定时作业是coordinator.xml,workflow作业则是workflow.xml)、可执行的jar文件、还有待处理的输入数据上传到HDFS上。
一个典型的workflow作业的配置如下:
aaarticlea/png;base64,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" alt="" />
其中,对应的配置文件workflow.xml如下:
其中,SampleMapper 和 SampleReducer则是 将写好的MapReduce程序的Mapper类和Reducer类
然后,再在命令行使用 oozie -job ....就可以把作业提交到Hadoop运行了。
二,定时作业的配置及提交运行
这是本文的重点。
Oozie使用Coordinator作业来实现定时功能,对于一个定时作业,同时也需要配置文件。即:coordinator.xml。一个简单的示例如下:
aaarticlea/png;base64,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" alt="" />
frequency 、start、end 分别表示作业的运行频率、起始时间和结束时间。
这里全用变量来代替:${frequency}、${start}、${end} 这样,在提交作业时,只需要给这些变量赋值,就可以重用同一个coordinator配置文件了。
需要注意: <app-path> 可执行jar文件的路径。可以这样理解,对于一个定时作业,它本质上还是workflow作业,只不过是在workflow作业上加上了定时功能而已。因此,它需要<app-path>标签 来指明 workflow作业的部署的jar文件HDFS地址。
在每次提交作业时,只需要重新改变frequency、start、end 还有workflow 的app-path ${workflowAppUri}就可以保证基本的定时作业都使用同一个模板coordinator.xml配置文件了。
public static String getXmlDataForCoordinatorFreq(String appPath, String frequency, String start, String end){
StringBuilder sb = new StringBuilder(); sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
sb.append("<configuration>");
sb.append( "<property>");
sb.append( "<name>user.name</name>");
sb.append( "<value>" + USER_NAME + "</value>");
sb.append( "</property>");
sb.append( "<property>");
sb.append( "<name>jobTracker</name>");
sb.append( "<value>" + JOB_TRACKER + "</value>");
sb.append( "</property>");
sb.append( "<property>");
sb.append( "<name>nameNode</name>");
sb.append( "<value>" + NAME_NODE + "</value>");
sb.append( "</property>");
sb.append( "<property>");
sb.append( "<name>oozie.coord.application.path</name>");
sb.append( "<value>" + COORDINATOR_CONFIG_FREQ + "</value>");
sb.append( "</property>");
sb.append( "<property>");
sb.append( "<name>workflowAppUri</name>");
sb.append( "<value>" + appPath + "</value>");
sb.append( "</property>");
sb.append( "<property>");
sb.append( "<name>start</name>");
sb.append( "<value>" + start + "</value>");
sb.append( "</property>"); sb.append( "<property>");
sb.append( "<name>frequency</name>");
sb.append( "<value>" + frequency + "</value>");
sb.append( "</property>"); sb.append( "<property>");
sb.append( "<name>end</name>");
sb.append( "<value>" + end + "</value>");
sb.append( "</property>");
sb.append("</configuration>"); return sb.toString();
}
由于Oozie支持RestClient API,提交作业。因此,通过构造 HTTP 请求,带上上面的配置参数,即可实现定时作业的提交。
Apache Oozie Coordinator 作业自定义配置定时任务的更多相关文章
- Oozie coordinator 作业自定义的配置的一些方法
Oozie的coordinator有啥用? The Oozie Coordinator system allows the user to define and execute recurrent a ...
- Oozie Coordinator job 之定时任务
使用 Coordinator job 可以执行定时任务和时间触发执行 需要注意的是 Oozie 默认使用的时区与中国时区不是一致的,需要进行一点修改 1.关于时区 a.修改 core-site.xml ...
- oozie coordinator 定时调度
(本段内容摘自http://blog.sina.com.cn/s/blog_e699b42b0102xjqw.html Oozie总结 行成于思的博客) Oozie提出了Coordin ...
- oozie.log报提示:org.apache.oozie.service.ServiceException: E0104错误 An Admin needs to install the sharelib with oozie-setup.sh and issue the 'oozie admin' CLI command to update sharelib
不多说,直接上干货! 问题详情 关于怎么启动oozie,我这里不多赘述. Oozie的详细启动步骤(CDH版本的3节点集群) 然后,我在查看 [hadoop@bigdatamaster logs]$ ...
- 基于Spring的可扩展Schema进行开发自定义配置标签支持
一.背景 最近和朋友一起想开发一个类似alibaba dubbo的功能的工具,其中就用到了基于Spring的可扩展Schema进行开发自定义配置标签支持,通过上网查资料自己写了一个demo.今天在这里 ...
- Spring 配置 定时任务
官档地址:https://docs.spring.io/spring/docs/5.1.4.RELEASE/spring-framework-reference/integration.html#sc ...
- 如何实现Activiti的分支条件的自定义配置(转)
如何实现Activiti的分支条件的自定义配置 博客分类: Activiti Java SaaS 一.Activiti的流程分支条件的局限 Activiti的流程分支条件目前是采用脚本判断方式,并 ...
- 让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean
让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean 问题描述 实现思路 思路一 [不符合要求] 思路二[满足要求] 思路三[未试验] 问题描述 目前我工作环境下,后端主要的框架 ...
- 第12章 Linux配置定时任务详解
12.1 配置定时任务 首先需弄清的概念: (1).crond是一个daemon类程序,路径为/usr/sbin/crond.默认会以后台方式启动,service或systemd方式启动crond默认 ...
随机推荐
- 微信小程序获取客户端系统信息
微信小程序中有个API: wx.getSystemInfo() 可以获取系统的信息 wx.getSystemInfoSync()===>同步获取系统信息 wx.getSyatemInfo({ s ...
- NodeMCU学习(一) : 开始之前的准备
安装Aduino开发环境 在官网中下载Arduino开发环境,或者在网盘中下载: 网盘地址: https://pan.baidu.com/s/1OjMhYgKOYW69YC2dEwFgyw: 提取码: ...
- npm install的几种命令形式区别
转自未来与传说.jigetage 我们在使用 npm install 安装模块的时候 ,一般会使用下面这几种命令形式: npm install moduleName # 安装模块到项目目录下 npm ...
- GitHub 新手教程 六,Git GUI 新手教程(3),从GitHub远端同步代码库
从GitHub把代码库下载到本地: 1,打开 GitGUI,单击我们之前克隆好的本地库: 2,按图片所示点击,同步远端代码: 3,出现如下提示后,点击“Close”: 4,上面只是把代码下载下来,还没 ...
- GitHub 新手教程 五,Git GUI 新手教程(2),Clone Existing Repository 克隆代码库
1,注意: 网上大部分教程都是从“Create New Repository”讲起,这其实给我们新手埋了很大的一个坑.按照类似的教程,仅做到一半,各种错误窗口就会弹出来了,像什么:“非同一代码库”.“ ...
- 树莓派Raspberry Pi微改款,Model B 3+规格探析
18年3月树莓派基金会推出了ModelB 3+版的新款树莓派单板计算机.从编号数字上看,3+仅是3的再提升,在规格上有小幅异动,究竟改进或提升了哪些部分,本文将对此进行探讨. 树莓派版本观察 从过往的 ...
- 怎么理解LAXCUS大操作系统系统在云计算体系中的定位
最近一直在做laxcus大数据操作系统的分布式应用开发,因为做得多了,感触也多了.按照云计算三层定义,即iaas(基础设施即服务).paas(平台即服务).saas(软件即服务),laxcus属于pa ...
- 2017-2018 第一学期201623班《程序设计与数据结构》-第7&8周作业问题总结
一.作业内容 第7周作业 http://www.cnblogs.com/rocedu/p/7484252.html#WEEK07 第8周作业 http://www.cnblogs.com/rocedu ...
- ES6实用新特性
兼容性 http://kangax.github.io/compat-table/es5/ http://kangax.github.io/compat-table/es6/ ES6(ES2015)兼 ...
- 嵌入AppBar并且带搜索建议的搜索框(Android)
先看结果: 相关的官方文档在这里:Creating a Search Interface Android官方提供了两种方式: 弹出一个Dialog,覆盖当前的Activity界面 在AppBar中扩展 ...