当我在群集中运行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
)。
这种例外的原因是什么?如何解决?
答案 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
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代码?