Suite cours Big Data:
Map-Reduce
Introduction
• Le modèle de programmation MapReduce est l’un des principaux
composants du framework Hadoop. Il est utilisé pour accéder aux
données Big Data stockées au sein du Hadoop File System (HDFS).
• Un mécanisme d’exécution très populaire, présent dans
plusieurs frameworks (dont le framework open source Hadoop),
est MapReduce.
Introduction
• MapReduce est le modèle de programmation du framework Hadoop.
Il permet d'analyser les immenses volumes de données Big Data grâce
au traitement parallèle.
• MapReduce propose de décomposer l’ensemble des opérations à
réaliser en deux types de tâches élémentaires et uniformes
Principes de base
• Au cœur de MapReduce se trouvent deux fonctions, Map et Reduce,
qui sont séquencées l'une après l'autre.
• La fonction Map transforme les entrées du disque en paires
<key,value>, les traite et génère un autre ensemble de paires
<key,value> intermédiaires en sortie.
• La fonction Reduce transforme également les entrées en paires
<key,value> et génère une des paires <key,value> en sortie.
Principe de base
Principes de base
Principes de base
• Map
• Les données d'entrée sont divisées en blocs plus petits. Chaque bloc
est ensuite assigné à un Mapper pour traitement.
• Par exemple, si un fichier contient 100 enregistrements à traiter, 100
Mappers peuvent s'exécuter ensemble et traiter un enregistrement
chacun, ou 50 Mappers peuvent s'exécuter ensemble et traiter deux
enregistrements chacun, et ainsi de suite.
Principes de base
Map
Principes de base
shuffling
Une fois que toutes les tâches Map sont achevées (c’est-à-dire lorsque tous
les nœuds du cluster ont fini d’exécuter la fonction Map qui leur a été
assignée), la phase Shuffle démarre. Cette phase consiste d’une part à trier
par clé, toutes les paires clé/valeurs générées par la phase Map,
Reduce
• Lorsque tous les Mappers ont terminé leur traitement, le framework
mélange et trie les résultats avant de les transmettre aux Reducers
Les valeurs de sortie map affectées de la même valeur key sont
assignées à un seul Reducer, qui agrège les valeurs map pour cette
key.
Reduce
Exemple
• Par exemple, s’il est possible de compter manuellement le nombre de fois
qu’un mot apparaît dans un roman, cela prend beaucoup de temps. Si l’on
répartit cette tâche entre une vingtaine de personnes, les choses peuvent
aller beaucoup plus vite.
• Chaque personne prend une page du roman et écrit le nombre de fois que
le mot apparaît sur la page. Il s’agit de la partie Map de MapReduce
• Si une personne s’en va, une autre prend sa place. Cet exemple illustre la
tolérance aux erreurs de MapReduce.
Exemple le programme wordcount
• Mapper
Explication
• Ligne 2—4 : Ces lignes déclarent des classes et des variables à utiliser dans
la fonction mapper.
• Hadoop fournit son propre ensemble de types de base
• Ligne 6 : Cette ligne convertit la valeur Text en valeur String et l'affecte à la
variable de ligne.
• Ligne 7 : Cette ligne divise les données de la variable de ligne en utilisant
les espaces comme délimiteur et les affecte à une variable de tableau
nommée mots.
• Ligne 8 à 15 : cette partie du code analyse les données du tableau de mots.
• Ligne 10 : Cette ligne coupe et définit le mot actuel comme valeur de
la variable de mot.
• Ligne 11 : Cette ligne vérifie si le mot n'est pas vide.
• Ligne 13 : cette ligne émet la paire clé-valeur intermédiaire, où la clé
est le mot et la valeur est 1.
Reduce
• Ligne 7 : Cette ligne démarre une boucle pour parcourir chaque valeur
associée à la clé de saisie.
• Ligne 8 : Cette ligne ajoute la valeur à la somme actuelle, incrémentant le
décompte.
• Ligne 10 : Cette ligne définit la variable de résultat avec le nombre final du
mot.
• Ligne 11 : cette ligne émet la dernière paire clé-valeur, où la clé est le mot
et la valeur est le nombre total du mot.