oozie 重新提交作业
时间:2022-04-29
本文章向大家介绍oozie 重新提交作业,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在oozie的运行过程当中可能会出现错误,比如数据库连接不上,或者作业执行报错导致流程进入suspend或者killed状态,这个时候我们就要分析了,如果确实是数据或者是网络有问题,我们比如把问题解决了才可以重新运行作业。重新运行作业分两种情况,suspend状态和killed状态的,这两种状态是要通过不同的处理方式来处理的。
(1)suspend状态的我们可以用resume方式来在挂起的地方恢复作业,重新运行,或者是先杀掉它,让它进入killed状态,再进行重新运行。
public static void resumeJob(String jobId) {
try {
OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
wc.resume(jobId);
} catch (OozieClientException e) {
log.error(e);
}
}
public static void killJob(String jobId) {
try {
OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
wc.kill(jobId);
} catch (OozieClientException e) {
log.error(e);
}
}
(2)killed状态的重新运行方法和它不一样,下面先贴出代码。
public static void reRunJob(String jobId, Properties conf) {
OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
try {
Properties properties = wc.createConfiguration();
properties.setProperty("nameNode", "hdfs://192.168.1.133:9000");
properties.setProperty("queueName", "default");
properties.setProperty("examplesRoot", "examples");
properties
.setProperty("oozie.wf.application.path",
"${nameNode}/user/cenyuhai/${examplesRoot}/apps/map-reduce");
properties.setProperty("outputDir", "map-reduce");
properties.setProperty("jobTracker", "http://192.168.1.133:9001");
properties.setProperty("inputDir",
"/user/cenyuhai/examples/input-data/text");
properties.setProperty("outputDir",
"/user/cenyuhai/examples/output-data/map-reduce");
properties.setProperty("oozie.wf.rerun.failnodes", "true");
//这两个参数只能选一个,第一个是重新运行失败的节点,第二个是需要跳过的节点
// properties.setProperty("oozie.wf.rerun.skip.nodes", ":start:");
wc.reRun(jobId, properties);
} catch (OozieClientException e) {
log.error(e);
}
}
好,现在开始讲解,重新运行作业,除了需要原有流程的id之外,还需要重新配置作业属性,它可以和原来的属性不一样,这里面有两个属性是必须要注意的,它们是重新提交作业必须具备的属性,如果不存在就会报错的,它们分别是oozie.wf.rerun.failnodes和oozie.wf.rerun.skip.nodes。这两个必须必须存在一个,第一个是自动运行失败的流程节点,第二个是需要跳过的节点,通过设置这个属性的话,如果已经运行成功的节点不在这个属性里面的话就可以让已经运行成功的节点再运行一遍了,爽吧!
好啦,就到这吧,oozie貌似就这么多东西了,目前貌似一直都没有看到它的事务机制,它的定时作业不太想研究,看着就费劲儿,还不如自己写一个定时作业呢。。。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 记住没:永远不要在 MySQL 中使用 UTF-8!
- C#多线程委托ParameterizedThreadStart应用
- [Python爬虫]使用Selenium操作浏览器订购火车票
- IDEA多线程调试
- 为什么wait和notify方法要在同步块中调用?
- 一文说清楚Mysql Innodb的B+树索引原理及其推理过程
- [Oracle数据泵全解析]expdp交互式命令行模式命令
- SpringBoot Feign文件上传
- Docker_000
- 如何应对面试官的JVM调优问题
- Docker_001
- Docker_002
- [PyQt Tutorial]2.一个Hello World程序
- Oracle设置开机自启
- Go_学习之Docke容器