hadoop mapreduce tutorial with examples what is mapreduce
Dans ce didacticiel, nous allons comprendre ce qu'est MapReduce, ses avantages et comment Hadoop Map Reduce fonctionne avec des exemples:
Dans le didacticiel précédent, nous avons découvert Hadoop HDFS et les mécanismes de lecture et d'écriture. Explorons maintenant un autre composant Hadoop, à savoir MapReduce.
Examinons en détail ce qui suit:
- Qu'est-ce que MapReduce?
- Ses bienfaits
- Quelle est l'approche exacte de MapReduce?
=> Visitez ici pour la série exclusive de didacticiels de formation BigData.
Ce que vous apprendrez:
Qu'est-ce que MapReduce?
Passons à autre chose et commençons par les composants Hadoop. Comme expliqué précédemment, il existe deux composants principaux de Hadoop, à savoir Hadoop HDFS et Hadoop Map Reduce.
Le Hadoop HDFS est un système de distribution de fichiers utilisé pour stocker une énorme quantité de données dans plusieurs racks.
Ici, nous allons discuter de l'unité de traitement de Hadoop, à savoir MapReduce.
La question suivante qui se pose est 'Qu'est-ce que Map Reduce et pourquoi est-ce nécessaire?'
Hadoop MapReduce est le 'Unité de traitement' et en utilisant ce composant, nous pouvons traiter les Big Data stockées sur Hadoop HDFS.
Mais quelle est l'exigence exacte? Pourquoi avons-nous besoin de ce composant de Hadoop?
Les Big Data stockées sur Hadoop HDFS ne sont pas stockées traditionnellement. Les données sont divisées en morceaux de données stockées dans les DataNodes respectifs. Ainsi, toutes les données ne sont pas stockées dans un emplacement centralisé.
Par conséquent, une application client native telle que Java ou toute autre application de ce type ne peut pas traiter les données dans le format actuel et nous avons besoin d'un cadre spécial capable de traiter les blocs de données fragmentés stockés dans les DataNodes respectifs.
Le traitement est effectué à l'aide du traitement Hadoop MapReduce.
Carte Réduire en un mot
Le diagramme ci-dessus donne un aperçu de Map Reduce, de ses fonctionnalités et de ses utilisations.
Commençons par les applications de MapReduce et où est-il utilisé. Par exemple, il est utilisé pour Classificateurs, indexation et recherche , et création de Moteurs de recommandation sur les sites e-commerce (Flipkart, Amazon, etc.) Il est également utilisé comme Analytique par plusieurs entreprises.
Quand nous voyons du point de vue des fonctionnalités, c'est un Modèle de programmation et peut être utilisé pour Distribué à grande échelle Modèle comme Hadoop HDFS et a la capacité de programmation parallèle qui le rend très utile.
Lorsque nous voyons les fonctions dans Map Reduce, deux fonctions sont exécutées, à savoir la fonction de carte et la fonction de réduction.
Cette technologie a été mise en œuvre par de grandes organisations comme Google, Yahoo, Facebook et également adoptée par Apache Hadoop comme HDFS, PIG, HIVE et pour stocker des données ou exécuter et traiter le Big Data à l'aide de HBase, également connu sous le nom de No-SQL.
Avantages de Map-Reduce
Il y a deux avantages à cette technologie.
# 1) Traitement parallèle
Le tout premier avantage est le traitement parallèle. Avec Map Reduce, nous pouvons toujours traiter les données en parallèle.
Selon le diagramme ci-dessus, il existe cinq machines esclaves et certaines données résident sur ces machines. Ici, les données sont traitées en parallèle à l'aide de Hadoop Map Reduce et le traitement devient donc rapide.
En fait, ce qui se passe ici, c'est que l'ensemble des données est divisé par Hadoop HDFS en bloc HDFS et que Map-Reduce traite ces blocs de données et que le traitement devient donc rapide.
# 2) Localité des données
C'est une chose polyvalente offerte par Hadoop MapReduce, c'est-à-dire que nous pouvons traiter les données là où elles se trouvent.
Qu'est-ce que ça veut dire?
Dans le didacticiel HDFS précédent, nous avons compris que les données que nous avons déplacées dans Hadoop Cluster sont divisées en blocs HDFS et que ces blocs sont enregistrés dans SlaveMachines ou DataNodes. Le Map-Reduce détecte le traitement et la logique vers les nœuds esclaves ou DataNodes respectifs où les données résident en tant que blocs HDFS.
Le traitement est exécuté sur un plus petit morceau de données à plusieurs emplacements en parallèle. Cela permet d'économiser beaucoup de temps ainsi que la bande passante réseau nécessaire pour déplacer le Big Data d'un emplacement à un autre.
Rappelez-vous simplement que les données que nous traitons sont des Big Data décomposées en morceaux, et si nous commençons à déplacer les Big Data directement via les canaux réseau alloués dans une machine centralisée et à les traiter, cela ne nous donnera aucun avantage car nous allons consommer toute la bande passante en déplaçant les données vers un serveur centralisé.
Avantages:
Donc, en utilisant Hadoop MapReduce, nous ne faisons pas que «Traitement parallèle» , nous traitons également les données sur les nœuds esclaves ou DataNodes respectifs où les morceaux de données sont présents et, par conséquent, nous sommes également 'Économiser beaucoup de bande passante réseau' ce qui est très bénéfique.
Enfin, les SlaveMachines traitent les données stockées sur SlaveMachines et renvoient les résultats à la Master Machine car les résultats ne sont pas aussi gros que les blocs stockés sur les SlaveMachines. Par conséquent, il n'utilisera pas beaucoup de bande passante.
Les machines esclaves renvoient le résultat à la machine maître, ces résultats sont regroupés et le résultat final est renvoyé à la machine cliente qui a soumis le travail.
Ici, une question se pose: qui décide quelles données doivent être traitées à quel DataNode?
Le client soumet le travail au gestionnaire de ressources et le gestionnaire de ressources est celui qui fournit la direction pour exécuter le travail sur les DataNodes respectifs où les données résident, il décide en fonction du DataNode le plus proche qui est disponible afin que beaucoup de réseau La bande passante n'est pas utilisée.
java copie le tableau 2d dans un autre tableau
Vs traditionnels. MapReduce Way
Pour expliquer cela, nous prendrons une analogie réelle avec le décompte des demandes des titulaires de police de la compagnie d’assurance, tout le monde serait au courant des polices des compagnies d’assurance, car la plupart des grandes compagnies d’assurances ont leurs succursales dans diverses villes.
Dans ces succursales, il y a «n» nombres de personnes qui ont demandé des polices d'assurance-vie.
Prenons un scénario où nous avons cinq succursales de compagnies d’assurance où les gens viennent demander des polices d’assurance-vie. Maintenant, nous avons également un siège social de cette compagnie d'assurance qui a toutes les informations sur les succursales disponibles et situées.
Cependant, lorsque les gens viennent demander une police d'assurance-vie dans les succursales respectives A, B, C, D, E, les demandes de police sont conservées dans les succursales respectives elles-mêmes et cette information n'est pas partagée avec le siège de la compagnie d'assurance.
Façon traditionnelle:
Voyons comment les gens appliquent traditionnellement la politique. Pour résoudre ce problème traditionnellement, toutes les demandes seront transférées au siège social de la compagnie d'assurance, puis le processus de demande commencera.
Dans ce cas, nous devons transférer toutes les demandes au siège de la compagnie d'assurance, ce qui est une affaire coûteuse, c'est-à-dire que nous devons rassembler toutes les demandes des succursales de la compagnie d'assurance et les apporter au siège de la compagnie d'assurance.
C'est ainsi que le coût est impliqué avec les efforts énormes pour faire cette activité.
Un autre aspect de ceci est le siège social surchargé de la compagnie d'assurance, car il doit traiter toutes les demandes qui ont été appliquées par les gens pour les polices dans les branches respectives.
Comme la compagnie d’assurance traite les demandes qui ont été déposées dans toutes les succursales, cela va prendre beaucoup de temps. En fin de compte, ce processus ne fonctionne pas très bien.
MapReduce Way
Voyons comment Map-Reduce résout ce problème.
MapReduce suit Data Locality, c'est-à-dire qu'il n'apportera pas toutes les demandes au siège de la compagnie d'assurance, mais traitera les demandes dans les succursales respectives elle-même en parallèle.
Une fois que les demandes qui ont été appliquées à chaque succursale ont été traitées, elles renvoient les détails traités au siège de la compagnie d'assurance.
Maintenant, le siège social de la compagnie d'assurance n'a plus qu'à regrouper le nombre de demandes traitées qui ont été envoyées par les succursales respectives et à conserver les détails dans leur base de données ou centre de stockage respectif.
De cette façon, le traitement sera très simple et rapide et les titulaires de police bénéficieront des avantages en un rien de temps.
Carte réduire en détail
Dans notre exemple précédent, nous avions une entrée (applications) qui était répartie entre différentes branches et chaque entrée était traitée par la fonction de carte respective.
Nous savons que MapReduce a deux fonctions, à savoir la fonction de carte et la fonction de réduction.
La partie de traitement qui a été effectuée sur les branches respectives a été effectuée par la fonction de carte. Ainsi, chaque entrée (demande) dans chaque succursale a été traitée à l'aide de la fonction de carte, après quoi les détails traités ont été envoyés au siège de la compagnie d'assurance et la partie agrégation est effectuée par la fonction de réduction.
Les détails de l'application traités agrégés sont donnés en sortie.
C'est ce qui s'est passé dans notre exemple précédent. L'ensemble du processus a été divisé en tâches de mappage et de réduction.
La tâche de mappage obtient une entrée et la sortie de la tâche de mappage est donnée à la tâche de réduction en tant qu'entrée et cette tâche de réduction donne finalement la sortie au client.
Pour mieux le comprendre, passons en revue l'anatomie de MapReduce.
Une tâche MapReduce fonctionne sur une paire clé-valeur, donc lorsque nous parlons d'une carte, la carte prend l'entrée comme valeur-clé et donne la sortie sous forme de liste de valeurs-clés. Cette liste de valeurs-clés passe par une phase de mélange et l'entrée de clé et une liste de valeurs sont allées au réducteur.
Enfin, le réducteur nous donne une liste des paires clé-valeur.
Exemple MapReduce - Processus de décompte de mots
Prenons un autre exemple, à savoir le processus de décompte de mots de la manière MapReduce. Cet exemple est le même que l'exemple d'introduction de la programmation Java, c'est-à-dire «Hello World».
Selon le diagramme, nous avions une entrée et cette entrée est divisée ou divisée en différentes entrées. Donc, ce processus est appelé fractionnement d'entrée, et l'entrée entière est divisée en fractionnements de données en fonction du caractère de nouvelle ligne.
La toute première ligne est la première entrée, c'est-à-dire Carte Bigdata HadoopReduce , la deuxième ligne est la deuxième entrée c.-à-d. MapReduce Hive Bigdata , de même, pour la troisième entrée, c'est Hive Hadoop Hive MapReduce .
Passons à la phase suivante, à savoir la phase de cartographie. Maintenant dans la phase de mappage, nous créons une liste de paires clé-valeur. Donc, l'entrée est la clé et la valeur, ici la clé n'est rien d'autre que le décalage du numéro de ligne. Le numéro de ligne est la clé et la ligne entière est la valeur.
Ainsi, pour la ligne 1, le décalage est la clé et la valeur est Carte Bigdata HadoopReduce . Dans la vraie vie, le numéro de ligne ou le décalage est un nombre hexadécimal, cependant, pour faciliter les choses, nous ne le considérerons que comme le numéro 1 ou 2.
Donc, la ligne 1 sera la clé et la ligne entière sera la valeur. Lorsqu'il passe par la fonction de mappage, ce que fera le mappage, il crée la liste des paires clé-valeur. Par exemple, Big Data , donc ce que la fonction fera, c'est qu'elle lira chaque mot de la ligne et marquera un (1) après la virgule.
Il marquera un (1) comme valeur; aimer Bigdata, 1 Hadoop, 1 et MapReduce, 1 . Ici, la question est de savoir pourquoi nous mettons un (1) après chaque mot?
C'est parce que Big Data est un compte alors Bigdata, 1 . De même, Hadoop, 1 et MapReduce, 1 ont lui-même un décompte, c'est pourquoi nous marquons un (1) comme valeur. De la même manière pour la deuxième ligne ou disons la ligne 2, nous avons, MapReduce Hive Bigdata .
Ainsi, de la même manière, la fonction de mappage crée à nouveau la liste des paires clé-valeur pour elle et donc, selon le nombre, la liste de paires clé-valeur sera MapReduce, 1 ruche, 1 et Bigdata, 1 .
Nous obtiendrons la même chose à la suite de la fonction de mappage pour la ligne 3, c'est-à-dire Ruche, 2 Hadoop, 1 et MapReduce, 1 .
Passons à la phase de mélange, dans cette phase pour chaque clé, une liste est préparée. La phase de mélange trouvera l'apparence de la clé Big Data et il ajoutera les valeurs dans la liste. Voyons donc ce qui se passe ici.
Comme nous pouvons voir deux flèches entrantes, la première flèche vient de la liste 1 et une autre flèche vient de la liste 2 donc le résultat sera Bigdata, (1,1) .
De même, quand on voit le mot Hadoop , encore une fois pour Hadoop une autre liste sera préparée pour les valeurs. Comme nous pouvons le voir, deux flèches entrantes pointent vers Shuffling, ce qui signifie le mot Hadoop sera choisi dans la liste 2 et la liste 3 respectivement, c'est-à-dire que le résultat final après le Shuffling sera Hadoop, (1, 1) .
De la même manière, nous obtiendrons le reste des mots comme Ruche, (1, 1, 1) et MapReduce, (1, 1, 1) avec leur liste de valeurs ou dites la liste de Count selon la disponibilité des mots dans les listes respectives.
Passons maintenant à la phase de réduction, dans cette phase, nous commençons l'agrégation des valeurs présentes dans la liste par rapport à chaque clé. Donc pour Big Data, il y avait deux valeurs présentes dans la liste, c'est-à-dire (Onze) ainsi la soumission de ces valeurs se fera ainsi Bigdata, 2 .
De même, pour Hadoop la valeur sera somme c.-à-d. (Onze) la soumission sera Hadoop, 2 .
De la même manière pour Ruche et MapReduce, la soumission pour la fonction de réduction sera Ruche, 3 et MapReduce, 3 respectivement.
Enfin, le résultat final sera renvoyé au client comme indiqué dans le schéma ci-dessous du 'Processus global de décompte de mots MapReduce'
Processus global de décompte de mots MapReduce
C'est ainsi que tout le processus de décompte de mots fonctionne lorsque vous utilisez MapReduce Way.
Conclusion
Dans ce didacticiel, nous avons appris ce qui suit:
- Hadoop Map Reduce est le 'Unité de traitement' de Hadoop.
- Pour traiter les Big Data stockées par Hadoop HDFS, nous utilisons Hadoop Map Reduce.
- Il est utilisé dans la recherche et l'indexation, la classification, la recommandation et l'analyse.
- Il a des fonctionnalités telles que le modèle de programmation, la programmation parallèle et le modèle distribué à grande échelle.
- Les modèles de conception de MapReduce sont: Récapitulation, classification des meilleurs enregistrements, tri et analyse comme la jointure et la sélection.
- Il n'a que deux fonctions c'est-à-dire la fonction Mapper et la fonction Reducer.
- Le traitement parallèle et la localisation des données sont les bons avantages de Hadoop MapReduce.
- Le processus de MapReduce est divisé en six phases, à savoir INPUT, SPLITTING, MAPPING, SHUFFLING, REDUCING et FINAL RESULT.
C'est tout pour ce didacticiel, dans nos prochains didacticiels, nous aborderons:
- Comment MapReduce fonctionne-t-il avec YARN et ses composants?
- Flux de travail d'application de YARN.
- Qu'est-ce que Spark et quelle est la différence entre Hadoop et Spark?
=> Consultez TOUS les didacticiels BigData ici.
lecture recommandée
- Qu'est-ce que Hadoop? Tutoriel Apache Hadoop pour les débutants
- Tutoriel Python DateTime avec des exemples
- Tutoriel Data Mart - Types, exemples et implémentation de Data Mart
- Modèle de données dimensionnelles dans l'entrepôt de données - Tutoriel avec des exemples
- Tutoriel Java Array Length avec des exemples de code
- Tutoriel Big Data pour les débutants | Qu'est-ce que le Big Data?
- Tutoriel de script Unix Shell avec exemples
- Tutoriel de recherche d'élément par texte Selenium avec des exemples