Vous êtes sur la page 1sur 6

CHAPITRE 5 :

MapReduce
MapReduce est un modèle de programmation créé par Google pour le traitement
et la génération de larges ensembles de données sur des clusters d’ordinateurs.
Il s’agit d’un composant central du Framework logiciel Apache Hadoop, qui
permet le traitement résilient et distribué d’ensembles de données non
structurées massifs sur des clusters d’ordinateurs, au sein desquels chaque nœud
possède son propre espace de stockage.
Le concept du MapReduce est de décomposer le traitement des données en deux
phases :
• La phase Map : les données sont extraites par les mappers,
transformées puis préparées pour les reducers.
• La phase Reduce : les données sont collectées des mappers puis
traitées et analysées.
MapReduce permet de manipuler de grandes quantités de données en les
distribuant dans un cluster de machines pour être traitées,
MapReduce connais un succès auprès de sociétés possédant d'importants centres
de traitement de données telles Amazon.com ou Facebook,
MapReduce est utilisé au sein du Cloud Computing,

MapReduce consiste en deux fonctions map() et reduce(),


• Dans l'étape Map, le nœud analyse un problème, le découpe en
sous-problèmes, et les délègue à d'autres nœuds (qui peuvent en
faire de même récursivement). Les sous-problèmes sont ensuite
CHAPITRE 5 :
MapReduce
traités par les différents nœuds à l'aide de la fonction Map() qui à
un couple (clé, valeur) associe un ensemble de nouveaux couples
(clé, valeur) : map(clé1,valeur1) → list(clé2,valeur2)
• Dans l'étape Reduce, les nœuds les plus bas font remonter leurs
résultats au nœud parent qui les avait sollicités. Celui-ci calcule un
résultat partiel à l'aide de la fonction Reduce qui associe toutes les
valeurs correspondantes à la même clé à une unique paire (clé,
valeur). Puis il remonte l'information à son tour.
À la fin du processus, le nœud d'origine peut recomposer une réponse au
problème qui lui avait été soumis : reduce(key2,list(valeur2))→ valeur2
Composants de MapReduce :
• JobTracker : le nœud principal qui gère toutes les tâches et
ressources d'un cluster,
• TaskTrackers : ces agents déployés sur chacune des machines du
cluster exécutent les tâches de répartition (Map) et de d’agrégation
(reduce),
JobHistoryServer : généralement déployé en tant que fonction distincte ou avec
JobTracker, ce composant assure le suivi des tâches effectuées.
• Caractéristiques de MapReduce :
Le modèle de programmation du MapReduce est simple mais très expressif,
Deux fonctions, map() et reduce() qui peuvent être utilisées pour de nombreux
types de traitement des données, les fouilles de données, les graphes…
Il est indépendant du système de stockage et peut manipuler de nombreux types
de variable,
Le système découpe automatiquement les données en entrée en blocs de données
de même taille. Puis, il planifie l’exécution des tâches sur les nœuds disponibles,
Il fournit une tolérance aux fautes à grain fin grâce à laquelle il peut redémarrer
les nœuds ayant rencontré une erreur ou affecter la tâche à un autre nœud,
La parallélisation est invisible à l'utilisateur afin de lui permettre de se
concentrer sur le traitement des données.
• Points faibles de MapReduce :
CHAPITRE 5 :
MapReduce
Ne supporte pas les langages haut niveau comme le SQL
Ne gère pas les index.
Utilise un seul flot de données.
Quelques points peuvent réduire les performances de MapReduce.
Les méthodes map() et reduce() sont bloquantes. Cela signifie que pour passer à
l'étape suivante, il faut attendre que toutes les tâches de l'étape courante soient
terminées,
N'a pas de plan spécifique d'exécution et n'optimise pas le transfert de données
entre les nœuds.
Paradigme MapReduce
Modèle de programmation développé chez Google
Trier / fusionner l'informatique distribuée
Initialement, il était destiné à leur application de recherche / indexation interne,
mais il est maintenant largement utilisé par de nombreuses organisations
(Yahoo, Amazon.com, IBM, etc.).
C'est une programmation fonctionnelle (par exemple, LISP) qui est
naturellement parallélisable sur un grand cluster de stations de travail ou PCS.
Le système sous-jacent s’occupe du partitionnement des données d’entrée,
planifie l’exécution du programme sur plusieurs machines, gère les pannes
de la machine et la communication requises entre les machines. (C’est la clé
du succès de Hadoop)
Comment fonctionne MapReduce ?
Le moteur d'exécution partitionne l'entrée et la fournit à différentes instances du
Map; Map (clé, valeur)  (clé’, valeur’)
Le temps d’exécution collecte les paires (clé’, valeur’) et les distribue en
plusieurs fonctions de réduction afin que chaque fonction de réduction obtienne
les paires avec la même clé’.
Chaque Reduce produit une sortie de fichier unique (ou aucune).
Map et Reduce sont des fonctions écrites par l'utilisateur.
CHAPITRE 5 :
MapReduce
MapReduce : tolérance aux pannes
1. Échec du « worker » (travailleur) : le maître envoie un ping à chaque
travailleur périodiquement. Si aucune réponse n'est reçue d'un agent au
bout d'un certain temps, le maître le marque comme ayant échoué. Toutes
les tâches de carte terminées par le travailleur sont réinitialisées à leur état
initial inactif et deviennent donc éligibles pour la planification sur d'autres
travailleurs. De même, toute tâche de mappage ou tâche de réduction en
cours sur un travailleur en échec est également réinitialisée pour devenir
inactive et devient éligible pour une nouvelle planification.
2. Échec du maître : il est facile d’obliger le maître à écrire des points de
contrôle périodiques des structures de données principales décrites ci-
dessus. Si la tâche principale meurt, une nouvelle copie peut être
démarrée à partir du dernier état de point de contrôle. Cependant, dans la
plupart des cas, l'utilisateur redémarre le travail.
Mappage des travailleurs aux processeurs
• Les données d'entrée (sur HDFS) sont stockées sur les disques locaux des
ordinateurs du cluster. HDFS divise chaque fichier en blocs de 64 Mo et
stocke plusieurs copies de chaque bloc (généralement 3 copies) sur des
ordinateurs différents.
• Le maître MapReduce prend en compte les informations d’emplacement
des fichiers d’entrée et tente de planifier une tâche de Map sur une
machine contenant une réplique des données d’entrée correspondantes. À
défaut, il tente de planifier une tâche de Map à proximité d'une réplique
des données d'entrée de cette tâche. Lors de l'exécution d'opérations
MapReduce volumineuses sur une fraction significative des travailleurs
d'un cluster, la plupart des données d'entrée sont lues localement et ne
consomment pas de bande passante réseau.
Granularité des tâches
La phase de Map comporte M pièces et la phase Reduce, R pièces.
M et R doivent être beaucoup plus larges que le nombre de machines de travail.
Le fait que chaque utilisateur effectue de nombreuses tâches différentes améliore
l’équilibrage dynamique de la charge et accélère également la récupération en
cas de défaillance d’un travailleur.
CHAPITRE 5 :
MapReduce
Plus le M et le R sont élevés, plus le maître doit prendre de décisions.
R est souvent contraint par les utilisateurs car la sortie de chaque tâche Reduce
aboutit dans un fichier de sortie séparé.
En générale (sur Google), M = 200 000 et R = 5 000, en utilisant 2 000 postes de
travail.
Fonctions de support supplémentaires
• Fonction de partitionnement : Les utilisateurs de MapReduce spécifient
le nombre de tâches Reduce / de fichiers de sortie souhaités (R). Les
données sont partitionnées entre ces tâches à l'aide d'une fonction de
partitionnement sur la clé intermédiaire. Une fonction de partitionnement
par défaut utilisant le hachage (par exemple .hash (clé) mod R.) est
fournie. Dans certains cas, il peut être utile de partitionner les données
selon une autre fonction de la clé. L'utilisateur de la bibliothèque
MapReduce peut fournir une fonction de partitionnement spéciale.
• Fonction de combinaison : L'utilisateur peut spécifier une fonction de
combinaison qui fusionne partiellement les données du disque local
intermédiaire avant leur envoi sur le réseau. La fonction de combinaison
est exécutée sur chaque machine qui effectue une tâche de Map.
Généralement, le même code est utilisé pour implémenter les fonctions de
combinaison et de Reduce.
Qu’est ce que MapReduce ?
Modèle de programmation parallèle restreint destiné aux grands clusters
L'utilisateur implémente les fonctions Map() et Reduce()
Framework de calcul parallèle
Les bibliothèques s'occupent de TOUT le reste
• Parallélisation
• Tolérance aux pannes
• Distribution de données
• Equilibrage de charge
Modèle utile pour de nombreux jobs pratiques
CHAPITRE 5 :
MapReduce
Fonctions Map & Reduce
Fonctions empruntées à des langages de programmation fonctionnels (par
exemple, Lisp)
Map() : Traiter une paire clé/valeur pour générer des paires clé/valeur
intermédiaires
Reduce() : Fusionner toutes les valeurs intermédiaires associées à la même clé
Exécution sur des clusters
1. Division des fichiers Input (M fractionnement)
2. Affecter un maître et des ouvriers
3. Tâche Map
4. Écriture de données intermédiaires sur le disque (R régions)
5. Lecture et tri des données intermédiaires
6. Tâche Reduce
7. Retour
Map Reduce Vs. bases de données parallèles
Map Reduce est largement utilisé pour le traitement en parallèle
Google, Yahoo et des centaines d'autres entreprises
Exemples d'utilisations: calculer le « PageRank », construire des index de mots-
clés, analyser les données des journaux de clics Web, …
 Les utilisateurs de bases de données disent : Les bases de données
parallèles le font depuis des décennies
 Les utilisateurs de Map Reduce disent : Nous agissons à des échelles de
1000 machines .Nous gérons les pannes de manière transparente
Nous autorisons le code procédural dans Map Reduce et nous autorisons les
données de tout type

Vous aimerez peut-être aussi