我正在尝试运行仅通过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,没有这样的文件或目录
答案 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>