2015-08-16 13 views
6

Ciao Ho scritto lavoro Spark che sembra funzionare bene per quasi un'ora e dopo che l'esecutore inizia a perdersi a causa del timeout vedo il seguente nella dichiarazione di registroSpark executor perso a causa del timeout anche dopo aver impostato un valore di timeout molto lungo 1000 secondi

15/08/16 12:26:46 WARN spark.HeartbeatReceiver: Removing executor 10 with no recent heartbeats: 1051638 ms exceeds timeout 1000000 ms 

io non vedo errori ma vedo sopra avvertimento e causa di esso esecutore viene rimosso da filo e vedo Rpc errore dissociato cliente e IOException Connection refused e FetchFailedException

Dopo esecutore viene rimosso Vedo che viene nuovamente aggiunto e inizia a funzionare e un altro gli esecutori falliscono di nuovo. La mia domanda è normale che l'esecutore si perda? Cosa succede a quel compito a cui gli esecutori persi stavano lavorando? Il lavoro di My Spark continua a funzionare poiché è lungo circa 4-5 ore. Ho un cluster molto buono con una memoria da 1.2 TB e un buon numero di core CPU. Per risolvere il problema di time out di cui sopra ho cercato di aumentare il tempo da spark.akka.timeout a 1000 secondi ma senza fortuna. Sto usando il seguente comando per eseguire il mio lavoro Spark. Per favore, sono una novità di Spark. Sto usando Spark 1.4.1. Grazie in anticipo.

./spark-submit --class com.xyz.abc.MySparkJob --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512M" --driver-java-options -XX:MaxPermSize=512m --driver-memory 4g --master yarn-client --executor-memory 25G --executor-cores 8 --num-executors 5 --jars /path/to/spark-job.jar 
+0

Alcune domande: la domanda è completa, anche con perdite dell'esecutore? È possibile attivare il debug in 'conf/log4j.properties.conf' e verificare se si dispone di maggiori dettagli sulle perdite di executor? – Bacon

+0

Risposta rapida per la domanda "A cosa è successo quel compito che gli esecutori persi stavano lavorando?": Spark la rilancerà (con un ID che assomiglia a: task 14.1) – Bacon

+0

Ciao Bacon grazie per l'applicazione di risposta non completa una volta l'esecutore inizia a perdersi anche se è stato aggiunto di nuovo alla fine ha perso di nuovo e non ha mai aggiunto di nuovo e nel disco di fine rimane che non può fare nulla, quindi l'applicazione non finisce mai – u449355

risposta

7

Ciò che potrebbe accadere è che gli slave non possono più lanciare executor, a causa di problemi di memoria. Cercare i seguenti messaggi nei registri anagrafici:

15/07/13 13:46:50 INFO Master: Removing executor app-20150713133347-0000/5 because it is EXITED 
15/07/13 13:46:50 INFO Master: Launching executor app-20150713133347-0000/9 on worker worker-20150713153302-192.168.122.229-59013 
15/07/13 13:46:50 DEBUG Master: [actor] handled message (2.247517 ms) ExecutorStateChanged(app-20150713133347-0000,5,EXITED,Some(Command exited with code 1),Some(1)) from Actor[akka.tcp://[email protected]:59013/user/Worker#-83763597] 

Potreste trovare alcuni errori java dettagliate nella directory di registro del lavoratore, e forse questo tipo di file: work/app-id/executor-id/hs_err_pid11865.log.

Vedi http://pastebin.com/B4FbXvHR

Questo problema potrebbe essere risolto dalla vostra gestione delle applicazioni di RDD di, non aumentando la dimensione del heap della JVM.

Problemi correlati