Spark - Container ausgeführt wird, jenseits der Grenzen der physischen Speicher
Ich habe einen cluster mit zwei worker-Knoten.
Worker_Node_1 - 64GB RAM
Worker_Node_2 - 32GB RAM
Hintergrund Sommerlich :
Ich bin versucht, die execute-spark-reichen auf Garn-cluster ausgeführt Pregel auf einem Graphen zu berechnen, die den kürzesten Pfad Entfernungen aus einer Hand vertex zu allen anderen Knoten, und drucken Sie die Werte auf der Konsole.
Experment :
- Für Kleine Graphen mit 15 Knoten Ausführung Anwendung endgültiger status : ERFOLGREICH
- Mein code funktioniert einwandfrei und druckt kürzeste Entfernung für 241 vertices graph für die einzelnen Knoten als Quelle vertex-aber es gibt ein problem.
Problem :
Wenn ich das Graben in der Log-Datei die Aufgabe bekommt komplett erfolgreich in 4 Minuten und 26 Sekunden, sondern noch auf dem terminal-es hält-zeigt die Anwendung den status als Läuft und nach ca 12 Minuten die task-Ausführung wird beendet, sagen -
Application application_1447669815913_0002 failed 2 times due to AM Container for appattempt_1447669815913_0002_000002 exited with exitCode: -104 For more detailed output, check application tracking page:http://myserver.com:8088/proxy/application_1447669815913_0002/
Then, click on links to logs of each attempt.
Diagnostics: Container [pid=47384,containerID=container_1447669815913_0002_02_000001] is running beyond physical memory limits. Current usage: 17.9 GB of 17.5 GB physical memory used; 18.7 GB of 36.8 GB virtual memory used. Killing container.
Dump of the process-tree for container_1447669815913_0002_02_000001 :
|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE
|- 47387 47384 47384 47384 (java) 100525 13746 20105633792 4682973 /usr/lib/jvm/java-7-oracle-cloudera/bin/java -server -Xmx16384m -Djava.io.tmpdir=/yarn/nm/usercache/cloudera/appcache/application_1447669815913_0002/container_1447669815913_0002_02_000001/tmp -Dspark.eventLog.enabled=true -Dspark.eventLog.dir=hdfs://myserver.com:8020/user/spark/applicationHistory -Dspark.executor.memory=14g -Dspark.shuffle.service.enabled=false -Dspark.yarn.executor.memoryOverhead=2048 -Dspark.yarn.historyServer.address=http://myserver.com:18088 -Dspark.driver.extraLibraryPath=/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop/lib/native -Dspark.shuffle.service.port=7337 -Dspark.yarn.jar=local:/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/spark/lib/spark-assembly.jar -Dspark.serializer=org.apache.spark.serializer.KryoSerializer -Dspark.authenticate=false -Dspark.app.name=com.path.PathFinder -Dspark.master=yarn-cluster -Dspark.executor.extraLibraryPath=/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop/lib/native -Dspark.yarn.am.extraLibraryPath=/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop/lib/native -Dspark.yarn.app.container.log.dir=/var/log/hadoop-yarn/container/application_1447669815913_0002/container_1447669815913_0002_02_000001 org.apache.spark.deploy.yarn.ApplicationMaster --class com.path.PathFinder --jar file:/home/cloudera/Documents/Longest_Path_Data_1/Jars/ShortestPath_Loop-1.0.jar --arg /home/cloudera/workspace/Spark-Integration/LongestWorstPath/configFile --executor-memory 14336m --executor-cores 32 --num-executors 2
|- 47384 47382 47384 47384 (bash) 2 0 17379328 853 /bin/bash -c LD_LIBRARY_PATH=/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop/lib/native::/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop/lib/native /usr/lib/jvm/java-7-oracle-cloudera/bin/java -server -Xmx16384m -Djava.io.tmpdir=/yarn/nm/usercache/cloudera/appcache/application_1447669815913_0002/container_1447669815913_0002_02_000001/tmp '-Dspark.eventLog.enabled=true' '-Dspark.eventLog.dir=hdfs://myserver.com:8020/user/spark/applicationHistory' '-Dspark.executor.memory=14g' '-Dspark.shuffle.service.enabled=false' '-Dspark.yarn.executor.memoryOverhead=2048' '-Dspark.yarn.historyServer.address=http://myserver.com:18088' '-Dspark.driver.extraLibraryPath=/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop/lib/native' '-Dspark.shuffle.service.port=7337' '-Dspark.yarn.jar=local:/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/spark/lib/spark-assembly.jar' '-Dspark.serializer=org.apache.spark.serializer.KryoSerializer' '-Dspark.authenticate=false' '-Dspark.app.name=com.path.PathFinder' '-Dspark.master=yarn-cluster' '-Dspark.executor.extraLibraryPath=/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop/lib/native' '-Dspark.yarn.am.extraLibraryPath=/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop/lib/native' -Dspark.yarn.app.container.log.dir=/var/log/hadoop-yarn/container/application_1447669815913_0002/container_1447669815913_0002_02_000001 org.apache.spark.deploy.yarn.ApplicationMaster --class 'com.path.PathFinder' --jar file:/home/cloudera/Documents/Longest_Path_Data_1/Jars/ShortestPath_Loop-1.0.jar --arg '/home/cloudera/workspace/Spark-Integration/LongestWorstPath/configFile' --executor-memory 14336m --executor-cores 32 --num-executors 2 1> /var/log/hadoop-yarn/container/application_1447669815913_0002/container_1447669815913_0002_02_000001/stdout 2> /var/log/hadoop-yarn/container/application_1447669815913_0002/container_1447669815913_0002_02_000001/stderr
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Failing this attempt. Failing the application.
Dinge habe ich versucht :
- Garn.schedular.maximal-Belegung mb – 32 GB
- mapreduce.Karte.Speicher.mb = 2048 (Vorher waren es 1024)
- Versucht, unterschiedliche-Fahrer-memory bis zu 24g
Könnten Sie bitte mehr Farbe auf, wie kann ich konfigurieren Sie die Ressource-Manager, so dass eine Große Größe-Diagramme ( > 300 K vertices) können auch verarbeitet werden? Danke.
- Es gibt eine ähnliche Frage: stackoverflow.com/questions/21005643/...
- haben Sie nichts finden ? der andere hat mir nicht helfen
- Sie benötigen, um die Feinabstimmung Ihrer Anwendung mit der cluster-Fähigkeit. Params-Fahrer-Gedächtnis-executor-Gedächtnis-executor-Kerne --num-Vollzieher eine sehr wichtige Rolle spielen, während Sie tun, spark-reichen auf Garn-cluster.
- spark.apache.org/docs/latest/tuning.html bitte gehen Sie durch diese.
- Ich habe das gleiche problem. Weiß jemand, wie kann ich das verstehen, die Bedienung geht OutOfMemory? Wenn es ist etwas beitreten, oder wenn es einige Cache-Daten? Danke!
- Eine Lösung für dieses Problem? Ich stehe vor demselben Problem stackoverflow.com/questions/49209905/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Je mehr Daten Sie verarbeiten, desto mehr Speicher wird benötigt von jedem Funken Aufgabe. Und wenn Sie Ihren Testamentsvollstrecker ausgeführt wird, zu viele Aufgaben, dann kann es der Arbeitsspeicher. Wenn ich Probleme hatte, die Verarbeitung von großen Datenmengen, es war meist ein Resultat von nicht richtig ausbalancieren der Anzahl der Kerne pro Testamentsvollstrecker. Versuchen Sie, reduzieren Sie entweder die Anzahl der Kerne oder die Erhöhung der Testamentsvollstrecker Speicher.
Einem einfachen Weg, zu sagen, dass Sie Speicher Probleme ist die überprüfung der Testamentsvollstrecker auf die Registerkarte Spark-UI. Wenn Sie sehen eine Menge von roten Balken, der angibt, hohen garbage-collection-Zeit, sind Sie wahrscheinlich der Speicher in Ihrem Testamentsvollstrecker.
Ich slove der Fehler in meinem Fall zu erhöhen conf von Funken.Garn.executor.memoryOverhead stehen für off-heap-Speicher
Wenn Sie erhöhen die Menge des Fahrer-memory-und executor-Speicher, nicht zu vergessen das config item
Erhöhen nur Standard conf von
spark.driver.memory
aus512m
zu2g
lösen dieser Fehler in meinem Fall.Setzen Sie den Speicher höher, wenn es hält, schlagen die gleichen Fehler. Dann können Sie weiter zu reduzieren, bis es trifft den gleichen Fehler, so dass Sie wissen, die optimalen Treiber-Speicher zu verwenden, die für Ihren job.
Spark-jobs Fragen, für die Ressourcen aus Ressourcen-manager in einer anderen Weise von MapReduce-jobs. Versuchen Sie, Stimmen die Zahl der Vollzieher und der mem/vcore zugeteilt, jedem Testamentsvollstrecker. Folgen Sie http://spark.apache.org/docs/latest/submitting-applications.html