Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oozie--java:未找到命令-shell操作_Shell_Hadoop_Oozie - Fatal编程技术网

Oozie--java:未找到命令-shell操作

Oozie--java:未找到命令-shell操作,shell,hadoop,oozie,Shell,Hadoop,Oozie,我正在通过Oozie从shell脚本运行java程序,我得到以下错误 java: command not found 当我从边缘节点运行shell脚本时,我没有发现任何问题,java类运行时没有任何错误,我也得到了所需的输出。但是,oozie作业无法运行java命令 oozie中的所有其他操作都会相应地执行,但当它遇到java行时,就会抛出上述错误。我知道Hadoop集群中的所有节点都将安装Java,那么为什么会出现此错误? 下面是我在shell脚本中使用的java命令 ... ...

我正在通过Oozie从shell脚本运行java程序,我得到以下错误

java: command not found
当我从边缘节点运行shell脚本时,我没有发现任何问题,java类运行时没有任何错误,我也得到了所需的输出。但是,oozie作业无法运行java命令

oozie中的所有其他操作都会相应地执行,但当它遇到
java
行时,就会抛出上述错误。我知道Hadoop集群中的所有节点都将安装Java,那么为什么会出现此错误? 下面是我在shell脚本中使用的java命令

...
...    
java -cp $LOCAL_DIR/libs/integration-tools.jar com.audit.reporting.GenerateExcelReport $LOCAL_DIR/input.txt $LOCAL_DIR/
...

请提供您的想法。

您是否在hdfs位置有integration-tools.jar和代码jar? Oozie可以选择任何节点来运行java操作,它将在该位置查找这些jar。

“问题已解决”

后来我与我的DevOps交谈,发现Java的类路径没有在集群中的几个数据节点中设置。这是停止shell操作以在这些数据节点上调用JVM。 修复类路径后,作业成功运行。
@Charles Duffy提到的所有注释都是有效的。

java:command not found
通常表示您的
路径
不包括
java
命令的位置。将此环境中的
echo“$PATH”
与可以成功调用JVM的环境中的
echo“$PATH”
进行比较……当然,可以安装Java,但问题是它的安装位置当前是否在当前进程的路径中。许多操作系统将JVM安装在
/usr/lib/JVM/java8 jre bin
之类的位置,并且守护进程的路径中可能没有该位置(无论确切的相关/正确位置是什么)。顺便说一下,所有caps名称都用于对操作系统或shell有意义的变量,而至少有一个小写字符的名称保留给应用程序使用,以防止应用程序错误地覆盖有意义的名称。请参阅此处的相关POSIX规范,它似乎是找不到JVM本身,而不是找不到JAR。我支持@CharlesDuffy,因为错误清楚地表明
java:command-found
,这清楚地表明未安装java或未在类路径中设置java的位置。