2015-07-08 12 views
7

Sto eseguendo un filtro in Spark utilizzando Filato e ricevendo l'errore di seguito. Qualsiasi aiuto è apprezzato, ma la mia domanda principale riguarda il motivo per cui il file non viene trovato.In che modo Spark on Yarn memorizza i file mescolati?

/HDATA/10/filato/nm/usercache/spettinato/AppCache/application_1428497227446_131967/scintilla-local-20.150.708,124954 millions-aa00/05/merged_shuffle_1_343_1

Sembra che Spark non riesce a trovare un file che ha stato memorizzato su HDFS dopo essere stato mescolato.

Perché Spark accede alla directory "/ hdata /"? Questa directory non esiste in HDFS, dovrebbe essere una directory locale o una directory HDFS?
Posso configurare la posizione in cui sono memorizzati i dati shuffled?

15/07/08 12:57:03 WARN TaskSetManager: Loss was due to java.io.FileNotFoundException 
java.io.FileNotFoundException: /hdata/10/yarn/nm/usercache/spettinato/appcache/application_1428497227446_131967/spark-local-20150708124954-aa00/05/merged_shuffle_1_343_1 (No such file or directory) 
     at java.io.FileOutputStream.open(Native Method) 
     at java.io.FileOutputStream.<init>(FileOutputStream.java:221) 
     at org.apache.spark.storage.DiskBlockObjectWriter.open(BlockObjectWriter.scala:116) 
     at org.apache.spark.storage.DiskBlockObjectWriter.write(BlockObjectWriter.scala:177) 
     at org.apache.spark.scheduler.ShuffleMapTask$$anonfun$runTask$1.apply(ShuffleMapTask.scala:161) 
     at org.apache.spark.scheduler.ShuffleMapTask$$anonfun$runTask$1.apply(ShuffleMapTask.scala:158) 
     at scala.collection.Iterator$class.foreach(Iterator.scala:727) 
     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) 
     at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:158) 
     at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:99) 
     at org.apache.spark.scheduler.Task.run(Task.scala:51) 
     at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:187) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 

EDIT: Ho capito un po 'di questo. La directory configurata da spark.local.dir è la directory locale utilizzata per archiviare gli RDD sul disco come da http://spark.apache.org/docs/latest/configuration.html

risposta

2

La risposta più probabile è che il compito sia morto. Ad esempio da OutOfMemory o altra eccezione.

4

Ti suggerisco di verificare lo spazio lasciato sul tuo sistema. Direi come Carlos che il compito è morto, e che la ragione è che la scintilla non potrebbe scrivere un file shuffle a causa della mancanza di spazio.

Prova grepping java.io.IOException: No space left on device nella directory ./work dei tuoi dipendenti.

+1

Sì, lo abbiamo osservato esattamente con 'FileNotFoundException'. L'errore "Spazio vuoto sul dispositivo" è apparso per alcune esecuzioni di lavori ma non per altri, per qualche motivo. – Mifeet

Problemi correlati