web-dev-qa-db-fra.com

Hadoop Mapper échoue en raison de «Conteneur tué par ApplicationMaster»

J'essaie d'exécuter un programme de réduction de carte sur Hadoop.

Lorsque je soumets mon travail au cluster à nœud unique hadoop. Le travail est créé mais échoue avec le message

"Conteneur tué par l'ApplicationMaster"

L'entrée utilisée est de la taille 10 Mo.

Lorsque j'ai utilisé le même script de fichier d'entrée 400 Ko, il a réussi. Mais à défaut pour le fichier d'entrée de taille 10 Mo.

Le journal complet qui s'affiche dans mon terminal est le suivant.

    15/05/29 09:52:16 WARN util.NativeCodeLoader: Unable to `load native-  hadoop library for your platform... using builtin-Java classes      where applicable
Submitting job on the cluster...
15/05/29 09:52:17 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/05/29 09:52:18 INFO input.FileInputFormat: Total input paths to process : 1
15/05/29 09:52:18 INFO mapreduce.JobSubmitter: number of splits:1
15/05/29 09:52:19 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1432910768528_0001
15/05/29 09:52:19 INFO impl.YarnClientImpl: Submitted application application_1432910768528_0001
15/05/29 09:52:19 INFO mapreduce.Job: The url to track the job: http://localhost:8088/proxy/application_1432910768528_0001/
15/05/29 09:52:19 INFO mapreduce.Job: Running job: job_1432910768528_0001
15/05/29 09:52:29 INFO mapreduce.Job: Job job_1432910768528_0001 running in uber mode : false
15/05/29 09:52:29 INFO mapreduce.Job:  map 0% reduce 0%
15/05/29 09:52:41 INFO mapreduce.Job:  map 100% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job:  map 0% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job: Task Id : attempt_1432910768528_0001_m_000000_0, Status : FAILED
AttemptID:attempt_1432910768528_0001_m_000000_0 Timed out after 600 secs
Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143

Mon mappeur déclenche ici l'autre programme qui va traiter mon fichier d'entrée ici. Le programme qui est déclenché par le mappeur consomme généralement beaucoup de mémoire.

Veuillez donc m'aider à cet égard.

15
Harry

Inclure les propriétés ci-dessous dans yarn-site.xml et redémarrez VM,

<property>
   <name>yarn.nodemanager.vmem-check-enabled</name>
   <value>false</value>
   <description>Whether virtual memory limits will be enforced for containers</description>
</property>

<property>
   <name>yarn.nodemanager.vmem-pmem-ratio</name>
   <value>4</value>
   <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
10
Nagendra

Un conteneur est un processus JVM de fil. Dans Mapreduce, le service maître d'application, les tâches de mappage et de réduction sont tous des conteneurs qui s'exécutent à l'intérieur de la structure de fil.

Vous pouvez résoudre ce problème en augmentant le nombre de réducteurs (par exemple mapreduce.job.reduces=10) ou en augmentant la taille de segment réduite (mapreduce.reduce.Java.opts=-Xmx2014m)

Si vous souhaitez avoir un nombre fixe de réducteurs au moment de l'exécution, vous pouvez le faire en passant le travail Map/Reduce en ligne de commande. En utilisant -D mapreduce.job.reduces=10 avec le nombre souhaité générera autant de réducteurs lors de l'exécution.

Dans le code, vous pouvez configurer la variable JobConf pour définir le nombre de mappeurs et de réducteurs. Disons que nous avons JobConf variable comme travail.

Configuration conf = new Configuration();
Job job = new Job(conf);
job.setNumReduceTasks(10); // 10 reducers

Vous pouvez également diviser le fichier en une taille plus petite pour ce travail particulier afin d'éviter les problèmes de mémoire.

Si vous rencontrez toujours des problèmes, veuillez consulter le journal des fils et publier le journal.

3
Sandeep Singh