You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oozie.apache.org by "ywheel (JIRA)" <ji...@apache.org> on 2016/06/16 13:43:05 UTC
[jira] [Commented] (OOZIE-2576) Oozie ssh action Cannot run program
"scp"
[ https://issues.apache.org/jira/browse/OOZIE-2576?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15333797#comment-15333797 ]
ywheel commented on OOZIE-2576:
-------------------------------
The exception should be thrown by `executeCommand` for SCP command, you can find it in line 376 in SshActionExecutor
{noformat}
command = XLog.format("{0}{1}/ssh-base.sh {2}/ssh-wrapper.sh {3}:{4}", SCP_COMMAND_BASE, localDirLocation,
localDirLocation, host, remoteDirLocation);
executeCommand(command);
{noformat}
Does anybody know why?
> Oozie ssh action Cannot run program "scp"
> -----------------------------------------
>
> Key: OOZIE-2576
> URL: https://issues.apache.org/jira/browse/OOZIE-2576
> Project: Oozie
> Issue Type: Bug
> Components: action
> Affects Versions: 4.0.0
> Environment: Oozie server build version: 4.0.0-cdh5.2.0
> Reporter: ywheel
> Priority: Blocker
>
> We used oozie ssh action in a production environment, the following xml codes is the example:
> {noformat}
> <workflow-app name="TestSsh" xmlns="uri:oozie:workflow:0.4">
> <start to="ShellAction"/>
> <action name="ShellAction">
> <ssh xmlns="uri:oozie:ssh-action:0.1">
> <host>root@192.168.1.154</host>
> <command>sh /tmp/test.sh</command>
> <capture-output/>
> </ssh>
> <ok to="end"/>
> <error to="kill"/>
> </action>
> <kill name="kill">
> <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
> </kill>
> <end name="end"/>
> </workflow-app>
> {noformat}
> However, we meet the errors below:
> {noformat}
> 2016-06-12 22:30:54,713 INFO org.apache.oozie.action.ssh.SshActionExecutor: SERVER[Master] USER[hdfs] GROUP[-] TOKEN[] APP[TestSsh] JOB[0000201-160113124428061-oozie-oozi-W] ACTION[0000201-160113124428061-oozie-oozi-W@ShellAction] Attempting to copy ssh base scripts to remote host [root@192.168.1.154]
> 2016-06-12 22:30:54,869 WARN org.apache.oozie.action.ssh.SshActionExecutor: SERVER[Master] USER[hdfs] GROUP[-] TOKEN[] APP[TestSsh] JOB[0000201-160113124428061-oozie-oozi-W] ACTION[0000201-160113124428061-oozie-oozi-W@ShellAction] Error while executing ssh EXECUTION
> 2016-06-12 22:30:54,870 WARN org.apache.oozie.command.wf.ActionStartXCommand: SERVER[Master] USER[hdfs] GROUP[-] TOKEN[] APP[TestSsh] JOB[0000201-160113124428061-oozie-oozi-W] ACTION[0000201-160113124428061-oozie-oozi-W@ShellAction] Error starting action [ShellAction]. ErrorType [ERROR], ErrorCode [UNKOWN_ERROR], Message [UNKOWN_ERROR: Cannot run program "scp": error=2, No such file or directory]
> org.apache.oozie.action.ActionExecutorException: UNKOWN_ERROR: Cannot run program "scp": error=2, No such file or directory
> at org.apache.oozie.action.ssh.SshActionExecutor.execute(SshActionExecutor.java:599)
> at org.apache.oozie.action.ssh.SshActionExecutor.start(SshActionExecutor.java:204)
> at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:228)
> at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:63)
> at org.apache.oozie.command.XCommand.call(XCommand.java:281)
> at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:323)
> at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:252)
> at org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:174)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:744)
> Caused by: java.io.IOException: Cannot run program "scp": error=2, No such file or directory
> at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
> at java.lang.Runtime.exec(Runtime.java:617)
> at java.lang.Runtime.exec(Runtime.java:485)
> at org.apache.oozie.action.ssh.SshActionExecutor.executeCommand(SshActionExecutor.java:332)
> at org.apache.oozie.action.ssh.SshActionExecutor.setupRemote(SshActionExecutor.java:376)
> at org.apache.oozie.action.ssh.SshActionExecutor$1.call(SshActionExecutor.java:206)
> at org.apache.oozie.action.ssh.SshActionExecutor$1.call(SshActionExecutor.java:204)
> at org.apache.oozie.action.ssh.SshActionExecutor.execute(SshActionExecutor.java:548)
> ... 10 more
> Caused by: java.io.IOException: error=2, No such file or directory
> at java.lang.UNIXProcess.forkAndExec(Native Method)
> at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
> at java.lang.ProcessImpl.start(ProcessImpl.java:130)
> at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
> ... 17 more
> {noformat}
> I checked the codes in {{org.apache.oozie.action.ssh.SshActionExecutor}} class, and I found oozie would execute 'scp' command to copy two files(ssh-base.sh,ssh-wrapper.sh) to the workspace folder on remote host. But the logs could not show any information about which file is not found.
> The workspace folder on remote host was created so the 'ssh'+ 'mkdir' command was executed successfully before 'scp', which means the authentication from oozie server to remote host is correct.
> And I tried the following command to scp that two shell files manually:
> {noformat}
> scp -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 /var/run/cloudera-scm-agent/process/3518-oozie-OOZIE_SERVER/temp/oozie-oozi2411540976346867728.dir/ssh/ssh-base.sh /var/run/cloudera-scm-agent/process/-oozie-OOZIE_SERVER/temp/oozie-oozi4864889223161337030.dir/ssh/ssh-wrapper.sh root@remotehost:oozie-oozi/0000201-160113124428061-oozie-oozi-W/ShellAction--ssh/
> {noformat}
> It works by manually but why oozie server could not run 'scp'?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)