2016-02-17 41 views
11

miałem pracę Spark niepowodzeniem ze śladową jak ten:Dlaczego praca Spark niepowodzeniem z „kodem wyjścia: 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 

Zajęło mi trochę czasu, aby dowiedzieć się, co „wyjścia Kod 52” oznacza , więc umieszczam to tutaj dla korzyści innych osób, które mogą wyszukiwać

+0

Ok, dziś mam ten sam błąd. Sprawdzam plik konfiguracyjny iskry, a pod adresem 'Spark.memory.fraction 0', Domyślne wartości to 0.2. Więc usunąłem tę linię. Lub spróbuj zaktualizować go na 0.8 – DanieleO

+0

To nie powinno mieć znaczenia w iskrze 1.6.0 - powinien automatycznie dopasować część pamięci – Virgil

Odpowiedz

12

Kod zakończenia 52 pochodzi z org.apache.spark.util.SparkExitCode i jest to val OOM=52 - tj. OutOfMemoryError. Co ma sens, ponieważ ja również znaleźć to w dziennikach kontenerowych:

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) 

(zauważ, że nie jestem pewien, w tym momencie, czy problem jest w moim kodu lub z powodu wycieków pamięci wolframu, ale to inny problem)

+0

. Mam podobny problem. Jakakolwiek aktualizacja? – morfious902002

+1

Używaj mniej pamięci lub innych (większych) maszyn :) – Virgil

+2

Zwiększenie liczby partycji, które mi pomogły. Domyślne partycje 200 sql były zbyt małe dla mojego zestawu danych. – morfious902002