MapReduce offre un moyen efficace, rapide et économique de créer des applications.
Ce modèle utilise des concepts avancés tels que le traitement parallèle, la localité des données, etc., pour offrir de nombreux avantages aux programmeurs et aux organisations.
Mais il existe tellement de modèles et de frameworks de programmation sur le marché qu'il devient difficile de choisir.
Et quand il s'agit de Big Data, vous ne pouvez pas choisir n'importe quoi. Vous devez choisir des technologies capables de gérer de gros volumes de données.
MapReduce est une excellente solution à cela.
Dans cet article, je vais discuter de ce qu'est vraiment MapReduce et de ses avantages.
Let’s start!
What Is MapReduce?
MapReduce est un modèle de programmation ou un cadre logiciel dans le Apache Hadoop cadre. Il est utilisé pour créer des applications capables de traiter des données massives en parallèle sur des milliers de nœuds (appelés clusters ou grilles) avec tolérance aux pannes et fiabilité.
Cet informatique se produit sur une base de données ou un système de fichiers où les données sont stockées. MapReduce peut fonctionner avec un système de fichiers Hadoop (HDFS) pour accéder et gérer de gros volumes de données.
Ce framework a été introduit en 2004 par Google et est popularisé par Apache Hadoop. Il s'agit d'une couche ou d'un moteur de traitement dans Hadoop exécutant des programmes MapReduce développés dans différents langages, notamment Java, C++, Pythonet Ruby.
Les programmes MapReduce en cloud computing fonctionnent en parallèle, donc adaptés à l'analyse de données à grande échelle.

MapReduce vise à diviser une tâche en plusieurs tâches plus petites à l'aide des fonctions "map" et "reduce". Il mappera chaque tâche, puis la réduira à plusieurs tâches équivalentes, ce qui se traduira par une puissance de traitement et une surcharge moindres sur le réseau du cluster.
Mise en situation : Supposons que vous préparez un repas pour une maison pleine d'invités. Donc, si vous essayez de préparer tous les plats et de faire tous les processus vous-même, cela deviendra mouvementé et chronophage.
Mais supposons que vous impliquiez certains de vos amis ou collègues (pas des invités) pour vous aider à préparer le repas en distribuant différents processus à une autre personne qui peut effectuer les tâches simultanément. Dans ce cas, vous préparerez le repas plus rapidement et plus facilement pendant que vos invités sont encore dans la maison.
MapReduce fonctionne de manière similaire avec des tâches distribuées et traitement parallèle pour permettre un moyen plus rapide et plus facile d'accomplir une tâche donnée.
Apache Hadoop permet aux programmeurs d'utiliser MapReduce pour exécuter des modèles sur de grands ensembles de données distribués et d'utiliser des techniques avancées d'apprentissage automatique et de statistiques pour trouver des modèles, faire des prédictions, repérer des corrélations, etc.
Features of MapReduce
Certaines des principales fonctionnalités de MapReduce sont :
- Interface utilisateur: Vous obtiendrez une interface utilisateur intuitive qui fournit des détails raisonnables sur chaque aspect du cadre. Il vous aidera à configurer, appliquer et régler vos tâches de manière transparente.

- Charge utile: Les applications utilisent les interfaces Mapper et Reducer pour activer les fonctions de mappage et de réduction. Le mappeur mappe les paires clé-valeur d'entrée sur des paires clé-valeur intermédiaires. Le réducteur est utilisé pour réduire les paires clé-valeur intermédiaires partageant une clé à d'autres valeurs plus petites. Il remplit trois fonctions : trier, mélanger et réduire.
- Partitionneur : Il contrôle la division des clés de sortie de carte intermédiaires.
- Journaliste: Il s'agit d'une fonction permettant de signaler la progression, de mettre à jour les compteurs et de définir des messages d'état.
- Compteurs: Il représente les compteurs globaux définis par une application MapReduce.
- Collecteur de sortie : Cette fonction collecte les données de sortie de Mapper ou Reducer au lieu des sorties intermédiaires.
- RecordWriter : Il écrit la sortie de données ou les paires clé-valeur dans le fichier de sortie.
- Cache distribué : Il distribue efficacement des fichiers plus volumineux, en lecture seule, spécifiques à l'application.
- Compression des données : Le rédacteur d'application peut compresser à la fois les sorties de travail et les sorties de carte intermédiaires.
- Mauvais enregistrement sauté : Vous pouvez ignorer plusieurs enregistrements incorrects lors du traitement de vos entrées de carte. Cette fonctionnalité peut être contrôlée via la classe – Ignorer les mauvais enregistrements.
- Débogage: Vous aurez la possibilité d'exécuter des scripts définis par l'utilisateur et d'activer débogage. Si une tâche dans MapReduce échoue, vous pouvez exécuter votre script de débogage et trouver les problèmes.
MapReduce Architecture

