Spark - Conteneur est en cours d'exécution-delà des limites de la mémoire physique
J'ai un cluster de deux nœuds de travail.
Worker_Node_1 - 64 GO de RAM
Worker_Node_2 - 32 GO RAM
Fond Estival :
Je suis en train d'exécuter des bougies de présenter sur un fil de cluster pour exécuter Pregel sur un Graphique afin de calculer le plus court chemin distances à partir d'une source sommet à tous les autres sommets et d'imprimer les valeurs de la console.
Experment :
- Pour Petit graphique avec 15 sommets exécution de l'application sur le statut final : RÉUSSI
- Mon code fonctionne parfaitement et imprime la distance la plus courte pour 241 sommets graphique pour seul sommet comme source sommet, mais il y a un problème.
Problème :
Quand je creuse dans le fichier Journal de la tâche est terminée avec succès en 4 minutes et 26 Secondes, mais encore sur le terminal, il ne cesse de montrer l'état de la demande comme de Course et après environ 12 minutes de plus l'exécution d'une tâche se termine en disant: -
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.
Choses que j'ai essayé :
- fil.schedular.maximum de l'allocation-mo – 32 GO
- mapreduce.carte.de la mémoire.mo = 2048 (Auparavant, il était de 1 024)
- Essayé divers --pilote-mémoire jusqu'à 24g
Pourriez-vous s'il vous plaît mettre plus de couleur à la façon dont je peux configurer le Gestionnaire de Ressources, ainsi que des Graphes de Grande Taille ( > 300 K sommets) peuvent également être traitées? Merci.
- Il y a une précédente question similaire: stackoverflow.com/questions/21005643/...
- avez-vous trouvé quelque chose ? les autres ne m'aide pas
- Vous avez besoin d'affiner votre demande avec le cluster de la capacité. Params --pilote-mémoire --exécuteur-mémoire --exécuteur des noyaux --num exécuteurs testamentaires jouent un rôle très important pendant que vous faites de l'étincelle-présenter sur le fil-cluster.
- spark.apache.org/docs/latest/tuning.html s'il vous plaît aller à travers cela.
- J'ai le même problème. Quelqu'un sait comment je comprends l'opération qui va dépassement de mémoire? Si c'est une jointure ou si c'est une mise en cache des données? Merci!
- Une solution à ce problème? Je suis confronté à la même question stackoverflow.com/questions/49209905/...
Vous devez vous connecter pour publier un commentaire.
Le plus de données en cours de traitement, plus la mémoire est nécessaire à chaque Allumage de la tâche. Et si votre exécuteur testamentaire est en cours d'exécution trop grand nombre de tâches, puis il peut exécuter de mémoire. Quand j'ai eu des problèmes pour le traitement de grandes quantités de données, il a été fait de ne pas correctement équilibrer le nombre de cœurs par l'exécuteur testamentaire. Essayez de réduire le nombre de cœurs ou d'augmenter l'exécuteur de la mémoire.
Un moyen facile de dire que vous êtes d'avoir des problèmes de mémoire est de vérifier l'Exécuteur onglet sur l'Étincelle de l'INTERFACE utilisateur. Si vous voyez beaucoup de rouges barres indiquant la haute collecte des ordures temps, vous êtes probablement à court de mémoire dans vos exécuteurs.
Je slove l'erreur dans mon cas, pour augmenter la conf de étincelle.de fil.exécuteur testamentaire.memoryOverhead Qui se dressent hors de segment de mémoire
Lorsque vous augmentez le montant de pilote, la mémoire et l'exécuteur de mémoire, n'oubliez pas cette config élément
Étincelle emplois demander des ressources à partir du gestionnaire de ressources d'une manière différente de MapReduce. Essayez de régler le nombre d'exécutants et de mem/vcore alloué à chaque exécuteur testamentaire. Suivez http://spark.apache.org/docs/latest/submitting-applications.html
Augmentation juste valeur par défaut conf de
spark.driver.memory
de512m
à2g
résoudre cette erreur dans mon cas.Vous pouvez définir la mémoire à la hausse si elle continue à appuyer sur le même message d'erreur. Ensuite, vous pouvez réduire jusqu'à ce qu'il frappe de la même erreur, de sorte que vous savez de l'optimum pilote de mémoire à utiliser pour votre travail.