Il est vrai que l'un des goulets d'étranglement dans Hadoop MapReduce est la bande passante réseau entre les machines sur le cluster. Cependant, les sorties de chaque phase de la carte ne sont pas envoyées à chaque machine du cluster.
Le nombre de fonctions de carte et de réduction est défini par le travail que vous exécutez. Chaque carte traite ses données d'entrée, les trie pour regrouper les clés et les écrit sur le disque. Le travail définit le nombre de fonctions de réduction que vous souhaitez appliquer à la sortie des cartes. Chaque réduction doit voir toutes les données pour une clé donnée. Donc, si vous avez une seule réduction en cours d'exécution pour le travail, toutes les sorties de chaque carte doivent être envoyées au nœud du cluster qui s'exécute. Avant la réduction s'exécute les données de chaque carte sont fusionnées pour regrouper toutes les clés.
Si plusieurs réducteurs sont utilisés, les mappages partitionnent leur sortie, en créant un par réduction. Les partitions sont envoyées à la réduction correcte. Cela garantit que toutes les données d'une clé donnée sont traitées par une seule réduction.
Pour réduire la quantité de données à envoyer sur le réseau, vous pouvez appliquer une fonction de combinaison à la sortie d'une carte. Cela a pour effet de réduire la sortie de la carte. Vous pouvez ainsi réduire la quantité de données à transférer vers les réducteurs et accélérer le temps d'exécution de l'ensemble du travail.
Hmmm, cette combinaison semble être là où je devrais regarder plus loin pour comprendre cela. Merci – Zubair
L'utilisation d'une moissonneuse-batteuse peut grandement aider à l'exécution d'un travail. Ils se produisent sur la sortie en mémoire de la carte afin qu'ils réduisent également la quantité de données que la carte doit écrire sur le disque. –