Dans la programmation de Map Reduce, la phase de réduction comprend le mélange, le tri et la réduction comme sous-parties. Le tri est une affaire coûteuse.
Quel est le but de la phase de mélange et de tri dans le réducteur dans Map Reduce Programming?
Réponses:
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
etsorting
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 ...
la source
Revenons sur les phases clés du programme Mapreduce.
La phase de carte est effectuée par les mappeurs. Les mappeurs s'exécutent sur des paires clé / valeur d'entrée non triées. Chaque mappeur émet zéro, une ou plusieurs paires clé / valeur de sortie pour chaque paire clé / valeur d'entrée.
La phase de combinaison est effectuée par des combineurs. Le combineur doit combiner des paires clé / valeur avec la même clé. Chaque combineur peut s'exécuter zéro, une ou plusieurs fois.
La phase de mélange et de tri est effectuée par le framework. Les données de tous les mappeurs sont regroupées par clé, réparties entre les réducteurs et triées par clé. Chaque réducteur obtient toutes les valeurs associées à la même clé. Le programmeur peut fournir des fonctions de comparaison personnalisées pour le tri et un partitionneur pour la division des données.
Le partitionneur décide quel réducteur obtiendra une paire clé / valeur particulière.
Le réducteur obtient des paires clé / [liste de valeurs] triées, triées par clé. La liste de valeurs contient toutes les valeurs avec la même clé produite par les mappeurs. Chaque réducteur émet zéro, une ou plusieurs paires clé / valeur de sortie pour chaque paire clé / valeur d'entrée .
Jetez un œil à cet article javacodegeeks de Maria Jurcovicova et à l' article mssqltips de Datta pour une meilleure compréhension
Ci-dessous l'image de l' article safaribooksonline
la source
ie
chaînes sous Reducers et Output devraient l'êtreis
.J'ai pensé à simplement ajouter quelques points manquants dans les réponses ci-dessus. Ce diagramme pris à partir d' ici indique clairement ce qui se passe réellement.
Si je répète le véritable but de
Split: améliore le traitement parallèle en répartissant la charge de traitement sur différents nœuds (Mappers), ce qui permettrait de gagner du temps de traitement global.
Combiner: réduit la sortie de chaque mappeur. Cela permettrait de gagner du temps pour déplacer les données d'un nœud à un autre.
Trier (Shuffle & Sort): permet à l'exécution de planifier facilement (générer / démarrer) de nouveaux réducteurs, où tout en parcourant la liste des éléments triés, chaque fois que la clé actuelle est différente de la précédente, elle peut générer un nouveau réducteur. .
la source
Certaines des exigences en matière de traitement des données ne nécessitent aucun tri. Syncsort avait rendu le tri dans Hadoop enfichable. Voici un joli blog de leur part sur le tri. Le processus de déplacement des données des mappeurs vers les réducteurs s'appelle la lecture aléatoire, consultez cet article pour plus d'informations à ce sujet.
la source
J'ai toujours supposé que c'était nécessaire car la sortie du mappeur est l'entrée du réducteur, elle a donc été triée en fonction de l'espace de clés, puis divisée en seaux pour chaque entrée du réducteur. Vous voulez vous assurer que toutes les mêmes valeurs d'une clé se retrouvent dans le même compartiment en direction du réducteur afin qu'elles soient réduites ensemble. Il est inutile d'envoyer K1, V2 et K1, V4 à différents réducteurs car ils doivent être ensemble pour être réduits.
J'ai essayé de l'expliquer aussi simplement que possible
la source
Le brassage est le processus par lequel les données intermédiaires des mappeurs sont transférées vers 0,1 ou plus de réducteurs. Chaque réducteur reçoit 1 ou plusieurs clés et ses valeurs associées en fonction du nombre de réducteurs (pour une charge équilibrée). De plus, les valeurs associées à chaque clé sont triées localement.
la source
MapReduce ne fait que deux choses NATIVELY: Trier et (implémenté par tri) évolutif GroupBy.
La plupart des applications et des modèles de conception sur MapReduce sont construits sur ces deux opérations, qui sont fournies par shuffle et sort.
la source
C'est une bonne lecture. J'espère que ça aide. En termes de tri, vous vous préoccupez, je pense que c'est pour l'opération de fusion à la dernière étape de Map. Lorsque l'opération de mappage est terminée et que vous devez écrire le résultat sur le disque local, une multi-fusion sera effectuée sur les fractionnements générés à partir du tampon. Et pour une opération de fusion, le tri de chaque partition à l'avance est utile.
la source
Eh bien, dans Mapreduce, il y a deux phrases importantes appelées Mapper et réducteur sont tous deux trop importants, mais Reducer est obligatoire. Dans certains programmes, les réducteurs sont facultatifs. Maintenant, venez à votre question. Le brassage et le tri sont deux opérations importantes chez Mapreduce. Le premier framework Hadoop prend des données structurées / non structurées et sépare les données en clé, valeur.
Maintenant, le programme Mapper sépare et organise les données en clés et valeurs à traiter. Générez des valeurs de clé 2 et de valeur 2. Ces valeurs doivent être traitées et réorganisées dans le bon ordre pour obtenir la solution souhaitée. Maintenant, ce mélange et ce tri sont effectués dans votre système local (Framework s'en occupe) et processus dans le système local après le nettoyage du framework de processus des données dans le système local. D'accord
Ici, nous utilisons également un combineur et une partition pour optimiser ce processus de mélange et de tri. Après une disposition appropriée, ces valeurs de clé sont transmises au réducteur pour obtenir la sortie souhaitée du client. Enfin, le réducteur obtient la sortie souhaitée.
K1, V1 -> K2, V2 (nous allons écrire le programme Mapper), -> K2, V '(ici mélanger et adoucir les données) -> K3, V3 Générer la sortie. K4, V4.
Veuillez noter que toutes ces étapes ne sont que des opérations logiques et ne modifient pas les données d'origine.
Votre question: Quel est le but de la phase de mélange et de tri dans le réducteur dans Map Reduce Programming?
Réponse courte: Pour traiter les données pour obtenir la sortie souhaitée. La lecture aléatoire consiste à agréger les données, à réduire la sortie attendue.
la source