Présentation Map reduce altnetfr

Preview:

DESCRIPTION

Session Alt.net Paris du 15 juin chez Octo, animée par Yann Schwartz.Au menu de cette session :Principes du map/reduce : définition, à quoi ça sertUne implémentation en C# pour comprendreUtilisation du map reduce en NoSQLUn serveur dédié map-reduce : Hadoophadoop : mapreduce et filesystem distribuémapreduce de basepig latin (un langage semi procédural – à la linq – au dessus de mapreduce)Conclusion : pour quoi utiliser mapreduce dans vos traitements

Citation preview

Site : www.altnetfr.orgTwitter : @altnetfr et #altnetfr

Propositions de sessions:sessions@altnetfr.org

MapReduce

Yann Schwartz

2011-06-15@abolibibelot

Remerciements

OCTO pour l’accueil

Alt.Net Paris

Au menu

Au menuC’est quoi ?

Oui, mais à quoi bon ?

Et comment ça marche ?

Ah, et ça sert vraiment ?

Sauf que…

Bon, et ensuite ?

C’est quoi ?

Petites parenthèses

(reduce + (map #(* % %) [1 2 3 4]))

new[]{1,2,3,4}.Select(x => x*x)

.Aggregate(0, (acc, x) => acc + x)

InterludeUn peu de LINQ…

Map : k1,v1 -> list(k2,v2)

Reduce : k2, list(v2) -> v3

Map : Projection, filtre, transformation

Reduce : agrégation

Oui mais à quoi bon ?

Map Reduce

2004 : Google

« Simplified Data Processing on Large Clusters »

Jeffrey Dean et Sanjay Ghemawat

http://labs.google.com/papers/mapreduce.html

Séquence d’un framework Map Reduce

1. Choix des entrées, parallélisation

2. Map

3. Regroupement (parallèle)

4. Reduce

5. Restitution(en rouge, ce qu’on écrit soi-

même)

MR modélise une pipeline de forks et de joins, sans expliciter les forks ni les joins

• Le framework se charge• Du découpage• De la réconciliation• De la distribution des données (et du code)• Du failover

…la partie horrible en fait.

Mais ça s’utilise vraiment ?

NoSQL

Souvent du sharding

Les requêtes réparties peuvent être traduites par

Traiter les données sur chacun des shards

Agréger les résultats de chaque shard

Regrouper ces résultats

Pas de clustering (SGBD) et du map reduce

Map Reduce et NoSQL

CouchDBRequêtes prédéfinies (vues), exprimées en MR

MongoDBMR utilisé comme généralisation du GROUP BY

RavenDBMap Reduce utilisé pour créer des index en LINQ (pas distribué)

Hadoop

Open Source (projet Apache)

Impl émentation du paper de Google

Yahoo principal contributeur

En Java…

Qu’est-ce qu’il y a dans la boîte ?

Un système de fichiers réparti (HDFS)Réplication et distribution

Un scheduler de jobs et de tâchesReprise, failover, supervision

Optimisation de la localité des données

Et on met quoi dans la boîte ?

Les données (la plupart du temps des fichiers)

Le codeMapper

Reducer

Partitionner

Sauf que…

C’est pas si simple

• Map et Reduce sont des primitives• Pas toujours évident d’exprimer son intention• Casser les algorithmes pour se conformer à

MR

• Certains concepts très difficiles à exprimer• Boucles, conditions, etc.

• On n’est pas en fonctionnel pur• Accès vers l’extérieur• Effets de bord

Alors on empile

Pig Latin pour Hadoopexpression impérative

Compilé en MR

Hive pour HadoopOn déguise MR en un SGBD

Bon et ensuite…

Traitement des flux

LINQ to HPC (ex DryadLINQ)

Pour approfondirlabs.google.com/papers/mapreduce.html

couchdb.apache.org

ravendb.net

mongodb.org

hadoop.apache.org

Excellente présentation d’Hadoop slidesha.re/5n8npE

LINQ to HPC : bit.ly/jygFr2

Crédits illustrations

Documentation Hadoop

Paper mapreduce labs.google.com/papers/mapreduce-osdi04-slides/index.html

Des Questions ?

Merci !

Recommended