Hadoop, une introduction - 1/3
Par Kadda SAHNINEPublié le | octobre 6, 2009 |
Le grid computing est une technique informatique permettant de distribuer un traitement à travers un cluster de serveurs. La puissance de calcul induite, combinée à une puissance de stockage constituent les traits dominants du cloud computing. En définitive, le cloud computing peut se définir comme l’association d’une technique (grid computing, puissance de stockage) et d’un modèle économique fondé sur une facturation à la consommation, laquelle est évidemment indexée sur l’utilisation réelle des ressources.
Cette série d’articles est une invitation à découvrir Hadoop, un ensemble de projets open source coordonnés par l’Apache Software Foundation, dont la finalité est d’implémenter un environnement d’exécution distribué. Cette initiative est fortement encouragée par Yahoo!, d’une part parce que cette firme est un contributeur majeur, d’autre part parce qu’elle le met en œuvre dans un des 4 composants critiques de son moteur de recherche.
Pourquoi s’intéresser à Hadoop ?
Ce qui fait la spécificité de Hadoop est qu’il est conçu pour traiter un énorme volume de données en un temps record. A titre d’exemple, les labs de Yahoo! ont trié l’équivalent de 500 GB de données en 59 secondes sur un cluster de 1400 nœuds (Avril 2009).
Sa vocation première est donc d’implémenter des traitements batchs performants, particulièrement lorsqu’ils impliquent un volume de données très important. En dehors de Yahoo!, citons les cas d’utilisation de deux sociétés prestigieuses :
- La plateforme musicale Last.fm met en œuvre Hadoop pour générer les statistiques hebdomadaires (Tops artistes et Top titres) ou mesurer les tendances musicales.
- Facebook l’utilise pour la production de rapports à usage interne, comme la performance des campagnes publicitaires opérées par la plateforme sociale, ou des statistiques diverses (croissance du nombre des utilisateurs, consultation des pages, temps moyen de consultation du site, etc.)
L’algorithme MapReduce
Les principes
MapReduce est un paradigme de programmation introduit par Google (à l’occasion de la publication d’une note) pour traiter de gros volumes de données. Le modèle est relativement simple. Il consiste à découper le traitement en 2 phases :
- la première phase (Map) est une étape d’ingestion et de transformation des données sous la forme de paires clé/valeur
- la seconde phase (Reduce) est une étape de fusion des enregistrements par clé pour former le résultat final.
Ainsi, et c’est un principe qui est au cœur de Hadoop, les données à traiter en entrée sont découpées en “petites” unités (64M par défaut), chacune étant traitée en parallèle par une fonction Map. Le résultat des traitements unitaires est trié par clé pour former des unités de données passées à une fonction Reduce. C’est parce-que les programmes MapReduce sont intrinsèquement prévu pour être exécutés en parallèle qu’il est possible de répartir le traitement.
Un cas d’utilisation
Pour illustrer l’algorithme MapReduce, considérons un jeu de données constitué des 3 phrases suivantes :
-
savoir être et
-
savoir faire
-
sans faire savoir
Le but de l’illustration est d’appliquer le modèle MapReduce afin de sortir le nombre d’occurrences des mots constituant le texte. L’ensemble du processus est schématisé ci-dessous :

L’écosystème Hadoop
Comme indiqué dans l’introduction, Hadoop n’est pas un projet monolithique mais un ensemble de sous-projets. Toutefois, Hadoop est mieux connu pour mettre en œuvre les trois sous-projets suivants :
- Hadoop Common (anciennement Hadoop Core) est un ensemble de composants communs pour la gestion des systèmes de fichiers distribués (sérialisation, Java RPC, etc.). Il est notamment utilisé par les sous-projets MapReduce et HDFS.
- MapReduce est le framework de distribution de traitement implémentant le modèle du même nom
- HDFS (anciennement NDFS) implémente le système de fichier distribué. En particulier, lorsque le fichier de données à traiter dépasse la capacité de stockage d’une seule machine, il est nécessaire de le partitionner à travers un cluster de machine. L’utilisation d’un système de fichiers distribué fait donc sens.
- Avro est un système de sérialisation ouvert aux langages de scripting. A ce jour, Avro n’est utilisé par aucun sous-projet Hadoop.
La description des autres sous-projets (Pig, HBase, ZooKeeper, Hive, Chukwa) dépasse le cadre de cet article.
Dans le prochain article de la série, nous verrons comment développer et exécuter une application MapReduce avec Hadoop.
Articles en relation :
Comments
3 Responses to “Hadoop, une introduction - 1/3”
Laisser un commentaire
novembre 10th, 2009 @ 23:36
[…] span.hl { background-color: lightyellow;} span.h { display: none;} p.code_ { overflow-x : auto; padding: 0px 0px; margin: 0px 0px; font-family: courier, monospace; font-size: 10px; line-height: 11px; margin: 10px 10px; padding: 10px 10px; border: 1px solid darkblue; background-color: lightyellow; } Après quelques présentations liminaires du projet Hadoop et du modèle MapReduce, nous aborderons dans ce second article les questions liées à l’architecture du framework ainsi que les aspects pratiques du développement. L’application de comptage de mots présenté dans le premier volet de la série constitue le fil conducteur de la série. La lecture de ce billet est donc un préalable. […]
janvier 6th, 2010 @ 13:28
[…] Dans ce troisième et dernier volet de la série, nous dresserons un panorama de l’écosystème Hadoop. La lecture des deux premiers billets est un préalable utile. […]
mai 20th, 2010 @ 6:14
Merci beaucoup pour cette magnifique explication…! thanx a lot!