Comprenons l'architecture de MapReduce en approfondissant ses composants :
- Job: Un travail dans MapReduce est la tâche réelle que le client MapReduce veut effectuer. Il comprend plusieurs tâches plus petites qui se combinent pour former la tâche finale.
- Serveur d'historique des tâches : Il s'agit d'un processus démon pour stocker et enregistrer toutes les données historiques sur une application ou une tâche, telles que les journaux générés après ou avant l'exécution d'un travail.
- Client: Un client (programme ou API) apporte un travail à MapReduce pour exécution ou traitement. Dans MapReduce, un ou plusieurs clients peuvent envoyer en continu des travaux au MapReduce Manager pour traitement.
- Maître MapReduce : Un MapReduce Master divise une tâche en plusieurs parties plus petites, garantissant que les tâches progressent simultanément.
- Pièces de travail : Les sous-travaux ou parties de travail sont obtenus en divisant le travail principal. Ils sont travaillés et enfin combinés pour créer la tâche finale.
- Des données d'entrée: C'est l'ensemble de données fourni à MapReduce pour le traitement des tâches.
- Des données de sortie: C'est le résultat final obtenu une fois la tâche traitée.
Ainsi, ce qui se passe réellement dans cette architecture, c'est que le client soumet un travail au maître MapReduce, qui le divise en parties plus petites et égales. Cela permet au travail d'être traité plus rapidement car les tâches plus petites prennent moins de temps à être traitées au lieu des tâches plus volumineuses.
Cependant, assurez-vous que les tâches ne sont pas divisées en tâches trop petites, car si vous le faites, vous devrez peut-être faire face à une surcharge de gestion des fractionnements et perdre beaucoup de temps à cela.
Ensuite, les composants du travail sont rendus disponibles pour poursuivre les tâches Mapper et Réduire. De plus, les tâches Map et Reduce ont un programme adapté en fonction du cas d'utilisation sur lequel l'équipe travaille. Le programmeur développe le code basé sur la logique pour répondre aux exigences.

Après cela, les données d'entrée sont transmises à la tâche de carte afin que la carte puisse générer rapidement la sortie sous forme de paire clé-valeur. Au lieu de stocker ces données sur HDFS, un disque local est utilisé pour stocker les données afin d'éliminer les risques de réplication.
Une fois la tâche terminée, vous pouvez jeter la sortie. Par conséquent, la réplication deviendra exagérée lorsque vous stockerez la sortie sur HDFS. La sortie de chaque tâche de mappage sera transmise à la tâche de réduction, et la sortie de la carte sera fournie à la machine exécutant la tâche de réduction.
Ensuite, la sortie sera fusionnée et transmise à la fonction reduce définie par l'utilisateur. Enfin, la sortie réduite sera stockée sur un HDFS.
De plus, le processus peut avoir plusieurs tâches Map et Reduce pour le traitement des données en fonction de l'objectif final. Les algorithmes Map et Reduce sont optimisés pour minimiser la complexité temporelle ou spatiale.
Étant donné que MapReduce implique principalement des tâches Map et Reduce, il est pertinent d'en savoir plus à leur sujet. Alors, discutons des phases de MapReduce pour avoir une idée claire de ces sujets.
Phases of MapReduce
Carte
Les données d'entrée sont mappées dans la sortie ou les paires clé-valeur dans cette phase. Ici, la clé peut faire référence à l'identifiant d'une adresse tandis que la valeur peut être la valeur réelle de cette adresse.

