当我在包含外壳程序脚本的oozie上运行工作流时,出现错误。纱线应用日志显示错误:
>>> Invoking Shell command line now >>
Exit code of the Shell command 1
<<< Invocation of Shell command completed <<<
我要从ftp服务器上下载文件,并使用oozie工作流程将其放置到hdfs路径。我用shell脚本定义工作流程
在Shell脚本中,我使用wget
下载文件,然后使用hdfs dfs -put
命令将文件从本地加载到hdfs
在主节点上运行shell脚本时,它可以正常工作。 这是shell脚本:(sample.sh)
wget ftp://ftpserver/test.txt
hdfs dfs -put test.txt hdfs://master1:8020/user/ambari-qa
我有拖带问题:
1-当我独自运行wget
时。我在oozie的工作成功完成。但我不知道test.txt
的位置??? (哪个路径保存了test.txt
)。我尝试使用此命令为wget ftp://ftpserver/test.txt -P /home/ambari-qa
定义路径,但是当我在脚本中使用/home/ambari-qa
本地路径时,作业被杀死。
2-当我单独使用hdfs dfs -put
时,工作被杀死。我不知道何时在脚本中使用hdfs dfs
命令,然后我的工作被杀死了。
当我在oozie中使用它时,考虑到我的shell脚本有问题,我必须更改它。请在我的shell脚本中建议正确的命令
oozieworkflow.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<workflow-app xmlns="uri:oozie:workflow:0.5" name="test">
<start to="shell_1"/>
<action name="shell_1">
<shell xmlns="uri:oozie:shell-action:0.3">
<job-tracker>${resourceManager}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>/user/ambari-qa/sample.sh</exec>
<file>/user/ambari-qa/sample.sh</file>
</shell>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>${wf:errorMessage(wf:lastErrorNode())}</message>
</kill>
<end name="end"/>
</workflow-app>
答案 0 :(得分:0)
如果您有无效的 shell 脚本导致代码不同于 0,则此错误不会提供信息。考虑到这一点,您应该首先检查可能导致问题的 bash 的正确 EOL 或其他行为,然后尝试使用 oozie。