Tutoriel 3 : Hadoop Map Reduce Multiple Output

Hadoop

Tutoriel 3 : Hadoop Map Reduce Multiple Output

Le problème d’index inversé est l’une des utilisations les plus anciennes et les plus courantes de MapReduce.

 

L’IndexInverterJob prend un ensemble de paires <clé, valeur> et l’inverse, de sorte que chaque valeur devient une clé.

 

Tout d’abord, vous devez vous assurer que vous avez correctement installé Hadoop sur votre machine. 

 

Ensuite, vous devriez démarrer le démon Hadoop en appelant ces scripts:

 

  • start-dfs.sh
  • start-yarn.sh

 

On termine par cette dernière étape avant de commencer, vous devez copier les fichiers d’entrée dans votre système de fichiers Hadoop local et créer des répertoires dans hdfs avant de les copier.

 

Alors téléchargez ces deux fichiers d’entrée (ce sont de petits fichiers juste pour les tests)

 

Après cela, créez des chemins dans hdfs en appelant: hdfs dfs -mkdir -P / formation / lab3 / inputs /

 

Après cela, copiez les fichiers sur hdfs en appelant cette commande comme suit: hdfs dfs -copyFromLocal <localPathOfFiles> / training / lab3 / inputs /

 

Par exemple, si vous avez téléchargé les fichiers dans Téléchargements / lab3 / inputs, la ligne de commande doit être la suivante: hdfs dfs -copyFromLocal ~ / Téléchargements / lab3 / inputs / * / training / lab3 / inputs /

 

Maintenant que tout est déjà configuré, commençons le codage.

 

 

Voyons maintenant le mappeur, le rôle du mappeur est d’inverser la clé et la valeur. Ainsi, le mappeur obtient une URL en tant que clé et une liste de mots-clés séparés par une virgule en tant que valeur et sur chaque mot-clé, le mappeur écrit sur le résultat le mot-clé en tant que clé et l’url en tant que valeur.

 

 

Après cela, Hadoop effectuera le brassage et regroupera chaque paire (clé, valeur) ayant la même clé (clé, valeur 1, valeur 2… valeur n) et les transmettra au réducteur.

 

Après cela, chaque réducteur (on a plusieurs réducteurs) obtiendra la clé concat des valeurs séparées par une virgule et les écrira dans hdfs.

 

 

Maintenant, après avoir codé, exportez le fichier jar en tant que fichier jar exécutable et spécifiez MinMaxJob en tant que classe main, puis ouvrez le terminal et exécutez le travail en appelant: hadoop jar <nameOfTheJar.jar>, par exemple si vous attribuez le nom lab3.jar au jar, la ligne de commande sera: hadoop jar lab3.jar 

 

Regardez le résultat en invoquant : hdfs dfs -cat /training/lab3/output/part-r-00000

 

Optimisons maintenant un peu notre code, changeons le nom du fichier de sortie « output », ajoutons la ligne ci-dessous à la classe de travail:

 

 

Et dans le réducteur, au lieu d’utiliser context.write (key, new Text (sb.toString ())) ;

utilisez plutôt :

 

 

Si vous exécutez ce travail, vous obtiendrez un fichier vide nommé part-r-00000, puis-je le supprimer? oui utiliser:

 

 

Lorsque vous utilisez LazyOutputFormat comme format de sortie « output », Hadoop ne créera pas le fichier, sauf si vous y écrivez quelque chose.

 

Ok, supposons maintenant que je souhaite sortir deux formats différents, l’un sera utilisé par un autre réducteur de map (SequenceFileOutputFormat) et l’autre sera TextOutputFormat.

 

Comment le faire ?

 

Dans la classe de travail :

 

 

Et dans le réducteur :

 

 

Avatar for nizell

Author: nizell

No Comments

Post a Comment

Comment
Name
Email
Website