EA2013/mapreduce

=Présentation=
 * Titre : Big Data et MapReduce
 * Auteur : Marion Dalle 
 * Enseignants : Georges-Pierre Bonneau, Didier Donsez (EA2013)
 * Télécharger : [[File:MapReduce.pdf]]

=Abstract= MapReduce is a programming model for distributed large datas. The computation is parallelize across large-scale clusters of machines. It take place in the univers of Big Data. This paradigm was popularize by Google. It uses by great webs sites in majority for commercial purpose like Facebook and Amazon. Users specify the computation in terms of a map and a reduce function. It is based on the master slave model, with master replication to conserve datas. That gives it a fault detection and know handle its.

Keywords
Big Data, data mining, programming model

=Résumé= MapReduce est un patron d’architecture de développement informatique pour le calcul parallèle et distribué de données importantes. Il fait partie des traitements célèbre de l'univers du Big Data. Il a été popularisé par Google et est utilisé par d'autre site très célèbre comme Amazon et Facebook. Il permet de traiter un volume de données très importants. Son implémentation est faites de tel sorte qu'il détecte les pannes et sait les contourner. Il est basé sur le modèle de maître esclaves avec une réplication du maître, ce qui permet d'assurer la pérennité de nos données. Et il fonctionne avec seulement deux fonctions : Map et Reduce.

Mots-clés
Big Data, Data mining, Patron d'architecture, traitement de donnée

=Synthèse=

Big Data
Depuis quelques années, nous entendons parler du Big Data. Ce nouveau domaine est dû à l'explosion des données numériques. En effet, nous pouvons voir que lorsque Niels Amstrong est aller sur la lune il lui a fallu 32KB de mémoire (1969); aujourd'hui mon ordinateur personnel contient 8GB de RAM. Un autre exemple est celui des récoltes de données de Google. En deux ans, Google s'est mis à récolter quotidiennement ce qu'il récoltait en plus d'un mois. Il a donc fallu s’intéresser au traitement de ces dernières. Les bases de données n’étant plus assez performantes pour de tel quantité de données, de nouvel méthode ont été mise au point. C'est dans ce contexte que le MapReduce a été créé.

MapReduce
MapReduce est un patron d’architecture de développement informatique pour la calcul parallèle et distribué de données importante s. Il a été créé en 2004 et rendu célèbre par Google. D'autres site connu l'utilise afin de pouvoir utiliser leur donnée surtout a des fin commerciale. C'est le cas de Facebook et d'Amazon. Pour utiliser le MapReduce et traiter les données il faut déposer ces dernières sur un cluster qui permettra d'effectuer des calculs en parallèles.

Afin d'utiliser MapReduce, il y a des framework conçues pour son implémentation. J'ai pris le choix de m’intéresser à celui conçue par apache, Hadoop. Apache a aussi créé Hive qui un système de gestion d'entrepôts de données (datawarehouse), utilisable avec Hadoop. Ainsi que Mahout qui est un canevas de data mining. Ces algorithmes de regroupement (clustering), classification et filtrage collaboratif sont implémentés au dessus d'Hadoop et utilise le modèle MapReduce.

Les deux fonctions de bases Map et Reduce
Le MapReduce est comme son nom l'indique basé sur les deux fonctions Map et Reduce.

Map
Elle prend en paramètre des données, les découpes et renvoie une liste de doublons contenant des données rattachées à une clé. Elle est appeler de manière recursive sur chaque élément de la liste alors obtenue jusqu'à obtenir des listes de données où la taille a été assez réduite pour être traité par la fonction Reduce. Chaque bloc ainsi obtenue est de la même tailles que les autres.

Ce qui nous donne à peu près le schéma suivant :



Reduce
Prend en paramètre le résultat final de la fonction Map et une clé qui lui indique quelles données regrouper. Il traite les données alors reçu en paramètre et rend une liste en fonction de la clé demandée. Il permet aussi de regrouper les résultats en un seul et même résultat final.

On a alors le schéma suivant, où les boites oranges sont les Reduce :



Organisation du travail en nœuds de calcul
La répartition du travail est contrôlé par le maître. Ce dernier fait en sorte que chaque nœuds de calcul libre fassent une fonction en parallèles des autres quand cela est possible. Ce qui permet d'optimiser le temps de calcul. Chaque fonction réalisant un travail indépendant, il n'y a pas de difficulté à distribué les données entre les nœuds. Ce qui nos vaut que dès qu'un nœud a fini son travail le mâitre lui en affecte un autre.

Il est important de préciser que les fonctions sont bloquantes, c'est à dire que quand on débute une fonction il faut la finir dans sa totalité avant de pouvoir passer à un autre travail. Il n'est donc pas possible d'assigner un nouveau travail a un nœud en cours de traitements.

Détecter et réparer les pannes
Le système est organiser de la manière suivante :

Comme on peut le constater le maître et dupliquer afin d'assurer que si il tombe en panne un autre puisse prendre sont relai et qu'on ne perde pas la vue d'ensemble du système qui nous obligerai alors à recommencer tout le travail.

Démonstration
=Sources=
 * http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/fr//archive/mapreduce-osdi04.pdf
 * http://fr.wikipedia.org/wiki/MapReduce
 * http://hadoop.apache.org/
 * http://highlyscalable.wordpress.com/2012/02/01/mapreduce-patterns/