Oozie Shell行动问题



我试图通过shell操作实现一个简单的ls命令,但我遇到了一个错误,

确切问题: 脚本:

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

stdout日志:

>>> 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日志:

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,它也有子目录。

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

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

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

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

最新更新