我在部署Spark-1.2.0集群(1master-3worker)之后,使用start-all.sh啟動集群時沒有問題,在webui上也能看到worker狀態。
但是我提交任務到集群或者是啟動spark-shell的時候,master會不停的報出錯誤如下:
[ERROR] [Logging.scala:75] logError: Asked to remove non-existent executor 0
[ERROR] [Logging.scala:75] logError: Asked to remove non-existent executor 1
[ERROR] [Logging.scala:75] logError: Asked to remove non-existent executor 2
[ERROR] [Logging.scala:75] logError: Asked to remove non-existent executor 3
...
而worker節點上Error log中為:
[ERROR] [Logging.scala:96] logError: Error running executor java.io.IOException: Cannot run program "/bin/java" (in directory "/usr/local/spark-1.2.0/work/app-20150113194629-0001/9"): error=2, 沒有那個檔案或目錄 at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.apache.spark.deploy.worker.ExecutorRunner.fetchAndRunExecutor(ExecutorRunner.scala:135) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:65) Caused by: java.io.IOException: error=2, 沒有那個檔案或目錄 at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:187) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
我Google了很久也沒發現有類似問題出現,望老師能給予幫助。
謝謝。
uj5u.com熱心網友回復:
已解決原來不是通信問題,仔細看了下log,是說在指定的位置(SPARK_HOME/work/app_xxxxxxx/0)無法執行'/bin/java',頓時感覺到還是環境設定的問題。回過頭來檢查SPARK_HOME/conf/spark-env.sh,檔案里第一行配置了JAVA_HOME=${JAVA_HOME},原以為這樣可以取到系統設定的JAVA_HOME配置,但輸出了一下發現,centOS 或者 Mac OS里的jdk 是我自己安裝的,不知為何,在spark里這樣配置無效。
將spark-env.sh里的JAVA_HOME配置注釋掉就可以正常啟動spark和提交spark任務了。
uj5u.com熱心網友回復:
頂一下,以備后續必要時候查看轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/97241.html
標籤:Spark
