无法通过oozie运行shell脚本

时间:2019-08-01 14:27:11

标签: shell action oozie

我正在尝试运行仅通过oozie工作流程通过mkdir命令创建目录的Shell脚本。

我正在使用HDP 2.6.5 | Oozie 4.2.0

错误消息始终为:

  

java.io.IOException:无法运行程序“ test.sh”(在目录中   “ / hadoop / yarn / local / usercache / whorchani / appcache / application_1547225966242_3390 / container_e111_1547225966242_3390_01_000002”):   错误= 2,没有这样的文件或目录

1 个答案:

答案 0 :(得分:0)

如果您至少不发布有关相关操作的Oozie XML,将很难回答您的问题。我的猜测是您没有使用<file>标签。

来自Mohammad Kamrul Islam和Aravind Srinivasan的 Apache Oozie

  

由于shell命令在任何Hadoop节点上运行,因此您需要了解二进制文件在这些节点上的路径。该可执行文件必须在节点上可用,或者由操作通过使用<file>标签的分布式缓存复制。对于未通过缓存复制的节点上的二进制文件,如果始终使用绝对路径,则可能更安全,更容易调试。

这是一个简单的shell操作示例:

    <action name="shell_action">
        <shell xmlns = "uri:oozie:shell-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <exec>sh</exec>
            <argument>my_shell_script.sh</argument>
            <file>/full/hdfs/path/to/your/script/my_shell_script.sh</file>
        </shell>
        <ok to="action2"/>
        <error to="fail"/>
    </action>