7
votes

Dans Hadoop, où est-ce que la structure enregistre la sortie de la tâche de la carte dans une application normale de la carte?

J'essaie de savoir où la sortie d'une tâche de carte est enregistrée sur le disque avant de pouvoir être utilisée par une tâche réduite.

Note: - la version utilisée est hadoop 0.20. 204 Avec la nouvelle API

Par exemple, lorsqu'il écrit la méthode de la carte dans la classe de carte: xxx

Je suis intéressé à savoir où se trouve le contexte. écrire () finit par écrire les données. Jusqu'à présent, j'ai couru dans le: xxx

qui me donne l'emplacement suivant sur HDFS: xxx

quand je Essayez de l'utiliser comme entrée pour un autre travail, cela me donne l'erreur suivante: xxx

Note: Le travail est démarré dans le mappeur, donc techniquement techniquement. , le dossier temporaire où la tâche du mapper est en train de rédiger que la production existe lorsque le nouvel emploi commence. Ensuite, il est toujours dit que le chemin d'entrée n'existe pas.

Des idées sur l'endroit où la sortie temporaire est écrite? Ou peut-être quel est l'emplacement où je peux trouver la sortie d'une tâche de carte lors d'un travail qui a à la fois une carte et une étape réduite?


5 commentaires

BTW, ressemble à FileOutputHformat # GeveworkOutPutPath donne l'emplacement du dossier de sortie temporaire pour le travail et non pour la tâche de carte selon la documentation de l'API. Lorsque j'essaie de l'utiliser comme entrée pour un autre travail, cela me donne l'erreur suivante: - Les fichiers temporaires sont généralement supprimés une fois le travail terminé ou bien le nœud s'acquitterait facilement.


OK, point équitable, mais je commence le travail pendant que l'autre travail est en cours d'exécution. Je fais une carte imbriquée réduire. Ainsi, l'everjob est en attente lorsque le travail interne est en cours d'exécution. Il ne devrait donc pas y avoir de suppression de fichiers temporaires.


Mais d'accord, assez de choses sont supprimées, ce qui signifie qu'ils étaient quelque part avant qu'ils ne soient supprimés. J'ai besoin de savoir où c'est. :RÉ


Ce n'est pas une bonne pratique de dépendre des fichiers temporaires, car ils peuvent être changés entre les versions sans changer l'API.


Je suis d'accord avec vous, mais encore une fois, j'ai besoin de la sortie et je ne sais pas comment l'obtenir. Des idées?


3 Réponses :


2
votes

Tracker de tâches commence un processus JVM distinct pour chaque carte ou réduisez la tâche.

La sortie du mapper (données intermédiaires) est écrite dans le système de fichiers local (non HDFS) de chaque nœud esclave de mappeur. Une fois que les données sont transférées sur Réducteur, nous ne pourrons pas accéder à ces fichiers temporaires.

Si vous voulez voir votre sortie au mapper, je suggère d'utiliser identitéRecer ?


0 commentaires

5
votes

Alors, j'ai compris ce qui se passe vraiment.

La sortie du mappeur est tamponnée jusqu'à ce qu'elle atteigne environ 80% de sa taille et à ce stade, il commence à vider le résultat à son local disque et continue d'admettre des articles dans le tampon. P>

Je voulais obtenir la sortie intermédiaire du mapper et l'utiliser comme entrée pour un autre travail, tandis que le mappeur était toujours en cours d'exécution. Il s'avère que cela n'est pas possible sans modifier fortement le déploiement de Hadoop 0.20.204. La manière dont le système fonctionne est même après toutes les choses spécifiées dans le contexte de la carte: p> xxx pré>

et le nettoyage est appelé, il n'y a toujours pas de dumping au dossier temporaire. P>

Après, l'ensemble du calcul de la carte, tout est finalement fusionné et déversé sur le disque et devient l'entrée pour les étapes de dépassement et de tri précédant le réducteur. P>

Jusqu'à présent de tout ce que j'ai lu et examiné, le dossier temporaire où la production devrait éventuellement être, est celle que je devinais à l'avance. P>

FileOutputFormat.getWorkOutputPath(context)


0 commentaires

6
votes

Carte Resoudre le cadre stockera la sortie intermédiaire dans le disque local plutôt que sur HDF, car cela entraînerait une réplication inutilement des fichiers.


0 commentaires