Vidéo: Hadoop Processing Frameworks 2024
La phase Réduire traite le clés et leurs listes de valeurs individuelles afin que ce qui revient normalement à l'application cliente soit un ensemble de paires clé / valeur. Voici le coup par coup jusqu'à présent: Un grand ensemble de données a été décomposé en plus petites parties, appelées divisions d'entrée, et des instances individuelles de tâches de mappeur ont traité chacune d'elles.
Dans certains cas, cette seule phase de traitement est tout ce qui est nécessaire pour générer la sortie d'application souhaitée. Par exemple, si vous exécutez une opération de transformation de base sur les données (conversion de tout le texte en majuscules, par exemple, ou extraction d'images clés à partir de fichiers vidéo), la phase solitaire est tout ce dont vous avez besoin. (C'est ce que l'on appelle un travail map-only , soit dit en passant.)
Mais dans de nombreux autres cas, le travail n'est fait qu'à moitié lorsque les tâches du mappeur ont écrit leur sortie. La tâche restante consiste à réduire tous les résultats intermédiaires à une seule réponse unifiée.
Semblable à la tâche de mappeur, qui traite chaque enregistrement un par un, le réducteur traite chaque clé individuellement. Normalement, le réducteur retourne une seule paire clé / valeur pour chaque clé qu'il traite. Cependant, ces paires clé / valeur peuvent être aussi étendues ou aussi petites que vous le souhaitez.
Lorsque les tâches du réducteur sont terminées, chacune retourne un fichier de résultats et le stocke dans HDFS (Hadoop Distributed File System). Comme indiqué ici, le système HDFS réplique automatiquement ces résultats.
Lorsque le gestionnaire de ressources (ou JobTracker si vous utilisez Hadoop 1) fait de son mieux pour assigner des ressources aux tâches de mappage afin de s'assurer que les scissions d'entrée sont traitées localement, il n'existe aucune stratégie pour les tâches réductrices. Il est supposé que les ensembles de résultats de la tâche de mappage doivent être transférés sur le réseau pour être traités par les tâches du réducteur.
Cette implémentation est raisonnable car, avec des centaines ou même des milliers de tâches de mappage, il n'y aurait aucun moyen pratique pour que les tâches des réducteurs aient la même priorité de localité.