使用Hue创建Ssh的Oozie工作流时重定向输出日志报错分析
时间:2022-05-06
本文章向大家介绍使用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在做测试的时候发现,在命令行前面添加”;”也可以实现重定向输出日志,实现如下(这种实现方式比较诡异,仅供参考):
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看
- [译]clearfix改良及overflow:hidden详解
- 深入解析CSS样式层叠权重值
- [译]CSS边框实现“无图化”设计
- 自适应的多列图文混排改进
- [译]Laravel 5.0 之运行环境及环境变量
- 90行代码,搞定日志监控框架
- Laravel Migrate 中的 Fresh 和 Refresh 命令
- 框架组件,究竟要不要自研?
- Nginx泛解析到子目录,自动判断有无public目录
- 撩妹必备,3行代码伪造出一个“好莱坞黑客”屏幕
- [译]Laravel 5.0 之事件调度程序 (定时任务)
- Laravel 5.5 在浏览器中渲染 Mailable 类型
- Laravel 5.4 及 5.5 中的全新字符串辅助方法
- Laravel 5.5 的自定义验证对象/类
- 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 数组属性和方法
- [Maven]告警[WARNING] Unable to create Maven project from repository.
- Head First设计模式——复合模式
- [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]
- 【每日一题】32. Longest Valid Parentheses
- 面经手册 · 第3篇《HashMap核心知识,扰动函数、负载因子、扩容链表拆分深度学习(+实践验证)》
- Head First设计模式——桥接模式
- Head First设计模式——生成器模式和责任链模式
- Head First设计模式——蝇量模式和解释器模式
- 【每日一题】33. Search in Rotated Sorted Array
- 【每日一题】34. Find First and Last Position of Element in Sorted Array
- 【每日一题】35. Search Insert Position
- Head First设计模式——原型模式和访问者模式
- Java 新特性前瞻:封印类
- 每天手撕一道算法题-130. 被围绕的区域
- C#实现前向最大匹、字典树(分词、检索)