Tout d'abord, il shuffling
y a le processus de transfert de données des mappeurs vers les réducteurs, donc je pense qu'il est évident que c'est nécessaire pour les réducteurs, car sinon, ils ne pourraient pas avoir d'entrée (ou d'entrée de chaque mappeur) . La lecture aléatoire peut commencer avant même la fin de la phase de la carte, pour gagner du temps. C'est pourquoi vous pouvez voir un état de réduction supérieur à 0% (mais inférieur à 33%) lorsque l'état de la carte n'est pas encore à 100%.
Sorting
fait gagner du temps au réducteur, en l'aidant à distinguer facilement quand une nouvelle tâche de réduction doit commencer. Il démarre simplement une nouvelle tâche de réduction, lorsque la clé suivante dans les données d'entrée triées est différente de la précédente, pour le dire simplement. Chaque tâche de réduction prend une liste de paires clé-valeur, mais elle doit appeler la méthode reduction () qui prend une entrée de liste de clés (valeur), elle doit donc regrouper les valeurs par clé. C'est facile à faire si les données d'entrée sont pré-triées (localement) dans la phase de carte et simplement triées par fusion dans la phase de réduction (puisque les réducteurs obtiennent les données de nombreux mappeurs).
Partitioning
, que vous avez mentionné dans l'une des réponses, est un processus différent. Il détermine dans quel réducteur une paire (clé, valeur), sortie de la phase cartographique, sera envoyée. Le partitionneur par défaut utilise un hachage sur les clés pour les distribuer aux tâches de réduction, mais vous pouvez le remplacer et utiliser votre propre partitionneur personnalisé.
Ce tutoriel Yahoo est une excellente source d'informations pour ces étapes .
Une belle représentation graphique de ceci est la suivante (le shuffle est appelé "copie" dans cette figure):
Notez que shuffling
et sorting
ne sont pas exécutés du tout si vous spécifiez zéro réducteur (setNumReduceTasks (0)). Ensuite, le travail MapReduce s'arrête à la phase de carte, et la phase de carte n'inclut aucun type de tri (donc même la phase de carte est plus rapide).
MISE À JOUR: Puisque vous cherchez quelque chose de plus officiel, vous pouvez également lire le livre de Tom White "Hadoop: The Definitive Guide". Voici la partie intéressante de votre question.
Tom White est un committer Apache Hadoop depuis février 2007 et est membre de l'Apache Software Foundation, donc je suppose que c'est assez crédible et officiel ...