«MapReduce» est l'une des troisième composantes de Hadoop. Ce cadre est efficace pour le traitement de grandes données en parallèle avec les autres tâches. Le but de base de «MapReduce» est de cartographier chaque travail collectivement en groupe, puis cela le réduira à des tâches égales pour réduire la formation de cluster des processus. La tâche «Mapreduce» est divisée en deux phases.
Carte Réduire le concept et l'architecture
Les données d'entrée sont distribuées en petits morceaux pour le traitement des données par le biais de différents travailleurs. Chaque petit morceau est mappé à une situation / état intermédiaire. Ces données intermédiaires sont ensuite collectées ensemble, puis le processus de partitionnement se produit qui est basé sur une valeur clé pour garder tout le matériel connexe entre eux. Ensuite, ce partitionnement des données conduit à l'ensemble réduit résultant. Considérons le diagramme ci-dessous.
Parties de l'architecture
Les pièces de travail obtenues à partir du travail sont ensuite transférées sur la carte et réduisent les tâches. Ces deux tâches ont des programmes et des algorithmes qui dépendent de l'exigence de l'utilisateur. Les données d'entrée sont utilisées et entrées dans la tâche de carte. La tâche de cartographie générera ensuite la paire de valeurs de clé intermédiaire qui servira d'entrée pour la phase de réduction. Dans la phase de réduction, après avoir effectué le processus de réduction, stockez les résultats finaux dans le HDFS. Se déplaçant maintenant vers l'exemple de Map-Reduce, le code de l'exemple est expliqué avec les phases séparément et leur sortie également.
Code de Python MapReduce
L'API de streaming Hadoop est utilisée pour transmettre des données entre la carte et réduire le code via Stdin et Stout. Pour lire les données d'entrée et imprimer la sortie, «sys.stdin ”est utilisé. D'autres procédures sont gérées par Hadoop streaming lui-même.
Phase de cartographie
L'utilisation principale de la phase de carte est de cartographier les données d'entrée sous forme de paires de touches. La valeur de clé que nous avons utilisée peut agir comme ID est une adresse, et la valeur contient la valeur réelle qui est conservée. Cette phase de carte générera une valeur intermédiaire avec la clé en tant que sortie. Pour réduire la fonction, la sortie de la carte est utilisée comme entrée. Considérons le code de la fonction de carte. Cette fonction est également connue sous le nom de mappeur.py.
Vous devez créer un fichier et enregistrer le code dans ce fichier. je.E / Home / AQSA / Mapper.py. Le script de carte n'est pas en mesure de calculer une valeur intermédiaire des mots totaux qui se produisent plusieurs fois. Au lieu de cela, cela donnera aux parties des données, même les mots répétent les multiples heures dans les données d'entrée. Nous laisserons la fonction réduire le nombre de mots en calculant la somme de leur occurrence. Une chose qui doit être gardée à l'esprit, le fichier a une autorisation d'exécution (Chmod + X / Home / AQSA / Mapper.py). Se dirigeant vers le code, la première étape sera l'importation du module SYS. L'entrée sera prise en utilisant une boucle pour STDIN.
Pour la ligne dans sys.stdin:
Cette fonction lira ensuite la ligne par ligne, dépouillera toutes les lignes et supprimera les espaces blancs entre eux à travers la fonction de bande. De même, chaque ligne est divisée en mots en utilisant une fonction divisée. Les deux fonctions sont déclarées à l'intérieur du corps de boucle pour.
# ligne = ligne.bande()Une fois toutes les fonctions exécutées, chaque mot sera imprimé un par un.
Les valeurs intermédiaires subissent deux processus avant d'entrer dans la phase de réduction. Ces deux étapes sont le mélange et la phase de tri.
Phase de mélange:
Le but de cette fonction est d'associer toutes les valeurs d'une clé similaire. Par exemple, considérez un mot (oui, 1) qui s'est produit 4 fois dans le fichier de sortie. Donc, après cette phase, la sortie sera présentée comme (oui [1,1,1,1])).
Phase de tri:
Une fois le processus de mélange terminé, les valeurs de sortie sont envoyées à la phase de tri. Dans cette phase, toutes les clés et valeurs sont triées automatiquement. Dans Hadoop, le processus de tri ne nécessite aucun algorithme de tri, car il s'agit d'un processus automatique. C'est à cause de l'interface intégrée nommée «WriteBableCaparable Interface».
Réduire la phase
Les valeurs intermédiaires sont ensuite transférées à la fonction de réduction après leur tri. Le groupe de fonctions de réduction les données en fonction de la paire de valeurs clés selon l'algorithme de réducteur utilisé par le programmeur.
Le code que nous implémenterons est enregistré dans un fichier du chemin «/ home / aqsa / réducteur.py ". Ce fichier lira les résultats du «mappeur.fichier py »du stdin. À cette fin, le format du «Mapper.Fichier py »et l'entrée provenant du mapper.py devrait être le même. Après cela, cette fonction prend la somme de l'occurrence de chaque mot, et la sortie finale est affichée via STDOUT.
#!/ usr / bin / env pythonLe module sys est importé en premier. Alors une variable pour le processus de comptage est déclarée 0 comme valeur initiale. Nous avons pris les valeurs d'entrée en utilisant pour la boucle, et les lignes sont séparées tout comme la fonction de carte. Pour diviser les mots, nous utilisons à la fois les mots et les variables de comptage.
# Compter, word = ligne.Split ('\ t', 1)Dans le corps d'essai, la variable de nombre se voit attribuer la valeur. L'IF-statement est utilisé pour vérifier si le mot à venir est le même que le stocké; La variable de comptage est incrémentée.
# Current_count + = countValeur résultante
Pour vérifier les résultats, accédez au terminal de Linux. Ici, nous utiliserons une chaîne qui combine des mots simples et répétitifs pour obtenir des résultats polyvalents.
$ echo «La carte et la réduction sont une fonction efficace et efficace, former une carte réduit le cadre» | / Home / AQSA / Mapper.py | Triez -K1,1 | / home / aqsa / réducteur.py
Conclusion
«MapReduce Python Exemple» se compose de la fonctionnalité et de l'architecture de base de Map-Reduce collectivement et séparément. La formation de valeur intermédiaire joue un rôle important dans cette fin. Pour obtenir la valeur limitée, chaque fois que vous souhaitez gérer les mégadonnées, vous devez utiliser une fonction «MapReduce» dans le programme. La lecture de cet article sera une source d'informations complètes concernant la fonction «MapReduce».