Inovia Blog

L’actualité des technologies innovantes

Hadoop, une introduction - 1/3

Par Kadda SAHNINE

Publié le | 6 octobre 2009 |

hadoop.pngLe 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 :

  1. savoir être et
  2. savoir faire
  3. 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 :

mapreduce.png

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 :

Abonnez vous !
  • RSS
  • Yahoo
  • Netvibes

Suivez l'auteur sur Twitter !
  • Suivre sur Twitter

A propos de l'auteur

Kadda SAHNINE
Architecte technique Java EE
#JavaEE #Linux #vim addict #OpenSoftware #OpenHardware
Voir le profil de Kadda Sahnine sur LinkedIn

Flux RSS

Rechercher

Administration