VT2019 Hadoop MapReduce: Difference between revisions

From air
Jump to navigation Jump to search
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
Hadoop, dont la première version est apparue en 2006, est une technologie très utilisée aujourd'hui dans le domaine du big data. C'est un framework qui regroupe plusieurs modules qui sont : Hadoop Common, Hadoop Distributed File System, Hadoop Yarn, et Hadoop MapReduce. Pour cet VT2019, nous allons surtout nous intéresser à ce dernier module qui est MapReduce. Cependant il reste dependant d'autres module d'hadoop (en l'occurence HDFS), par conséquent nous allons toutefois faire une brève description d'hadoop en général [[File:logo.jpg|thumb|right]]
Hadoop, dont la première version est apparue en 2006, est une technologie très utilisée aujourd'hui dans le domaine du big data. C'est un framework qui regroupe plusieurs modules qui sont : Hadoop Common, Hadoop Distributed File System, Hadoop Yarn, et Hadoop MapReduce. Pour cet VT2019, nous allons surtout nous intéresser à ce dernier module qui est MapReduce. Cependant il reste dependant d'autres module d'hadoop (en l'occurence HDFS), par conséquent nous allons toutefois faire une brève description d'hadoop en général [[File:logohad.png|thumb|right]]




Line 6: Line 6:


=Le Framework Hadoop=
=Le Framework Hadoop=
A ses débuts, le framework hadoop a été conçu pour remplacer les algorithmes d'indexage de google. Aujourd'hui il est devenu un véritable outil pour traiter une grande quantité de donnée non structurée de manière distribuée. Voici une figure qui montre les modules de base [[File:Hadoop.png|450px|thumb|center|Les différents modules du framework hadoop]]
A ses débuts, le framework hadoop a été conçu pour remplacer les algorithmes d'indexage de google. Aujourd'hui il est devenu un véritable outil pour traiter une grande quantité de donnée non structurée de manière distribuée. Voici une figure qui montre les modules de base [[File:Hadoop.png|450px|thumb|center|Les différents modules du framework hadoop]] MapReduce est un modèle de programmation, et on peut voir que Hadoop possède sa propre implémentation de MapReduce.


=Fonctionnement de MapReduce=
=Fonctionnement de MapReduce=
Line 24: Line 24:
==L'exécution==
==L'exécution==
[[File:mapreduce.png|700px|thumb|center|Execution de MapReduce]]
[[File:mapreduce.png|700px|thumb|center|Execution de MapReduce]]
* '''Etape 1 :'''Dans un premier temps, la bibliothèque MapReduce dans le programme utilisateur divise les fichiers d'entrée M par pièce. Il démarre ensuite de nombreuses copies du programme sur un groupe de machines.
* '''Etape 1: '''Dans un premier temps, la bibliothèque MapReduce dans le programme utilisateur divise les fichiers d'entrée M par pièce. Il démarre ensuite de nombreuses copies du programme sur un groupe de machines.
* '''Etape 2 :'''L'une des copies du programme est spéciale - le master. Les autres sont des travailleurs qui sont affecté un travail par le master. Il y a M tâches de map et R reduce tâches. Le master choisit les travailleurs inactifs et attribue à chacun une tâche de map ou reduce.
* '''Etape 2: '''L'une des copies du programme est spéciale - le master. Les autres sont des travailleurs qui sont affecté un travail par le master. Il y a M tâches de map et R reduce tâches. Le master choisit les travailleurs inactifs et attribue à chacun une tâche de map ou reduce.
* '''Etape 3 :'''Un travailleur lit le contenu d'entrée correspondant. Il parse les paires key / value des données d'entrée et passe chaque paire à la fonction Map définie par l'utilisateur. Les nouveaux paires key2 / value2 intermédiaires produites par la fonction Map sont stocké dans la mémoire.
* '''Etape 3: '''Un travailleur lit le contenu d'entrée correspondant. Il parse les paires key / value des données d'entrée et passe chaque paire à la fonction Map définie par l'utilisateur. Les nouveaux paires key2 / value2 intermédiaires produites par la fonction Map sont stocké dans la mémoire.
* '''Etape 4 :'''Périodiquement, les paires dans le buffer sont écrites en local disque. Les emplacements de ces paires tamponnées sur le disque local est renvoyé au master.
* '''Etape 4: '''Périodiquement, les paires dans le buffer sont écrites en local disque. Les emplacements de ces paires tamponnées sur le disque local est renvoyé au master.
* '''Etape 5 :'''Le travailleur de reduce utilise des remote appels pour lire les données sur le disque des travailleurs map. Lorsqu'un travailleur a lu toutes les données intermédiaires, il les trie par les clés afin que toutes les occurrences de la même clé soient regroupées. Le tri est nécessaire car généralement de nombreuses clés différentes sont dans la même tâche de réduction.
* '''Etape 5: '''Le travailleur de reduce utilise des remote appels pour lire les données sur le disque des travailleurs map. Lorsqu'un travailleur a lu toutes les données intermédiaires, il les trie par les clés afin que toutes les occurrences de la même clé soient regroupées. Le tri est nécessaire car généralement de nombreuses clés différentes sont dans la même tâche de réduction.
* '''Etape 6 :'''le travailleur de reduce transmet la clé et la valeur correspondante à la fonction de réduction de l'utilisateur. La sortie de reduce est ajoutée à un fichier de sortie final pour cette partition de réduction.
* '''Etape 6: '''le travailleur de reduce transmet la clé et la valeur correspondante à la fonction de réduction de l'utilisateur. La sortie de reduce est ajoutée à un fichier de sortie final pour cette partition de réduction.
* '''Etape 7 :'''Une fois il est la réussi, la sortie de l'exécution de mapreduce est disponible dans les R fichiers( 1 par 1 reduce tache)
* '''Etape 7: '''Une fois il est la réussi, la sortie de l'exécution de mapreduce est disponible dans les R fichiers( 1 par 1 reduce tache)


=Cas d'utilisations=
=Cas d'utilisations=
L’exemple classique pour illustrer le fonctionnement de MapReduce est le Wordcount (cf. Démonstration). Cependant MapReduce permet aussi de faire autre choses comme :
L’exemple classique pour illustrer le fonctionnement de MapReduce est le Wordcount (cf. Démonstration). Cependant MapReduce permet aussi de faire autre choses comme :
Grep distribué, tri distribué, analyse des journaux d'accès Web, construction d'index inversé, regroupement de documents, apprentissage automatique, traduction automatique basée sur des statistiques, génération d'un index de la recherche complète de Google, etc.
du grep distribué, du tri distribué, une analyse des journaux d'accès Web, une construction d'index inversé, un regroupement de documents, de l'apprentissage automatique, de la traduction automatique basée sur des statistiques, la génération d'un index de la recherche complète de Google, etc.

=Avantages & Incovenients=
Les principaux avantage d'Hadoop sont sa haute scalabitilité et sa tolérance aux erreurs.
La haute scalabité vient du fait que tout est conçu pour fonctionner dans un contexte distribué. On peut mettre autant de machine et de cluster que l'on veut, cela ne va pas impacter le traitement des données par mapreduce.
La tolérance aux fautes vient du fait que MapReduce s'appuie sur HDFS - qui elle-même possède un système de replication des etats et des blocs de données entre les DataNode). Quand un noeud meurt, on peut facilement basculer sur un autre noeud.
[[File:hdfs_archi.png|350px|thumb|center]]

Par ailleurs, par rapport à d'autres technologies du même type présentes sur le marché comme Teradata par exemple, Hadoop se distingue du fait qu'il soit open-source.

=Bibliographie=
*https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf
*https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
*https://fr.wikipedia.org/wiki/Hadoop

=Veille Technologique 2019=
* Année : [[VT2019|VT2019]]
* Sujet : Hadoop, MapReduce
* Slides : [https://docs.google.com/presentation/d/1rnQAACXoWcCMSLj3QQBssma6tFt3ETM0PnCwJqstqIE/edit?usp=sharing Slides]
* Démonstration : []
* Auteurs : RAKOTOARIMALALA Mandresy Andriamahatratra, ZHENG Jian

Latest revision as of 17:27, 8 December 2019

Hadoop, dont la première version est apparue en 2006, est une technologie très utilisée aujourd'hui dans le domaine du big data. C'est un framework qui regroupe plusieurs modules qui sont : Hadoop Common, Hadoop Distributed File System, Hadoop Yarn, et Hadoop MapReduce. Pour cet VT2019, nous allons surtout nous intéresser à ce dernier module qui est MapReduce. Cependant il reste dependant d'autres module d'hadoop (en l'occurence HDFS), par conséquent nous allons toutefois faire une brève description d'hadoop en général

Logohad.png


Abstract

Hadoop, whose first version appeared in 2006, is a technology widely used today in the field of big data. It is a framework that groups several modules that are: Hadoop Common, Hadoop Distributed File System, Hadoop Yarn, and Hadoop MapReduce. For this VT2019, we will focus on this last module which is MapReduce

Le Framework Hadoop

A ses débuts, le framework hadoop a été conçu pour remplacer les algorithmes d'indexage de google. Aujourd'hui il est devenu un véritable outil pour traiter une grande quantité de donnée non structurée de manière distribuée. Voici une figure qui montre les modules de base

Les différents modules du framework hadoop

MapReduce est un modèle de programmation, et on peut voir que Hadoop possède sa propre implémentation de MapReduce.

Fonctionnement de MapReduce

Liaison HDFS/MapReduce

Comme nous pouvons le voir sur le schema MapReduce s'appuie sur HDFS. Voici comment les deux couches sont liées :

liaison HDFS/MapReduce

Les rôles

Voici les principaux acteurs que nous pouvons retrouver dans les algorithmes de MapReduce:

  • User: qui s’exécute sur une machine client, est responsable d’initialiser le job puis de le soumettre pour exécution.
  • Master : est responsable de mapreduce, il affecte les travaux.
  • Worker: est la machine qui fait les tâche map et reduce.

L'exécution

Execution de MapReduce
  • Etape 1: Dans un premier temps, la bibliothèque MapReduce dans le programme utilisateur divise les fichiers d'entrée M par pièce. Il démarre ensuite de nombreuses copies du programme sur un groupe de machines.
  • Etape 2: L'une des copies du programme est spéciale - le master. Les autres sont des travailleurs qui sont affecté un travail par le master. Il y a M tâches de map et R reduce tâches. Le master choisit les travailleurs inactifs et attribue à chacun une tâche de map ou reduce.
  • Etape 3: Un travailleur lit le contenu d'entrée correspondant. Il parse les paires key / value des données d'entrée et passe chaque paire à la fonction Map définie par l'utilisateur. Les nouveaux paires key2 / value2 intermédiaires produites par la fonction Map sont stocké dans la mémoire.
  • Etape 4: Périodiquement, les paires dans le buffer sont écrites en local disque. Les emplacements de ces paires tamponnées sur le disque local est renvoyé au master.
  • Etape 5: Le travailleur de reduce utilise des remote appels pour lire les données sur le disque des travailleurs map. Lorsqu'un travailleur a lu toutes les données intermédiaires, il les trie par les clés afin que toutes les occurrences de la même clé soient regroupées. Le tri est nécessaire car généralement de nombreuses clés différentes sont dans la même tâche de réduction.
  • Etape 6: le travailleur de reduce transmet la clé et la valeur correspondante à la fonction de réduction de l'utilisateur. La sortie de reduce est ajoutée à un fichier de sortie final pour cette partition de réduction.
  • Etape 7: Une fois il est la réussi, la sortie de l'exécution de mapreduce est disponible dans les R fichiers( 1 par 1 reduce tache)

Cas d'utilisations

L’exemple classique pour illustrer le fonctionnement de MapReduce est le Wordcount (cf. Démonstration). Cependant MapReduce permet aussi de faire autre choses comme : du grep distribué, du tri distribué, une analyse des journaux d'accès Web, une construction d'index inversé, un regroupement de documents, de l'apprentissage automatique, de la traduction automatique basée sur des statistiques, la génération d'un index de la recherche complète de Google, etc.

Avantages & Incovenients

Les principaux avantage d'Hadoop sont sa haute scalabitilité et sa tolérance aux erreurs. La haute scalabité vient du fait que tout est conçu pour fonctionner dans un contexte distribué. On peut mettre autant de machine et de cluster que l'on veut, cela ne va pas impacter le traitement des données par mapreduce. La tolérance aux fautes vient du fait que MapReduce s'appuie sur HDFS - qui elle-même possède un système de replication des etats et des blocs de données entre les DataNode). Quand un noeud meurt, on peut facilement basculer sur un autre noeud.

Hdfs archi.png

Par ailleurs, par rapport à d'autres technologies du même type présentes sur le marché comme Teradata par exemple, Hadoop se distingue du fait qu'il soit open-source.

Bibliographie

Veille Technologique 2019

  • Année : VT2019
  • Sujet : Hadoop, MapReduce
  • Slides : Slides
  • Démonstration : []
  • Auteurs : RAKOTOARIMALALA Mandresy Andriamahatratra, ZHENG Jian