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%