2016-02-17 38 views
11

Ho avuto lavoro Spark in mancanza di una traccia come questa:Perché lavoro Spark esito negativo con "Codice di uscita: 52"

./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-Container id: container_1455622885057_0016_01_000008 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-Exit code: 52 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr:Stack trace: ExitCodeException exitCode=52: 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at org.apache.hadoop.util.Shell.runCommand(Shell.java:545) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at org.apache.hadoop.util.Shell.run(Shell.java:456) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:722) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-  at java.lang.Thread.run(Thread.java:745) 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr- 
./containers/application_1455622885057_0016/container_1455622885057_0016_01_000001/stderr-Container exited with a non-zero exit code 52 

Mi c'è voluto un po 'per capire che cosa "codice di uscita 52" mezzi , quindi lo metto qui a beneficio di altri utenti che potrebbero cercare

+0

Ok, oggi ho ricevuto lo stesso errore. Controllo il file di configurazione della scintilla e su 'Spark.memory.fraction 0', I valori predefiniti sono 0,2. Quindi ho rimosso quella linea. O prova ad aggiornarlo a 0.8 – DanieleO

+0

Che non dovrebbe importare nella scintilla 1.6.0 - dovrebbe regolare automaticamente la frazione di memoria – Virgil

risposta

12

Il codice di uscita 52 proviene da org.apache.spark.util.SparkExitCode, ed è val OOM=52, ad esempio OutOfMemoryError. Che ha senso dal momento che trovo anche questo nei registri contenitore:

16/02/16 17:09:59 ERROR executor.Executor: Managed memory leak detected; size = 4823704883 bytes, TID = 3226 
16/02/16 17:09:59 ERROR executor.Executor: Exception in task 26.0 in stage 2.0 (TID 3226) 
java.lang.OutOfMemoryError: Unable to acquire 1248 bytes of memory, got 0 
     at org.apache.spark.memory.MemoryConsumer.allocatePage(MemoryConsumer.java:120) 
     at org.apache.spark.shuffle.sort.ShuffleExternalSorter.acquireNewPageIfNecessary(ShuffleExternalSorter.java:354) 
     at org.apache.spark.shuffle.sort.ShuffleExternalSorter.insertRecord(ShuffleExternalSorter.java:375) 
     at org.apache.spark.shuffle.sort.UnsafeShuffleWriter.insertRecordIntoSorter(UnsafeShuffleWriter.java:237) 
     at org.apache.spark.shuffle.sort.UnsafeShuffleWriter.write(UnsafeShuffleWriter.java:164) 
     at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:73) 
     at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) 
     at org.apache.spark.scheduler.Task.run(Task.scala:89) 
     at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213) 
     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) 

(notare che io non sono davvero sicuro a questo punto se il problema è nel mio codice o a causa delle perdite di memoria di tungsteno, ma questo è un diverso numero)

+0

sto correndo in un problema simile. Qualsiasi aggiornamento? – morfious902002

+1

Utilizzare meno memoria o diverse (più grandi) macchine :) – Virgil

+2

Aumentare il numero di partizioni ha funzionato per me. Le partizioni predefinite da 200 sql erano troppo piccole per il mio set di dati. – morfious902002