MapReduce travail s'arrête en attendant SUIS conteneur à allouer
J'ai essayé d'exécuter simple mot compte comme travail de MapReduce. Tout fonctionne bien lorsqu'il est exécuté localement (tout le travail effectué sur le Nom de Nœud). Mais, quand j'essaie de l'exécuter sur un cluster à l'aide de FILS (ajout de mapreduce.framework.name
=yarn
à mapred-site.conf) travail se bloque.
Je suis tombé sur un problème similaire ici:
MapReduce coincé dans Acceptées état
De sortie de l'emploi:
*** START ***
15/12/25 17:52:50 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/12/25 17:52:51 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
15/12/25 17:52:51 INFO input.FileInputFormat: Total input paths to process : 5
15/12/25 17:52:52 INFO mapreduce.JobSubmitter: number of splits:5
15/12/25 17:52:52 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1451083949804_0001
15/12/25 17:52:53 INFO impl.YarnClientImpl: Submitted application application_1451083949804_0001
15/12/25 17:52:53 INFO mapreduce.Job: The url to track the job: http://hadoop-droplet:8088/proxy/application_1451083949804_0001/
15/12/25 17:52:53 INFO mapreduce.Job: Running job: job_1451083949804_0001
mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.job.tracker</name>
<value>localhost:54311</value>
</property>
<!--
<property>
<name>mapreduce.job.tracker.reserved.physicalmemory.mb</name>
<value></value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>3000</value>
<source>mapred-site.xml</source>
</property> -->
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!--
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>3000</value>
<source>yarn-site.xml</source>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>500</value>
</property>
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>3000</value>
</property>
-->
</configuration>
//J'ai de la gauche, a commenté options - ils n'étaient pas résoudre le problème
YarnApplicationState: ACCEPTÉ: en attente d'SUIS conteneur à répartir, lancé et s'inscrire auprès de RM.
Ce que peut être le problème?
EDIT:
J'ai essayé cette configuration (en commentaire) sur les machines: NameNode(8 go de RAM) + 2x DataNode (4 go de RAM). J'obtiens le même effet: le Travail se bloque ACCEPTÉES par l'état.
EDIT2:
un changement de configuration (merci @Manjunath Ballur):
yarn-site.xml:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-droplet</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop-droplet:8031</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop-droplet:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop-droplet:8030</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop-droplet:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop-droplet:8088</value>
</property>
<property>
<description>Classpath for typical applications.</description>
<name>yarn.application.classpath</name>
<value>
$HADOOP_CONF_DIR,
$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
$YARN_HOME/*,$YARN_HOME/lib/*
</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/1/yarn/local,/data/2/yarn/local,/data/3/yarn/local</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/data/1/yarn/logs,/data/2/yarn/logs,/data/3/yarn/logs</value>
</property>
<property>
<description>Where to aggregate logs</description>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/var/log/hadoop-yarn/apps</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>390</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>390</value>
</property>
</configuration>
mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>50</value>
</property>
<property>
<name>yarn.app.mapreduce.am.command-opts</name>
<value>-Xmx40m</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>50</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>50</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx40m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx40m</value>
</property>
</configuration>
Ne fonctionne toujours pas.
Informations supplémentaires: je ne vois pas les nœuds de cluster de prévisualisation (problème similaire ici: Nœuds esclaves pas dans le Fil ResourceManager )
namenode + datanode1 + datanode2 tous les 512 mo de Ram + 4 GO de swap sur disque ssd, un core chacun. oui, VM (digitalocean gouttelettes)
J'ai ajouté la réponse, avec les paramètres que j'utilise. Ils fonctionnent parfaitement pour moi. Vous pouvez vérifier et de confirmer
Il semble, il y a un problème avec votre Gestionnaire de Noeud. Zéro Nœud Gestionnaires, RM ne sais pas à propos de tout Gestionnaire de Noeud. Avez-vous vérifier si votre Gestionnaire de Noeud démon est en cours d'exécution?
OriginalL'auteur KaP | 2015-12-25
Vous devez vous connecter pour publier un commentaire.
Vous devriez vérifier le statut des directeurs de Nœud dans le cluster. Si le NM nœuds sont à court d'espace disque alors RM marque "malsain" et ceux Sgen il ne peut pas allouer de nouveaux conteneurs.
1) Vérifier le Malsain nœuds:
http://<active_RM>:8088/cluster/nodes/unhealthy
Si le "rapport sur la santé dans l'onglet" dit "local-dirs sont mauvais", alors cela signifie que vous besoin de nettoyage de l'espace disque à partir de ces nœuds.
2) la Vérification de la DFS
dfs.data.dir
propriété danshdfs-site.xml
. Il indique l'emplacement sur le système de fichiers local où hdfs les données sont stockées.3) de Connexion aux machines et à l'utilisation
df -h
&hadoop fs - du -h
commandes à mesure de l'espace occupé.4) Vérifier hadoop corbeille et le supprimer si c'est le blocage de vous.
hadoop fs -du -h /user/user_name/.Trash
ethadoop fs -rm -r /user/user_name/.Trash/*
OriginalL'auteur
J'ai le sentiment que vous obtenez vos paramètres de mémoire de mal.
Pour comprendre le réglage de FIL, la configuration, j'ai trouvé ceci pour être une très bonne source: http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/cdh_ig_yarn_tuning.html
J'ai suivi les instructions données dans ce blog et a été en mesure d'obtenir mes travaux en cours d'exécution. Vous devez modifier vos paramètres proportionnelle à la mémoire physique que vous avez sur vos nœuds.
Les points clés à retenir est:
mapreduce.map.memory.mb
etmapreduce.reduce.memory.mb
doit être d'au moinsyarn.scheduler.minimum-allocation-mb
mapreduce.map.java.opts
etmapreduce.reduce.java.opts
devrait être autour de "0,8 fois la valeur de" correspondantmapreduce.map.memory.mb
etmapreduce.reduce.memory.mb
configurations. (Dans mon cas c'est 983 MO ~ (0.8 * 1228 MO))yarn.app.mapreduce.am.command-opts
doit être "à 0,8 fois la valeur de"yarn.app.mapreduce.am.resource.mb
Suivants sont les paramètres que j'utilise et qui fonctionnent parfaitement pour moi:
yarn-site.xml:
mapred-site.xml
Vous pouvez également vous reporter à la réponse ici: Fils contenant de la compréhension et de tuning
Vous pouvez ajouter vCore paramètres, si vous voulez que votre conteneur allocation de prendre en compte le CPU aussi. Mais, pour que cela fonctionne, vous devez utiliser
CapacityScheduler
avecDominantResourceCalculator
. Voir la discussion à ce sujet ici: Comment sont des conteneurs créés sur la base des vcores et de la mémoire dans MapReduce2?Je suis désolé si j'ai confondu. En fait, je viens de poster les paramètres de la mémoire de mon yarn-site.xml et mapred-site.xml. Mon yarn-site.xml contient de nombreux autres paramètres comme, mapreduce.nom. Ce sont juste les réglages de la mémoire de qui vous avez besoin d'ajouter, en plus des paramètres existants.
OriginalL'auteur
Ce qui a résolu mon cas pour cette erreur:
OriginalL'auteur
Vérifier votre fichier hosts sur le maître et l'esclave des nœuds. J'ai eu exactement ce problème. Mon fichier hosts ressemblait à ça sur le nœud maître par exemple
Je l'ai changé, comme ci-dessous
Si cela a fonctionné.
OriginalL'auteur
Ces lignes
dans le
yarn-site.xml
résolu mon problème depuis le nœud sera marqué comme malsain lors de l'utilisation du disque est >=95%. Solution convient principalement pour pseudodistributed mode.OriginalL'auteur
Vous avez 512 MO de RAM sur chaque instance et de toutes vos configurations de mémoire dans yarn-site.xml et mapred-site.xml 500 MO à 3 GO. Vous ne serez pas en mesure d'exécuter quelque chose sur le cluster. Modifier chaque chose à ~256 MO.
Aussi votre mapred-site.xml est l'aide de cadre en fil et vous avez tracker d'emploi adresse qui n'est pas correct. Vous avez besoin de ressources le gestionnaire de paramètres liés à yarn-site.xml sur un évolutifs à plusieurs nœuds de cluster (y compris la classe resourcemanager adresse web). Avec que, le cluster ne savez pas où votre cluster est.
Vous avez besoin de revoir vos fichiers xml.
Essayé ce configuraton (en commentaire) sur les machines: namenode(8 go de RAM) + 2x datanode (4 go de RAM). Le même effet
Pouvez-vous coller un fil de site et mapred-site sur le nouveau cluster?
OriginalL'auteur
de toute façon c'est de travailler pour moi .merci beaucoup! @KaP
c'est mon yarn-site.xml
c'est mon mapred-site.xml
OriginalL'auteur
La première chose est de vérifier le fil de ressources gestionnaire de journaux. J'avais fait des recherches sur Internet à propos de ce problème pour un temps très long, mais personne ne m'a dit comment faire pour trouver ce qui se passe vraiment. C'est tellement simple et facile à vérifier le fil de ressources gestionnaire de journaux. Je ne sais pas pourquoi les gens ignorent les journaux.
Pour moi, il y avait une erreur dans le journal de
C'est parce que j'ai changé de réseau wifi dans mon lieu de travail, donc mon IP de l'ordinateur a changé.
OriginalL'auteur
Vieille question, mais j'ai eu le même problème récemment et dans mon cas, c'était dû à un réglage manuel de l'master locales dans le code.
S'il vous plaît, recherche pour
conf.setMaster("local[*]")
et l'enlever.Espère que cela aide.
OriginalL'auteur