MapReduce - API

Dans ce chapitre, nous examinerons de près les classes et leurs méthodes impliquées dans les opérations de programmation MapReduce. Nous allons principalement nous concentrer sur les éléments suivants -

  • Interface JobContext
  • Classe d'emploi
  • Classe de mappeur
  • Classe de réducteur

Interface JobContext

L'interface JobContext est la super interface pour toutes les classes, qui définit différents travaux dans MapReduce. Il vous donne une vue en lecture seule du travail fourni aux tâches pendant leur exécution.

Voici les sous-interfaces de l'interface JobContext.

S.No. Description de la sous-interface
1. MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

Définit le contexte donné au mappeur.

2. ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

Définit le contexte transmis au réducteur.

La classe de travail est la classe principale qui implémente l'interface JobContext.

Classe d'emploi

La classe Job est la classe la plus importante de l'API MapReduce. Il permet à l'utilisateur de configurer le travail, de le soumettre, de contrôler son exécution et d'interroger l'état. Les méthodes définies ne fonctionnent que jusqu'à ce que le travail soit soumis, après quoi elles lèveront une IllegalStateException.

Normalement, l'utilisateur crée l'application, décrit les différentes facettes du travail, puis soumet le travail et surveille sa progression.

Voici un exemple de comment soumettre un travail -

// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);

// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));

job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);

// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);

Constructeurs

Voici le résumé du constructeur de la classe Job.

S. Non Résumé du constructeur
1 Job()
2 Job(Configuration conf)
3 Job(Configuration conf, String jobName)

Méthodes

Certaines des méthodes importantes de la classe Job sont les suivantes:

S. Non Description de la méthode
1 getJobName()

Nom du travail spécifié par l'utilisateur.

2 getJobState()

Renvoie l'état actuel du Job.

3 isComplete()

Vérifie si le travail est terminé ou non.

4 setInputFormatClass()

Définit le InputFormat du travail.

5 setJobName(String name)

Définit le nom du travail spécifié par l'utilisateur.

6 setOutputFormatClass()

Définit le format de sortie du travail.

sept setMapperClass(Class)

Définit le mappeur pour le travail.

8 setReducerClass(Class)

Définit le réducteur pour le travail.

9 setPartitionerClass(Class)

Définit le partitionneur pour le travail.

dix setCombinerClass(Class)

Définit le combinateur pour le travail.

Classe de mappeur

La classe Mapper définit le travail Map. Mappe les paires clé-valeur d'entrée à un ensemble de paires clé-valeur intermédiaires. Les cartes sont les tâches individuelles qui transforment les enregistrements d'entrée en enregistrements intermédiaires. Les enregistrements intermédiaires transformés n'ont pas besoin d'être du même type que les enregistrements d'entrée. Une paire d'entrée donnée peut correspondre à zéro ou à plusieurs paires de sortie.

Méthode

mapest la méthode la plus importante de la classe Mapper. La syntaxe est définie ci-dessous -

map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)

Cette méthode est appelée une fois pour chaque paire clé-valeur dans le fractionnement d'entrée.

Classe de réducteur

La classe Reducer définit le travail Réduire dans MapReduce. Il réduit un ensemble de valeurs intermédiaires qui partagent une clé à un ensemble de valeurs plus petit. Les implémentations de réducteur peuvent accéder à la configuration d'un travail via la méthode JobContext.getConfiguration (). Un réducteur comporte trois phases principales: mélanger, trier et réduire.

  • Shuffle - Le réducteur copie la sortie triée de chaque mappeur en utilisant HTTP sur le réseau.

  • Sort- Le framework trie les entrées du Reducer par clés (puisque différents Mappers peuvent avoir sorti la même clé). Les phases de mélange et de tri se produisent simultanément, c'est-à-dire que pendant que les sorties sont extraites, elles sont fusionnées.

  • Reduce - Dans cette phase, la méthode de réduction (Object, Iterable, Context) est appelée pour chaque <clé, (collection de valeurs)> dans les entrées triées.

Méthode

reduceest la méthode la plus importante de la classe Reducer. La syntaxe est définie ci-dessous -

reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)

Cette méthode est appelée une fois pour chaque clé sur la collection de paires clé-valeur.