无法在spark worker中运行java

时间:2014-04-24 04:13:20

标签: java apache-spark

当我在群集中运行spark程序时,我在日志中遇到了这个错误:

java.io.IOException: Cannot run program "java" (in directory "/cloud/packages/spark-0.9.0-incubating-bin-hadoop1/work/app-20140424114752-0000/0"): java.io.IOException: error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
    at org.apache.spark.deploy.worker.ExecutorRunner.fetchAndRunExecutor(ExecutorRunner.scala:129)
    at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:59)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
    at java.lang.ProcessImpl.start(ProcessImpl.java:65)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
    ... 2 more

我已设置JAVA_HOME(/cloud/packages/jdk1.6.0_38)和SPARK_HOME(/cloud/packages/spark-0.9.0-incubating-bin-hadoop1)。

这种例外的原因是什么?如何解决?

3 个答案:

答案 0 :(得分:2)

我在Ubuntu 12.04上遇到了同样的问题,并通过在JAVA_HOME中添加/etc/environment来解决此问题。

答案 1 :(得分:0)

检查您的java版本。

java -version

如果正确安装了Java,则显示Java版本。

如果不是安装java(Ubundu)

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

<强>更新

请检查echo $JAVA_HOME

另外在.bashrc

中设置java home
export JAVA_HOME=/cloud/packages/jdk1.6.0_38 
export PATH=$PATH:$JAVA_HOME/bin

答案 2 :(得分:0)

在shell中,您习惯于能够运行java并让shell咨询PATH以找到它的位置。在这里,您可以直接在OS中调用命令。它找不到java。您可以使用bash之类的shell为您调用命令,或提供java的完整路径。

为什么?为什么不在worker中运行Java代码?