博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过shell脚本来rerun一个oozie调度失败的job,从而可以跳过执行失败的节点
阅读量:6070 次
发布时间:2019-06-20

本文共 1158 字,大约阅读时间需要 3 分钟。

标题很长:通过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="3306"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[0]} ${arr[1]} >> job_rerun.log oozie job -rerun ${arr[0]} -refresh -action ${arr[1]} -D oozie.wf.rerun.failnodes=falsefi

 

转载地址:http://mrygx.baihongyu.com/

你可能感兴趣的文章
前端_JavaScript_语法篇
查看>>
Android 原生app获取用户授权访问Autodesk云应用数据
查看>>
php原生上拉加载,点击加载更多(jQuery,ajax,mysql)
查看>>
介绍什么是极限编程?
查看>>
text-fill-color:仿苹果官网介绍效果 CSS设置文字渐变效果 文字背景图遮罩
查看>>
Django-Signals信号量
查看>>
CSS实用技巧
查看>>
canvas学习总结
查看>>
Java程序员月薪达到三万,需要技术水平达到什么程度?
查看>>
7天玩转机器学习
查看>>
CentOS 7 编译安装 PHP 7
查看>>
Mobx 源码阅读简记
查看>>
数据库条件查询
查看>>
Jekyll 动态地建立静态博客网站 (Get Started)
查看>>
阿里开发者们的第14个感悟:技术拓宽价值边界
查看>>
superset 性能优化1-已经使用中的superset更改默认数据源sqlite到mysql
查看>>
Vue中用props给data赋初始值遇到的问题
查看>>
CSS中的多种居中方式
查看>>
gof23行为类模式(golang版)
查看>>
《你不知道的javascript》笔记_作用域与闭包
查看>>