SUIS Conteneur est en cours d'exécution au-delà les limites de mémoire virtuelle
Je jouais avec la distribution de shell application (hadoop-2.0.0-cdh4.1.2).
C'est l'erreur que je reçois à l'instant.
13/01/01 17:09:09 INFO distributedshell.Client: Got application report from ASM for, appId=5, clientToken=null, appDiagnostics=Application application_1357039792045_0005 failed 1 times due to AM Container for appattempt_1357039792045_0005_000001 exited with exitCode: 143 due to: Container [pid=24845,containerID=container_1357039792045_0005_01_000001] is running beyond virtual memory limits. Current usage: 77.8mb of 512.0mb physical memory used; 1.1gb of 1.0gb virtual memory used. Killing container.
Dump of the process-tree for container_1357039792045_0005_01_000001 :
|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE
|- 24849 24845 24845 24845 (java) 165 12 1048494080 19590 /usr/java/bin/java -Xmx512m org.apache.hadoop.yarn.applications.distributedshell.ApplicationMaster --container_memory 128 --num_containers 1 --priority 0 --shell_command ping --shell_args localhost --debug
|- 24845 23394 24845 24845 (bash) 0 0 108654592 315 /bin/bash -c /usr/java/bin/java -Xmx512m org.apache.hadoop.yarn.applications.distributedshell.ApplicationMaster --container_memory 128 --num_containers 1 --priority 0 --shell_command ping --shell_args localhost --debug 1>/tmp/logs/application_1357039792045_0005/container_1357039792045_0005_01_000001/AppMaster.stdout 2>/tmp/logs/application_1357039792045_0005/container_1357039792045_0005_01_000001/AppMaster.stderr
La partie intéressante est que, il semble y avoir aucun problème à l'installation, depuis un simple ls
ou uname
commande s'est terminée avec succès et la sortie a été disponible dans le container2 stdout.
Concernant l'installation, yarn.nodenamager.vmem-pmem-ratio
est 3
et la mémoire physique totale disponible est de 2 go, ce qui je pense est plus que suffisant pour exemple exécuter.
Pour la commande en question, le "ping localhost" a généré deux réponses, comme il peut être vu à partir de la containerlogs/container_1357039792045_0005_01_000002/721917/stdout/?start=-4096.
Oui, quel pourrait être le problème?
OriginalL'auteur Jimson Kannanthara James | 2013-01-01
Vous devez vous connecter pour publier un commentaire.
Le message d'erreur, vous pouvez voir que vous êtes en utilisant plus de mémoire virtuelle que votre limite actuelle de 1,0 go. Cela peut être résolu de deux manières:
Désactiver La Mémoire Virtuelle De Limiter La Vérification
FILS vont tout simplement ignorer la limite; pour ce faire, ajoutez ceci à votre
yarn-site.xml
:La valeur par défaut pour ce paramètre est
true
.Augmenter la Mémoire Virtuelle de la Mémoire Physique Ratio
Dans votre
yarn-site.xml
changez cette valeur plus élevée que ce qui est actuellement fixéLa valeur par défaut est
2.1
Vous pouvez également augmenter la quantité de mémoire physique allouée à un conteneur.
Assurez-vous de ne pas oublier de redémarrer le fil après avoir modifié le fichier config.
OriginalL'auteur tmlye
Pas besoin de changer la configuration du cluster. J'ai découvert que de simplement fournir le paramètre supplémentaire
à distcp aidé pour moi.
distcp
.Content que ça a aidé! Je me rends compte que la question d'origine n'est pas à propos de
distcp
, mais je pense que c'est fondamentalement le même problème qui doit avoir la même solution.M'a aussi aidé. Merci!
OriginalL'auteur David Ongaro
Si vous exécutez Tez cadre, il faut définir les paramètres ci-dessous Tez-site.xml
Et dans Yarn-site.xml
Tous ces paramètres sont obligatoires pour définir
OriginalL'auteur Avinash
Vous pouvez la changer pour une valeur plus élevée que la valeur par défaut de 1 GO dans votre yarn-site.xml
fil.app.mapreduce.am.de la ressource.mo
OriginalL'auteur Gavin Huang
Dans la pratique, j'ai vu ce problème se produit lors de l'exécution de requêtes sur de grandes tables ou des tables qui contiennent un grand nombre de fichiers/les petits fichiers ou de l'onu-placées dans un compartiment de tables ou de l'interrogation grand nombre de partitions.
Le problème se produit lorsque Tez essaie de calculer le nombre de mappers il a besoin pour frayer et tout en faisant ce calcul, il a tendance à aller OOM en raison de la valeur par défaut (1 go) est trop faible.
Le moyen de résoudre ce problème est de ne pas mettre
tez.am.resource.memory.mb
- à-dire de 2 go ou 4 go.Aussi, une autre chose très importante est que ce paramètre ne peut pas être défini à partir de la requête de la ruche comme sa alors trop tard. L'AM est le premier conteneur pour obtenir engendré par le fils, si ce paramètre dans la requête de la ruche n'est pas utile.
Le paramètre doit être défini en *-site.xml ou pendant le frai de la ruche shell comme ci-dessous:
hive --hiveconf tez.am.resource.memory.mb=2048 my-large-query.hql
Dans l'exemple ci-dessus suis signalisation fil pour frayer le matin pour être de 2 go au lieu de ce que le défaut est.
Référence: http://moi.vonos.net/bigdata/hive-cli-memory/
OriginalL'auteur Pratik Khadloya
Ok, trouvé. Augmenter le maître memry paramètre à plus de 750 mo tan et vous réussirez courir le FIL app.
Qui le maître paramètre de mémoire???
OriginalL'auteur Jimson Kannanthara James