shell - Oozie - Hadoop 命令未执行 (Shell)

标签 shell hadoop cloudera oozie hue

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

执行相同时出现以下错误

Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [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>)

工作流.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 命令。

最佳答案

shell 操作的问题是 shell 作业被部署为“mapred”用户。由于上面是从 mapred 用户以外的用户帐户部署 oozie 作业,因此引发了权限被拒绝的错误。解决此问题的方法是将 HADOOP_USER_NAME 环境变量设置为您部署 oozie 工作流的用户帐户名称。

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

关于shell - Oozie - Hadoop 命令未执行 (Shell),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35570890/

相关文章:

git - 通过 shell 变量将配置选项传递给 git clone

hadoop - 弹性 MapReduce 上的 Mahout : Java Heap Space

从 Cassandra 读取的 Hadoop 作业似乎只在主机上运行(从机完全空闲)

hadoop - 是否可以在配置单元外部表中压缩 json?

bash - bash shell 脚本中的 "set -o noglob"

bash - 在其余命令行参数之前搜索一个命令行参数

scala - 使用scala在 Spark 中创建对RDD

hadoop - Hive 中的序列号 UDF

Hadoop UI Web 界面

shell - 查找在 shell 中的另一个文件的五天内创建的文件