Oozie - Hadoop命令没有执行(Shell)

时间:2016-02-23 07:03:54

标签: shell hadoop cloudera oozie hue

我正在运行一个有hadoop命令的shell脚本。

执行相同的

时出现以下错误
  

主类[org.apache.oozie.action.hadoop.ShellMain],退出代码[1]

我正在使用Cloudera Hue - Oozie运行一个简单的shell脚本

但是当脚本没有hadoop命令时,它会成功执行。

我设置了oozie.use.system.libpath=true,可以看到我的库在

user/oozie/share/lib/<lib_timestmap>

以下是我尝试运行的shell脚本

#! /bin/bash
$(hadoop fs -mkdir /<location path>)

Wokflow.xml

<workflow-app name="Shell-copy" xmlns="uri:oozie:workflow:0.4">
    <start to="Shell-copy"/>
    <action name="Shell-copy">
        <shell xmlns="uri:oozie:shell-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <exec>test.sh</exec>
            <file>/user/hue/oozie/workspaces/_rrv9kor_-oozie-38-1455857816.12/test.sh#test.sh</file>
              <capture-output/>
        </shell>
        <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>
  • 带有hadoop命令的脚本抛出上述错误或显示为已成功完成,未处理任何hadoop命令且仅执行echo或其他shell命令。

1 个答案:

答案 0 :(得分:0)

shell操作的问题是shell作业被部署为“mapred”用户。由于以上是从mapred用户以外的用户帐户部署oozie作业,因此抛出了Permission Denied错误。解决此问题的方法是将HADOOP_USER_NAME环境变量设置为用于部署oozie工作流的用户帐户名。

<env-var>HADOOP_USER_NAME=user_name_goes_here</env-var>