我将使用在oozie工作流程上运行的Shell脚本将特定文件放入hdfs。运行shell脚本时我出错了,我的工作被杀了

时间:2018-07-29 12:13:55

标签: shell hadoop hdfs workflow oozie

当我在包含外壳程序脚本的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>

1 个答案:

答案 0 :(得分:0)

如果您有无效的 shell 脚本导致代码不同于 0,则此错误不会提供信息。考虑到这一点,您应该首先检查可能导致问题的 bash 的正确 EOL 或其他行为,然后尝试使用 oozie。