Definition

MapReduce

MapReduce est un composant central du framework Apache Hadoop.

Hadoop permet le traitement résilient et distribué de grandes quantités de données non structurées dans des clusters où chaque nœud est doté de son propre stockage. MapReduce exécute deux fonctions essentielles : d'une part, il répartit les tâches sur plusieurs nœuds au sein du cluster (fonction Map) et, d'autre part, il organise et agrège les résultats de chacun des nœuds pour apporter une réponse à une requête.

MapReduce est formé de plusieurs composants :

  • JobTracker : le nœud principal qui gère toutes les tâches et ressources d'un cluster.
  • TaskTrackers : ces agents déployés sur chacune des machines du cluster exécutent les tâches de répartition (Map) et de d’agrégation (reduce).
  • JobHistoryServer : généralement déployé en tant que fonction distincte ou avec JobTracker, ce composant assure le suivi des tâches effectuées.

Pour distribuer les données et recueillir les résultats, MapReduce fonctionne en parallèle sur plusieurs clusters de très grande taille. Etant donné que la taille de cluster n'a pas d'incidence sur les résultats d'une tâche de traitement, les tâches peuvent être réparties sur un nombre de serveurs quasi illimité.

MapReduce et le framework Hadoop dans son ensemble simplifient par conséquent le développement de logiciels.

MapReduce est disponible dans plusieurs langages, dont C, C++, Java, Ruby, Perl et Python.

Grâce aux bibliothèques de MapReduce, les programmeurs ont la possibilité de créer des tâches sans avoir à gérer la communication ou la coordination entre les nœuds.

La tolérance aux pannes est en outre assurée dans MapReduce : chaque nœud transmet régulièrement sont état à un nœud maître. Si un nœud ne répond pas comme prévu, le nœud maître réattribue la portion de tâche correspondante aux autres nœuds disponibles du cluster.

Ceci crée une résilience et permet d'exécuter MapReduce sans problème sur des serveurs génériques bon marché.

MapReduce en action

Imaginons qu'un utilisateur veuille connaître le nombre d'occurrences de tous les mots d'un roman. Il pourrait répertorier chaque mot et en compter les occurrences, à l'instar d'une application serveur fonctionnant seule.

Toutefois, cette opération prendrait du temps.

L'utilisateur pourrait aussi répartir cette tâche entre 26 personnes : chacune prendrait une page, en écrirait chaque mot sur des feuilles de papier, un par feuille, avant de changer de page. Cela illustre la fonction de distribution (Map) de MapReduce.

Par ailleurs, si une personne s'absentait, une autre prendrait sa place. Voilà qui illustre la tolérance aux pannes de MapReduce.

Une fois toutes les pages du livre traitées, les utilisateurs rangeraient chaque feuille, selon la première lettre du mot, dans l'une des 26 boîtes – une par lettre de l'alphabet. Chaque utilisateur prendrait ensuite une boîte pour trier les feuilles par ordre alphabétique. Le nombre de pages comportant le même mot représente l'aspect « Reduce » de MapReduce.

Cette définition a été mise à jour en février 2017

Pour approfondir sur Big Data et Data lake

Close