使用Hue创建Ssh的Oozie工作流时重定向输出日志报错分析

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.问题描述


Fayson前面的一篇文章讲过《如何在Hue中创建Ssh的Oozie工作流》。但当重定向输出日志时,会出现异常。

Ssh Action的Oozie工作流创建如下:

运行异常日志如下,提示:代码块部分可以左右滑动查看噢

2017-12-28 10:31:08,065 ERROR org.apache.oozie.command.wf.ActionStartXCommand: SERVER[ec2-13-250-16-231.ap-southeast-1.compute.amazonaws.com] USER[fayson] GROUP[-] TOKEN[] APP[My Workflow] JOB[0000002-171228101033150-oozie-oozi-W] ACTION[0000002-171228101033150-oozie-oozi-W@ssh-8911] Exception, 
java.lang.IllegalArgumentException: externalId cannot be empty
   at org.apache.oozie.util.ParamChecker.notEmpty(ParamChecker.java:90)
   at org.apache.oozie.util.ParamChecker.notEmpty(ParamChecker.java:74)
   at org.apache.oozie.WorkflowActionBean.setStartData(WorkflowActionBean.java:503)
   at org.apache.oozie.command.wf.ActionXCommand$ActionExecutorContext.setStartData(ActionXCommand.java:387)
   at org.apache.oozie.action.ssh.SshActionExecutor.start(SshActionExecutor.java:269)
   at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:232)
   at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:63)
   at org.apache.oozie.command.XCommand.call(XCommand.java:286)
   at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:332)
   at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:261)
   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   at org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:179)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:748)
2017-12-28 10:31:08,065 WARN org.apache.oozie.service.CallableQueueService$CompositeCallable: SERVER[ec2-13-250-16-231.ap-southeast-1.compute.amazonaws.com] USER[fayson] GROUP[-] TOKEN[] APP[My Workflow] JOB[0000002-171228101033150-oozie-oozi-W] ACTION[0000002-171228101033150-oozie-oozi-W@ssh-8911] exception callable [action.start], E0607: Other error in operation [action.start], externalId cannot be empty
org.apache.oozie.command.CommandException: E0607: Other error in operation [action.start], externalId cannot be empty
   at org.apache.oozie.command.XCommand.call(XCommand.java:326)
   at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:332)
   at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:261)
   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   at org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:179)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: externalId cannot be empty
   at org.apache.oozie.util.ParamChecker.notEmpty(ParamChecker.java:90)
   at org.apache.oozie.util.ParamChecker.notEmpty(ParamChecker.java:74)
   at org.apache.oozie.WorkflowActionBean.setStartData(WorkflowActionBean.java:503)
   at org.apache.oozie.command.wf.ActionXCommand$ActionExecutorContext.setStartData(ActionXCommand.java:387)
   at org.apache.oozie.action.ssh.SshActionExecutor.start(SshActionExecutor.java:269)
   at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:232)
   at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:63)
   at org.apache.oozie.command.XCommand.call(XCommand.java:286)
   ... 7 more
2017-12-28 10:31:10,081 INFO org.apache.oozie.servlet.CallbackServlet: SERVER[ec2-13-250-16-231.ap-southeast-1.compute.amazonaws.com] USER[-] GROUP[-] TOKEN[-] APP[-] JOB[0000002-171228101033150-oozie-oozi-W] ACTION[0000002-171228101033150-oozie-oozi-W@ssh-8911] callback for action [0000002-171228101033150-oozie-oozi-W@ssh-8911]

2.解决方法


通过上述方式创建Ssh Action工作流主要是由于”>> /tmp/out.log”引起,如果只是执行“ls /”,Ssh Action是可以正常运行成功的,可以通过如下方式实现:

1.在要执行命令的服务上创建一个shell脚本,脚本内容如下:

 [fayson@ip-172-31-22-86 ~]$ vim ssh-action.sh
#!/bin/bash

ls / >> /tmp/out.log

2.设置ssh-action.sh执行权限,只有fayson用户可以执行该脚本

[fayson@ip-172-31-22-86 ~]$ chmod 744 ssh-action.sh

3.创建Ssh Action工作流

在Ssh command中配置对应服务的Shell脚本”/home/fayson/ssh-action.sh”

4.提交Oozie工作流,执行成功

5.查看服务/tmp/out.log文件

3.总结


  • 在使用Hue创建Ssh Action的Oozie工作流直接在Ssh command中输入命令重定向会导致运行失败,可以使用在执行命令的目标服务使用Shell脚本的方式实现该功能。

这里Fayson在做测试的时候发现,在命令行前面添加”;”也可以实现重定向输出日志,实现如下(这种实现方式比较诡异,仅供参考):

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏about云

spark1.x升级spark2如何升级及需要考虑的问题

问题导读 1.spark2升级哪些内容变化? 2.升级中spark哪些没有发生变化? 3.cloudera中,spark1和spark2能否并存? 4.升级后...

1.4K40
来自专栏about云

TensorFlow ML cookbook 第一章7、8节 实现激活功能和使用数据源

问题导读: 1、TensorFlow中有哪些激活函数? 2、如何运行激活函数? 3、TensorFlow有哪些数据源? 4、如何获得及使用数据源? 上...

52780
来自专栏运维技术迷

shell获取每月最后一天

通过判断明天是不是1号,来确定当前时间是不是最后一天。 #!/usr/bin/env bash if [ `date -d tomorrow +\%e` -eq...

94450
来自专栏FreeBuf

窃取SSH凭证的另一种方法

不久前,我曾写过一篇关于使用strace来获取ssh密码的文章。但该方法并不是时常有效的,因为在不同的发行版上strace的输出并不相同。所以在本文中,我将为大...

32960
来自专栏张戈的专栏

Cygwin:Windows下的Linux终端模拟器

提到 Linux 学习,可能很多童鞋都会说,不是我不想学,而是真的没有一个好的 linux 环境:装了 linux 吧,有时又会想回 Windows 玩玩游戏娱...

83630
来自专栏about云

日志分析实战之清洗日志小实例3:如何在spark shell中导入自定义包

问题导读 1.自定义包,本文放到哪个路径下面? 2.复制包之后,需要做哪些权限操作? 3.如何验证导入是否成功? ? 在复制到Linux中,首...

32740
来自专栏张戈的专栏

紧急扩散:Linux系统bash严重安全漏洞CVE-2014-6271的检测及修复方法

今天白天,重量网络在群里提醒我,说 Linux 出现了严重的 bash 漏洞,一直在忙也没怎么关注,晚上空闲看了下,发现确实非常严重,必须紧急扩散出去,防止服务...

37070
来自专栏张戈的专栏

硬盘故障时如何强制关机:Input/output error

如果硬盘可能会出现锁死或坏道的故障,会造成 SHELL 命令的失效,包括 reboot,powoff,,shutdown,用正常的命令是没法完成重启的。 执行这...

41040
来自专栏运维技术迷

MySQL数据库(八):表记录的基本操作(增删改查)

一、增 insert:增加(条件一条新纪录,默认新添加的记录都添加在已有记录的末尾) 1.格式: 1.1添加新纪录时,只给记录中的某几个字段赋值 inser...

766110
来自专栏张戈的专栏

Shell脚本的简单排错法及调试程序bashdb

Jboss 的研究稍有卡壳,那就来点基础教程好了。 与众多脚本语言一样,Shell 脚本在执行时出错是很常见的,最简单的原因无外乎脚本在编写的过程中出现了语法错...

45760

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励