Il n'y a qu'une mais deux tâches dans cette phase - les divisions et la cartographie. Les fractionnements désignent les sous-parties ou les parties du travail séparées du travail principal. Celles-ci sont également appelées divisions d'entrée. Ainsi, une division d'entrée peut être appelée un bloc d'entrée consommé par une carte.
Ensuite, la tâche de cartographie a lieu. Il est considéré comme la première phase lors de l'exécution d'un programme de réduction de carte. Ici, les données contenues dans chaque division seront transmises à une fonction de carte pour traiter et générer la sortie.
La fonction – Map() s'exécute dans le référentiel de mémoire sur les paires clé-valeur d'entrée, générant une paire clé-valeur intermédiaire. Cette nouvelle paire clé-valeur fonctionnera comme l'entrée à alimenter à la fonction Reduce() ou Reducer.
Broyeurs
Les paires clé-valeur intermédiaires obtenues lors de la phase de mappage servent d'entrée pour la fonction Reduce ou Reducer. Semblable à la phase de cartographie, deux tâches sont impliquées - mélanger et réduire.
Ainsi, les paires clé-valeur obtenues sont triées et mélangées pour être envoyées au réducteur. Ensuite, le réducteur regroupe ou agrège les données en fonction de sa paire clé-valeur en fonction de l'algorithme de réduction que le développeur a écrit.
Ici, les valeurs de la phase de brassage sont combinées pour renvoyer une valeur de sortie. Cette phase résume l'ensemble du jeu de données.

Désormais, le processus complet d'exécution des tâches Map et Reduce est contrôlé par certaines entités. Ceux-ci sont:
- Suivi des travaux : En termes simples, un suivi des travaux agit comme un maître responsable de l'exécution complète d'un travail soumis. Le suivi des travaux gère tous les travaux et ressources d'un cluster. De plus, le suivi des tâches planifie chaque carte ajoutée sur le suivi des tâches qui s'exécute sur un nœud de données spécifique.
- Plusieurs trackers de tâches : En termes simples, plusieurs trackers de tâches fonctionnent comme des esclaves exécutant la tâche en suivant les instructions du Job Tracker. Un suivi des tâches est déployé séparément sur chaque nœud du cluster exécutant les tâches Mapper et Réduire.
Cela fonctionne car un travail sera divisé en plusieurs tâches qui s'exécuteront sur différents nœuds de données d'un cluster. Le Job Tracker est chargé de coordonner la tâche en planifiant les tâches et en les exécutant sur plusieurs nœuds de données. Ensuite, le suivi des tâches installé sur chaque nœud de données exécute des parties du travail et s'occupe de chaque tâche.
De plus, les suivis de tâches envoient des rapports d'avancement au suivi des travaux. De plus, le suivi des tâches envoie périodiquement un signal de « battement de cœur » au suivi des travaux et les informe de l'état du système. En cas d'échec, un suivi des tâches est capable de replanifier le travail sur un autre suivi des tâches.
Phase de sortie : lorsque vous atteignez cette phase, vous aurez les paires clé-valeur finales générées à partir du réducteur. Vous pouvez utiliser un formateur de sortie pour traduire les paires clé-valeur et les écrire dans un fichier à l'aide d'un enregistreur d'enregistrement.
Why Use MapReduce?
Voici quelques-uns des avantages de MapReduce, expliquant les raisons pour lesquelles vous devez l'utiliser dans vos applications Big Data :
Traitement parallèle

Vous pouvez diviser une tâche en différents nœuds où chaque nœud gère simultanément une partie de cette tâche dans MapReduce. Ainsi, diviser les tâches plus importantes en tâches plus petites diminue la complexité. De plus, étant donné que différentes tâches s'exécutent en parallèle sur différentes machines au lieu d'une seule machine, le traitement des données prend beaucoup moins de temps.
Localité des données
Dans MapReduce, vous pouvez déplacer l'unité de traitement vers les données, et non l'inverse.
De manière traditionnelle, les données étaient amenées à l'unité de traitement pour traitement. Cependant, avec la croissance rapide des données, ce processus a commencé à poser de nombreux défis. Certains d'entre eux étaient plus coûteux, plus chronophages, surchargeaient le nœud maître, échouaient fréquemment et réduisaient les performances du réseau.
Mais MapReduce aide à surmonter ces problèmes en suivant une approche inverse - en amenant une unité de traitement aux données. De cette façon, les données sont réparties entre différents nœuds où chaque nœud peut traiter une partie des données stockées.
En conséquence, il offre une rentabilité et réduit le temps de traitement puisque chaque nœud fonctionne en parallèle avec sa partie de données correspondante. De plus, comme chaque nœud traite une partie de ces données, aucun nœud ne sera surchargé.
Active Directory

