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貌似就这么多东西了,目前貌似一直都没有看到它的事务机制,它的定时作业不太想研究,看着就费劲儿,还不如自己写一个定时作业呢。。。
- 基于springboot+kotlin+gradle构建的框架的坑
- 创建Task的多种方法
- 运行map()后,报:<map object at 0x02629E50>解决方法与原因分析
- Gradle的快速入门
- Python笔记从html中提取字段
- 一条细小的报警短信的处理(r6笔记第96天)
- 1.react的基础知识
- 防火墙设置的小问题(r6笔记第94天)
- 有没有必要把机器学习算法自己实现一遍?
- python中从str中提取元素到list以及将list转换为str
- 简单易学的机器学习算法——线性回归(2)
- Java基础-26(01)总结网络编程
- undo retention的思考(一)
- 优化算法——人工蜂群算法(ABC)
- 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 数组属性和方法
- 通俗理解n-gram语言模型
- 数值积分|第二类反常积分
- python 字典一些常见的魔法方法以及遇到的面试题
- 【程序源代码】python贪吃蛇小游戏
- html5+CSS3+JS实现七夕言情功能代码
- 利用 Python 爬取了近 3000 条单身女生的数据,究竟她们理想的择偶标准是什么?
- 用了这么多年的注解,你知道注解是干嘛的嘛?
- 缓存及在 Python 中使用缓存
- 【xss-labs】xss-labs通关笔记(一)
- 在 jQuery Mobile 中使用 UI 组件
- 【内网渗透】关于内网代理转发技术
- 知识图谱项目前端可视化图论库——Cytoscape.js简介
- Matlab系列之文件操作
- 云开发 X 涂鸦:当小程序遇见物联网IoT,几行代码搞定智能插座控制
- Spring、SpringMVC和SpringBoot看这一篇就够了!