Oozie壳牌行动问题

时间:2013-08-01 12:05:04

标签: apache bash cloudera oozie

我正在尝试通过shell操作实现一个简单的ls命令,但我面临一个错误,

确切问题: 脚本:

#!/bin/bash
ls /home/my-directory

stdout logs:

>>> Invoking Shell command line now >>
Exit code of the Shell command 2
<<< Invocation of Shell command completed <<<
<<< Invocation of Main class completed <<<
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]
Oozie Launcher failed, finishing Hadoop job gracefully
Oozie Launcher ends

stderr logs:

ls: cannot access /home/my-directory: No such file or directory
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]

有一个目录/ home / my-directory,它也有子目录。

如果有人能为我提供解决方案,那就太好了。

1 个答案:

答案 0 :(得分:2)

您无法控制群集中Oozie运行shell操作的节点。因此,您的脚本永远不应引用群集中任何特定节点的本地文件系统。

例如,假设您的群集包含两个节点NODE1和NODE2,并且您的脚本引用了NODE1 FS上的文件。当Oozie运行您的脚本时,它可以从NODE1或NODE2运行它(请记住 - 您将脚本,job.properties,workflow.xml放入HDFS,它分布在NODE1和NODE2上)。如果脚本是从NODE2运行的,那么您将得到No such file或directory error,因为该文件不存在于NODE2的本地FS上。

重要的一点是,您通过Oozie运行的任何脚本都必须仅引用HDFS中的路径和文件。如果需要从本地FS到一个节点的文件被引用,请将其放入HDFS并使用HDFS中的路径引用该文件。