2015-04-24 8 views
23

Sto distribuendo un lavoro di elaborazione dati Spark su un cluster EC2, il lavoro è piccolo per il cluster (16 core con 120G RAM in totale), il più grande RDD ha solo 76k + righe. Ma fortemente distorto nel mezzo (quindi richiede il ripartizionamento) e ogni riga ha circa 100k di dati dopo la serializzazione. Il lavoro è sempre rimasto bloccato nel ripartizionamento. Vale a dire, il lavoro sarà costantemente ottenere seguenti errori e tentativi:Quali sono le probabili cause di org.apache.spark.shuffle.MetadataFetchFailedException: Manca un'ubicazione di output per shuffle?

org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle 

org.apache.spark.shuffle.FetchFailedException: Error in opening FileSegmentManagedBuffer 

org.apache.spark.shuffle.FetchFailedException: java.io.FileNotFoundException: /tmp/spark-... 

ho cercato di identificare il problema ma sembra che sia il consumo di memoria e disco della macchina gettando questi errori sono al di sotto del 50%. Ho anche provato diverse configurazioni, tra cui:

let driver/executor memory use 60% of total memory. 
let netty to priortize JVM shuffling buffer. 
increase shuffling streaming buffer to 128m. 
use KryoSerializer and max out all buffers 
increase shuffling memoryFraction to 0.4 

Ma nessuno di loro funziona. Il lavoro di piccole dimensioni genera sempre la stessa serie di errori e tentativi di max out (fino a 1000 volte). Come risolvere questa cosa in tale situazione?

Grazie mille se avete qualche idea.

risposta

12

Controllare il registro se si verifica un errore simile a questo.

ERROR 2015-05-12 17:29:16,984 Logging.scala:75 - Lost executor 13 on node-xzy: remote Akka client disassociated 

Ogni volta che si ottiene questo errore è perché si perde un esecutore. Perchè hai perso un esecutore, questa è un'altra storia, controlla di nuovo il tuo diario per trovare degli indizi.

Una cosa Yarn può uccidere il vostro lavoro, se si pensa che vedete si sta utilizzando "troppa memoria"

Verificare la presenza di qualcosa di simile:

org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl - Container [<edited>] is running beyond physical memory limits. Current usage: 18.0 GB of 18 GB physical memory used; 19.4 GB of 37.8 GB virtual memory used. Killing container. 

vedi anche: http://apache-spark-developers-list.1001551.n3.nabble.com/Lost-executor-on-YARN-ALS-iterations-td7916.html

Lo stato attuale della tecnica è quello di aumentare spark.yarn.executor.memoryOverhead fino a quando il lavoro non si interrompe. Abbiamo piani per provare a ridimensionare automaticamente questo in base alla quantità di memoria richiesta , ma sarà comunque solo un euristico.

+2

Grazie mille! Il mio problema è che sto semplicemente usando il master Spark Standalone. L'executor perso è davvero un problema per il grande shuffling, poiché ognuno impiega molto tempo a scrivere in una memoria non persistente e, una volta perso, deve essere ricominciato. Sto indagando se il checkpoint frequente può risolvere il problema – tribbloid

+0

Hai avuto un'idea di questo? – raam86

+0

Ho riscritto il mio flusso di lavoro da GC un po 'di RDD persistente manualmente e sostituendo altro persist() con checkpoint() per liberare più memoria e spazio. È scomparso per il momento. Ma considerando il profilo della memoria/consumo del disco quando si è verificato un errore, non dovrebbe accadere in primo luogo.Aggiornerò quando lo incontrerò di nuovo – tribbloid

1

ero anche ottenendo l'errore

org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle 

e guardando ulteriormente nel registro ho trovato

Container killed on request. Exit code is 143 

Dopo la ricerca per il codice di uscita, mi sono reso conto che è la sua riguardano principalmente l'allocazione di memoria. Quindi ho controllato la quantità di memoria che ho configurato per gli esecutori. Ho scoperto che per errore avevo configurato 7g per il driver e solo 1g per executor. Dopo aver aumentato la memoria dell'esecutore, il mio lavoro di scintilla è andato a buon fine.

Problemi correlati