通过shell脚本来rerun一个oozie调度失败的job,从而可以跳过执行失败的节点
标题很长:通过shell脚本来rerun一个oozie调度失败的job,从而可以跳过执行失败的节点
不过目前从oozie调度测试的例子来看,oozie本身的retry好像并没有参数可以控制跳过失败的节点。必须手工重新rerun的时候指定 -D oozie.wf.rerun.failnodes=false
参数。
这个问题发生的原因是不同的节点安装的软件包有些差异导致一些jar包冲突,这样就使得该job在某些节点执行成功,某些节点执行失败。
这样我就写了一段shell脚本,来从oozie的jog表里面抓取失败的某个任务,然后去执行oozie rerun的命令,然后在crontab中每天定时调度这个脚本3次。
shell脚本如下:
#!/bin/sh # mysql连接
hostname="localhost"
port=""
username="oozie"
password="oozie"
dbname="oozie" # job的名称
appname="coord_xxxx_job" #当前时间
nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"` # sql 查询语句
select_sql="
select concat(a.job_id,',',a.action_number) from COORD_JOBS j,COORD_ACTIONS a
where j.id = a.job_id
and j.app_name = '${appname}'
and j.status = 'running'
and to_days(a.created_time) = TO_DAYS(now())
and a.status != 'SUCCEEDED';
" # 连接mysql查询
result=(`mysql -h${hostname} -P${port} -u${username} -p${password} ${dbname} -N -e "${select_sql}"`)
echo ${result} # 如果查询结果不为空,则执行oozie的rerun脚本,并跳过失败的节点执行
if [ -n "${result}" ] ;then
#echo ${result}
IFS=',' arr=(${result})
echo ${nowtime} ${appname} ${arr[]} ${arr[]} >> job_rerun.log
oozie job -rerun ${arr[]} -refresh -action ${arr[]} -D oozie.wf.rerun.failnodes=false
fi
通过shell脚本来rerun一个oozie调度失败的job,从而可以跳过执行失败的节点的更多相关文章
- Spark执行失败时的一个错误分析
错误分析 堆栈信息中有一个错误信息:Job aborted due to stage failure: Task 1 in stage 2.0 failed 4 times, most recent ...
- oozie调度中的重试和手工rerun一个workflow
在oozie中有Bundle.Coordinator和Workflow三种类型的job,他们之间可以有以下包含关系. Bundle > Coordinator > Workflow. 1. ...
- 【Hadoop离线基础总结】oozie调度shell脚本
目录 1.解压官方提供的调度案例 2.创建工作目录 3.拷贝任务模板到工作目录当中去 4.随意准备一个shell脚本 5.修改模板下的配置文件 6.上传调度任务到hdfs上面去 7.执行调度任务 1. ...
- troubleshooting-执行Oozie调度Hive导数脚本抛java.io.IOException: output.properties data exceeds its limit [2048]
执行Oozie调度Hive导数脚本抛java.io.IOException: output.properties data exceeds its limit [2048] 原因分析 shell脚本中 ...
- 如何在linux Shell脚本里面把一个数组传递到awk内部进行处理
前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分 ...
- java 多线程——一个定时调度的例子
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- shell脚本报错:"[: =: unary operator expected"
shell脚本报错:"[: =: unary operator expected" 在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK&q ...
- Linux CFS调度器之pick_next_task_fair选择下一个被调度的进程--Linux进程的管理与调度(二十八)
1. CFS如何选择最合适的进程 每个调度器类sched_class都必须提供一个pick_next_task函数用以在就绪队列中选择一个最优的进程来等待调度, 而我们的CFS调度器类中, 选择下一个 ...
- oozie调度sqoop Job 数据库密码无法保存
问题描述 通过oozie调度sqoop作业时,需要输入数据库作业密码,但在sqoop元数据服务配置密码后,过一段时间会失效. 解决方法 将数据库密码写入HDFS文件,通过配置Sqoop job,实现传 ...
随机推荐
- 【转载并整理】javaweb单点登录
很好的一篇,讲述原理的文章: http://www.importnew.com/22863.html https://www.cnblogs.com/Leo_wl/p/6111623.html 京东s ...
- 【python】pycharm常用配置快速入门。
俗话说,工欲善其事必先利其器.当我们想从事一门新的语言的时候,最重要的是熟悉其常用的编辑器的配置.刚好这两天在学习python,网上看到一篇比较好的文章,转载过来自己学习一下.感谢:https://s ...
- grafana 邮件报警
https://my.oschina.net/go4it/blog/830714 grafana 教程 http://download.csdn.net/detail/shuijinglei198 ...
- js判断是否IE浏览器
//ie? if (!!window.ActiveXObject || "ActiveXObject" in window){ //是 alert(1); }else{ //不是 ...
- 编译libevent源代码(Windows)
学习笔记,只是记录本次成功用libevent源代码进行编译.环境为MinGW+VS2008+Msys. 0.下载libevent库 http://libevent.org/ 下载stable稳定版的库 ...
- 菜鸟译文(二)——使用Java泛型构造模板方法模式
如果你发现你有很多重复的代码,你可能会考虑用模板方法消除容易出错的重复代码.这里有一个例子:下面的两个类,完成了几乎相同的功能: 实例化并初始化一个Reader来读取CSV文件: 读取每一行并解析: ...
- Vue.js使用-组件(上篇)
1.什么是组件 组件可以理解为定义的一个view模块,可重复使用. 2.组件使用 1)创建组件 var myComponent = Vue.extend({ template: ' this is a ...
- 【Web】Tomcat中利用Session识别用户的基本原理
HTTP无状态的特性与Session.Cookie的存在 HTTP有一个特性:无状态的,就是前后两个HTTP事务它们并不知道对方的信息. 而为了维护会话信息或用户信息,一般可用Cookie或Sessi ...
- 在IIS服务器上屏蔽IP的访问
今天就跟大家分享一下在IIS服务器上如何屏蔽特定IP的访问,希望对大家有所帮助. 第一种方法:通过iis中的ip地址和域名限制. 此方法简单有效,建议使用 点击网站--右键属性--目录安全性--IP地 ...
- 说说Python程序的执行过程
1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在.如果是解释型语言, ...