Когда я запускал искровую программу в кластере, я получил эту ошибку в журнале:
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
).
Каковы причины этого исключения? Как его исправить?
Я столкнулся с той же проблемой в Ubuntu 12.04 и исправил ее, добавив JAVA_HOME
в /etc/environment
.
В оболочке вы привыкли работать с java
и разрешать оболочке обращаться к PATH
чтобы найти, где она находится. Здесь вы вызываете команду непосредственно в ОС. Он не может найти java
как он говорит. Вы можете использовать оболочку типа bash
для вызова команды для вас или указать полный путь к java
.
Но почему? почему бы не запустить Java-код внутри рабочего?
Проверьте версию 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
.
Else set java home в .bashrc
export JAVA_HOME=/cloud/packages/jdk1.6.0_38
export PATH=$PATH:$JAVA_HOME/bin
java -version
результат: Java версии "1.6.0_38" Java (TM) SE Runtime Environment (сборка 1.6.0_38-B05) Java HotSpot (TM) 64-разрядного сервера VM (сборка 20.13-B02, смешанный режим)