Le modèle MapReduce offre une plus grande sécurité. Il aide à protéger votre application contre les données non autorisées tout en améliorant la sécurité du cluster.
Evolutivité et Flexibilité
MapReduce est un framework hautement évolutif. Il vous permet d'exécuter des applications à partir de plusieurs machines, en utilisant des données de plusieurs milliers de téraoctets. Il offre également la flexibilité de traiter des données qui peuvent être structurées, semi-structurées ou non structurées et de n'importe quel format ou taille.
Simplicité
Vous pouvez écrire des programmes MapReduce dans n'importe quel langage de programmation comme Java, R, Perl, Python, etc. Par conséquent, il est facile pour quiconque d'apprendre et d'écrire des programmes tout en s'assurant que ses exigences en matière de traitement des données sont satisfaites.
Use Cases of MapReduce
- Indexation plein texte : MapReduce est utilisé pour effectuer une indexation de texte intégral. Son mappeur peut mapper chaque mot ou phrase dans un seul document. Et le réducteur est utilisé pour écrire tous les éléments mappés dans un index.
- Calcul du PageRank : Google utilise MapReduce pour calculer le Pagerank.
- Analyse du journal : MapReduce peut analyser les fichiers journaux. Il peut diviser un fichier journal volumineux en plusieurs parties ou fractionnements pendant que le mappeur recherche les pages Web consultées.
Une paire clé-valeur sera envoyée au réducteur si une page Web est repérée dans le journal. Ici, la page Web sera la clé et l'index "1" est la valeur. Après avoir donné une paire clé-valeur au réducteur, diverses pages Web seront agrégées. Le résultat final est le nombre total de visites pour chaque page Web.

- Graphique de lien Web inversé : Le cadre trouve également une utilisation dans Reverse Web-Link Graph. Ici, le Map () donne la cible de l'URL et la source et prend l'entrée de la source ou de la page Web.
Ensuite, Reduce() agrège la liste de chaque URL source associée à l'URL cible. Enfin, il sort les sources et la cible.
- Comptage de mots : MapReduce est utilisé pour compter le nombre de fois qu'un mot apparaît dans un document donné.
- Réchauffement climatique: Les organisations, les gouvernements et les entreprises peuvent utiliser MapReduce pour résoudre les problèmes de réchauffement climatique.
Par exemple, vous voudrez peut-être en savoir plus sur l'augmentation de la température de l'océan due au réchauffement climatique. Pour cela, vous pouvez collecter des milliers de données à travers le monde. Les données peuvent être haute température, basse température, latitude, longitude, date, heure, etc. cela prendra plusieurs cartes et réduira les tâches pour calculer la sortie à l'aide de MapReduce.
- Essais de médicaments : Traditionnellement, les scientifiques des données et les mathématiciens travaillaient ensemble pour formuler un nouveau médicament capable de combattre une maladie. Avec la diffusion d'algorithmes et de MapReduce, les services informatiques des organisations peuvent facilement résoudre des problèmes qui n'étaient traités que par Supercomputers, Ph.D. scientifiques, etc. Maintenant, vous pouvez inspecter l'efficacité d'un médicament pour un groupe de patients.
- Autres applications: MapReduce peut même traiter des données à grande échelle qui, autrement, ne rentreraient pas dans une base de données relationnelle. Il utilise également des outils de science des données et permet de les exécuter sur différents ensembles de données distribués, ce qui n'était auparavant possible que sur un seul ordinateur.
Grâce à la robustesse et à la simplicité de MapReduce, il trouve des applications dans le domaine militaire, commercial, scientifique, etc.
Conclusion
MapReduce peut s'avérer être une percée technologique. Il s'agit non seulement d'un processus plus rapide et plus simple, mais également d'un meilleur rapport coût-efficacité et qui prend moins de temps. Compte tenu de ses avantages et de son utilisation croissante, il est susceptible d'être plus adopté dans les industries et les organisations.
Vous pouvez également explorer certaines des meilleures ressources pour apprendre le Big Data et Hadoop.