MapReduce
1. Introduction
2. Architecture
3. Stockage de données
4. Apache Hadoop
5. Bilan MapReduce
6. Intégration dans le SI
VI.2
1. Qu'est ce que MapReduce?
• Un framework pour l'analyse de big data
• Inventé par Google
• Ecrit en C++
• Propriétaire, protégé par des brevets “non offensifs”
• Pour données non structurées, sans schéma, etc.
• SQL ou Xquery trop lourd
• Pour de très grands clusters
• Des milliers de nœuds
• Partitionnement et parallélisation automatiques
• De nombreuses variations
• Hadoop (Apache), Hadoop++, Amazon MapReduce, etc.
VI.3
Modèle de programmation
• Données sous forme de paires (key, value)
• Ex. (doc-id, content), (word, count), etc.
• Le programmeur fournit le code de deux fonctions :
1. Map (key, value) -> list(ikey, ivalue)
• Permet de faire le même traitement en parallèle sur des
données partitionnées
2. Reduce(ikey, list(ivalue)) –> list(ikey, fvalue)
• Permet d'agréger les données traitées par Map
• Traitement parallèle des étapes Map et Reduce
• Partitionnement des données
• Tolérance aux fautes
• Ordonnancement des accès disques
• Monitoring
VI.4
Exemples d’applications de MapReduce
• Au départ pour des données web
• Compter le nombre de certains mots dans un ensemble
de documents
• Calculer un fichier inverse pour un ensemble de
documents
• Grep distribué: text pattern matching
• Compter les fréquences d’accès URL dans un web log
• Calculer un graphe inverse de liens web
• Compter les vecteurs de termes (résumant les mots les
plus importants) dans un ensemble de documents
• Tri distribué
VI.5
Fonctionnement MapReduce
Map$
…$
(k1,v)$
(k2,v)$
Group$
by$k$
Map$ (k2,v)$
(k2,v)$
Map$ (k1,v)$
Map$ (k1,v)$
(k2,v)$
(k1,(v,v,v))$
$
$
(k2,(v,v,v,v))$
Reduce$
Reduce$
Group$
by$k$
Input$data$set$
Output$data$set$
Reduce$Shuffle$Map$
Split$0$
Split$1$
Split$2$
1 / 44 100%