hue执行workflow工作流出现直接FAILED

场景:

执行以下任务流的时候就出现了直接失败的情况

在第一次执行并且数据完善的情况下测试的,状态是成功的

但是第二次是在第一次基础上测试的,基础数据有所缺失

日志为:

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]

Oozie Launcher failed, finishing Hadoop job gracefully
Oozie Launcher, uploading action data to HDFS sequence file: hdfs://master:8020/user/yarn/oozie-oozi/0000001-210222093847775-oozie-oozi-W/shell-0b5f--shell/action-data.seq
Successfully reset security manager from org.apache.oozie.action.hadoop.LauncherSecurityManager@314b8f2d to null
Oozie Launcher ends

分析:

1、所有脚本都是这样,还是极个别脚本引起的异常失败整个工作流

2、是否和数据有关(大概率),为什么

然后之后做了一系列的测试工作,先是把两种不同数据源的脚本分开测试,得到的就是日志脚本的问题,就是没有数据的情况下会执行错误 KILLED

为什么呢?

因为shell脚本直接报的KILLED,导致程序直接异常退出

怎么规避呢

在这种情况下出现两种猜想和解决方法

  1. oozie有没有可以直接配置的方法直接跳过任务流某个节点脚本的任务状态FAILED(直接异常停止了脚本),这样能够保证在所有环节里面都能够正常执行而不会因为某些无法避免的错误而停止整个流程
  2. 脚本控制,通过查询hdfs上面是否有相关数据文件的方法进行脚本内命令执行控制

通过查阅资料和相关论坛,都没有找到第一种方法的配置,所以只有第二种方法进行

具体实现方法,在shell脚本中加入相关判断

具体如下:

# 限制 不然会出现异常退出导致任务流失败
hadoop fs -test -e /origin_data/marketing_system/log/topic_start/$do_date
if [ $? -eq 0 ] ;then
 hadoop fs -test -e /origin_data/marketing_system/log/topic_start/$do_date/*.lzo
 if [ $? -eq 0 ]; then
    num=1
 fi
else
 num=2
fi

if [ ${num} -eq 1 ];then
  hive -e "$sql"
  hdfs dfs -rm -r /origin_data/marketing_system/log/topic_start/$do_date/
fi

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值