2016-07-13 99 views
6

l'esecuzione di un'applicazione Python Spark tramite chiamata API - Sulla presentazione della domanda - risposta - non riuscito SSH nella Worker esisteErrore SparkContext - File non trovato/tmp/candele-eventi non esiste

mia domanda di pitone in

/root/spark/work/driver-id/wordcount.py 

errore può essere trovato in

/root/spark/work/driver-id/stderr 

Mostra il seguente errore -

Traceback (most recent call last): 
    File "/root/wordcount.py", line 34, in <module> 
    main() 
    File "/root/wordcount.py", line 18, in main 
    sc = SparkContext(conf=conf) 
    File "/root/spark/python/lib/pyspark.zip/pyspark/context.py", line 115, in __init__ 
    File "/root/spark/python/lib/pyspark.zip/pyspark/context.py", line 172, in _do_init 
    File "/root/spark/python/lib/pyspark.zip/pyspark/context.py", line 235, in _initialize_context 
    File "/root/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 1064, in __call__ 
    File "/root/spark/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in get_return_value 
py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext. 
: java.io.FileNotFoundException: File file:/tmp/spark-events does not exist. 
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:402) 
    at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:255) 
    at org.apache.spark.scheduler.EventLoggingListener.start(EventLoggingListener.scala:100) 
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:549) 
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:59) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:234) 
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381) 
    at py4j.Gateway.invoke(Gateway.java:214) 
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:79) 
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:68) 
    at py4j.GatewayConnection.run(GatewayConnection.java:209) 
    at java.lang.Thread.run(Thread.java:745) 

Indica -/non esiste tmp/scintilla-events - che è vero Tuttavia, in wordcount.py

from pyspark import SparkContext, SparkConf 

... few more lines ... 

def main(): 
    conf = SparkConf().setAppName("MyApp").setMaster("spark://ec2-54-209-108-127.compute-1.amazonaws.com:7077") 
    sc = SparkContext(conf=conf) 
    sc.stop() 

if __name__ == "__main__": 
    main() 
+0

Disabilitare la registrazione di eventi potrebbe aiutare: directory creando 'SparkConf() set ("spark.eventLog.enabled", "false") ...' – asmaier

risposta

7

/tmp/spark-events è la posizione che memorizzano Spark gli eventi log. Basta creare questa directory nella macchina master e sei pronto.

$mkdir /tmp/spark-events 
$ sudo /root/spark-ec2/copy-dir /tmp/spark-events/ 
RSYNC'ing /tmp/spark-events to slaves... 
ec2-54-175-163-32.compute-1.amazonaws.com 
+0

provato. nella macchina principale. Ritentata la chiamata API. Errore persiste –

+0

Ohk. Quindi ho dovuto replicare lo stesso attraverso i lavoratori. L'errore è stato risolto. Grazie –

5

Durante il tentativo di impostare il mio server storia scintilla sulla mia macchina locale, ho avuto lo stesso 'del file: non esiste/tmp/scintilla-eventi.' errore. Ho personalizzato la mia directory di registro su un percorso non predefinito. Per risolvere questo, avevo bisogno di fare 2 cose.

  1. modificare $ SPARK_HOME/conf/scintilla defaults.conf - aggiungono queste 2 righe spark.history.fs.logDirectory /mycustomdir spark.eventLog.enabled true
  2. creare un collegamento da/tmp/spark-eventi/mycustomdir.
    ln -fs /tmp/spark-events /mycustomdir Idealmente, il passaggio 1 avrebbe risolto completamente il problema, ma avevo ancora bisogno di creare il collegamento, quindi ho il sospetto che potrebbe esserci stata un'altra impostazione che ho perso. Comunque, una volta fatto questo, sono stato in grado di eseguire il mio storyserver e vedere nuovi lavori registrati nel mio webui.
+0

ha funzionato da me ma ho dovuto creare il collegamento simbolico con l'ordine inverso.Ho fatto ln -fs/mycustomdir./tmp/spark-eventi – george

0

Ho appena creato /tmp/spark-events sul nodo {master} e poi lo ho distribuito ad altri nodi sul cluster per funzionare.

mkdir /tmp/spark-events 
rsync -a /tmp/spark-events {slaves}:/tmp/spark-events 

mia scintilla default.conf:

spark.history.ui.port=18080 
spark.eventLog.enabled=true 
spark.history.fs.logDirectory=hdfs:///home/elon/spark/events