Hadoop

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Hadoop
Logo

Développeur Apache Software Foundation
Dernière version 2.7.2 (25 janvier 2016)
Écrit en JavaVoir et modifier les données sur Wikidata
Environnements Multiplate-forme, principalement POSIX.
Type Architecture distribuée
Licence Licence Apache
Site web hadoop.apache.org

Hadoop est un framework libre et open source écrit en Java destiné à faciliter la création d'applications distribuées (au niveau du stockage des données et de leurs traitement) et échelonnables (scalables) permettant aux applications de travailler avec des milliers de nœuds et des pétaoctets de données. Ainsi chaque nœud est constitué de machines standard regroupées en grappe. Tous les modules de Hadoop sont conçus dans l'idée fondamentale que les pannes matérielles sont fréquentes et qu'en conséquence elles doivent être gérées automatiquement par le framework.

Hadoop a été inspiré par la publication de MapReduce, GoogleFS et BigTable de Google. Hadoop a été créé par Doug Cutting et fait partie des projets de la fondation logicielle Apache depuis 2009.

Le noyau d'Hadoop est constitué d'une partie de stockage: HDFS (Hadoop Distributed File System), et une partie de traitement appelé MapReduce. Hadoop fractionne les fichiers en gros blocs et les distribue à travers les nœuds du cluster. Pour traiter les données, Hadoop transfère le code à chaque nœud et chaque nœud traite les données dont il dispose. Cela permet de traiter l'ensemble des données plus rapidement et plus efficacement que dans une architecture supercalculateur plus classique[réf. nécessaire] qui repose sur un système de fichiers parallèle où les calculs et les données sont distribuées via les réseaux à grande vitesse.

Le framework Hadoop de base se compose des modules suivants:

  • Hadoop Common
  • Hadoop Distributed File System (HDFS) : le système de fichier
  • Hadoop YARN
  • Hadoop MapReduce

Le terme Hadoop se réfère non seulement aux modules de base ci-dessus, mais aussi à son écosystème et à l'ensemble des logiciels qui viennent s'y connecter comme Apache Pig, Apache Hive, Apache HBase, Apache Phoenix, Apache Spark, Apache ZooKeeper, Cloudera Impala, Apache Flume, Apache Sqoop, Apache oozie, Apache Storm.

Historique[modifier | modifier le code]

En 2006[réf. nécessaire], Google publie un article présentant son algorithme basé sur des opérations analytiques à grande échelle sur un grand cluster de serveurs, le MapReduce, ainsi que son système de fichier en cluster, le GoogleFS. Doug Cutting, qui travaille à cette époque sur le développement de Apache Lucene et rencontre des problèmes similaires à ceux de la firme de Mountain View, décide alors de reprendre les concepts décrits dans l'article pour développer sa propre version des outils en version Open Source, qui deviendra le projet Hadoop.

Il s'inspire du doudou de son fils de cinq ans, un éléphant jaune, pour le logo ainsi que pour le nom de ce nouveau framework Java[1].

Architecture[modifier | modifier le code]

Hadoop Distributed File System[modifier | modifier le code]

Le HDFS est un système de fichiers distribué, extensible et portable développé par Hadoop à partir du GoogleFS. Écrit en Java, il a été conçu pour stocker de très gros volumes de données sur un grand nombre de machines équipées de disques durs banalisés. Il permet l'abstraction de l'architecture physique de stockage, afin de manipuler un système de fichiers distribué comme s'il s'agissait d'un disque dur unique.

Une architecture de machines HDFS (aussi appelée cluster HDFS) repose sur deux types de composants majeurs :

NameNode
nœud de noms, ce composant gère l'espace de noms, l'arborescence du système de fichiers et les métadonnées des fichiers et des répertoires. Il centralise la localisation des blocs de données répartis dans le cluster. Il est unique mais dispose d'une instance secondaire qui gère l'historique des modifications dans le système de fichiers (rôle de backup). Ce NameNode secondaire permet la continuité du fonctionnement du cluster Hadoop en cas de panne du NameNode d'origine.
DataNode
nœud de données, ce composant stocke et restitue les blocs de données. Lors du processus de lecture d'un fichier, le NameNode est interrogé pour localiser l'ensemble des blocs de données. Pour chacun d'entre eux, le NameNode renvoie l'adresse du DataNode le plus accessible, c'est-à-dire le DataNode qui dispose de la plus grande bande passante. Les DataNodes communiquent de manière périodique au NameNode la liste des blocs de données qu'ils hébergent. Si certains de ces blocs ne sont pas assez répliqués dans le cluster, l'écriture de ces blocs s'effectue en cascade par copie sur d'autres.

Chaque DataNode sert de bloc de données sur le réseau en utilisant un protocole spécifique au HDFS. Le système de fichiers utilise la couche TCP/IP pour la communication. Les clients utilisent le Remote Procedure Call pour communiquer entre eux. Le HDFS stocke les fichiers de grande taille sur plusieurs machines. Il réalise la fiabilité en répliquant les données sur plusieurs hôtes et par conséquent ne nécessite pas de stockage RAID sur les hôtes. Avec la valeur par défaut de réplication, les données sont stockées sur trois nœuds : deux sur le même support et l'autre sur un support différent. Les DataNodes peuvent communiquer entre eux afin de rééquilibrer les données et de garder un niveau de réplication des données élevé.

Le HDFS n'est pas entièrement conforme aux spécifications POSIX, en effet les exigences relatives à un système de fichiers POSIX diffèrent des objectifs cibles pour une application Hadoop. Le compromis de ne pas avoir un système de fichiers totalement compatible POSIX permet d'accroître les performances du débit de données.

Le HDFS a récemment amélioré ses capacités de haute disponibilité, ce qui permet désormais au serveur de métadonnées principal d’être basculé manuellement sur une sauvegarde en cas d'échec (le basculement automatique est en cours d'élaboration). Les NameNodes étant le point unique pour le stockage et la gestion des métadonnées, ils peuvent être un goulot d'étranglement pour soutenir un grand nombre de fichiers, notamment lorsque ceux-ci sont de petite taille. En acceptant des espaces de noms multiples desservis par des NameNodes séparés, le HDFS limite ce problème.

MapReduce[modifier | modifier le code]

Article détaillé : MapReduce.

Hadoop dispose d'une implémentation complète du concept du MapReduce.

HBase[modifier | modifier le code]

Article détaillé : HBase.

HBase est une base de données distribuée disposant d'un stockage structuré pour les grandes tables.

Comme BigTable, HBase est une base de données orientée colonnes.

ZooKeeper[modifier | modifier le code]

Article détaillé : Apache ZooKeeper.

ZooKeeper est un logiciel de gestion de configuration pour systèmes distribués, basé sur le logiciel Chubby développé par Google. ZooKeeper est utilisé entre autres pour l'implémentation de HBase.

Hive[modifier | modifier le code]

Article détaillé : Apache Hive.

Hive est un logiciel d'analyse de données permettant d'utiliser Hadoop avec une syntaxe proche du SQL. Hive a été initialement développé par Facebook.

Pig[modifier | modifier le code]

Article détaillé : Apache Pig.

Pig est un logiciel d'analyse de données comparable à Hive, mais qui utilise le langage Pig Latin. Pig a été initialement développé par Yahoo!.

Utilisations[modifier | modifier le code]

Plusieurs grands noms de l'informatique ont déclaré utiliser Hadoop, comme Facebook, Yahoo, Microsoft[2] ou Qwant[3]. Depuis 2010, Facebook exploite le plus grand cluster Hadoop au monde[4].

WikiTrends est un service gratuit d’analyse d’audience de l’encyclopédie Wikipédia lancé en avril 2014. L'application, utilisant notamment Hadoop, permet de quantifier les thématiques les plus recherchées par les utilisateurs sur l’encyclopédie Wikipédia, au travers d'une interface de visualisation graphique[5],[6],[7].

Hadoop dans les nuages[modifier | modifier le code]

Ce modèle est-il pertinent ? Cliquez pour en voir d'autres.
Le ton de cet article ou de cette section est trop promotionnel ou publicitaire. (indiquez la date de pose grâce au paramètre date).

Modifiez l'article pour adopter un ton neutre (aide quant au style) ou discutez-en.

Hadoop peut-être déployé dans un datacenter traditionnel mais aussi au travers du cloud[8]. Le cloud permet aux organisations de déployer Hadoop sans acquisition de matériel ou d'expertise spécifique. Parmi les vendeurs qui ont une offre cloud on pourra citer : Microsoft, Amazon, IBM[9] et Google.

Microsoft Azure[modifier | modifier le code]

Azure HDInsight(HDI) [10] est un service qui déploie hadoop sur Microsoft Azure. HDInsight utilise Hortonworks HDP(Hortonworks Data Platform) et a été développé conjointement pour HDI avec Hortonworks. HDI permet la programmation d'extensions en .NET (en plus du Java). HDInsight prend également en charge la création de clusters Hadoop utilisant Ubuntu. En utilisant HDInsight dans le cloud, les entreprises peuvent exécuter le nombre de nœuds qu'elles souhaitent; elle seront facturées en fonction du calcul et du stockage qui est utilisé. Les implémentations Hortonworks peuvent également déplacer des données à partir d'un datacenter 'local' vers le cloud pour la sauvegarde, le développement / test et les scénarios de rupture. Il est également possible d'exécuter des clusters Cloudera ou Hortonworks Hadoop sur des machines virtuelles Azure.

Amazon EC2/S3 services[modifier | modifier le code]

Il est possible d'exécuter Hadoop sur Amazon Elastic Compute Cloud (EC2) et sur Amazon Simple Storage Service (S3). À titre d'exemple, The New York Times a utilisé 100 instances Amazon EC2 et une application de Hadoop pour traiter 4 to d'image raw TIFF (stockées dans S3) dans 11 millions de fichiers PDF. Le travail s'est achevé en l'espace de 24 heures pour un coût de calcul d'environ 240 $ (sans compter la bande passante)[11].

Distributions[modifier | modifier le code]

Hadoop est notamment distribuée par quatre acteurs qui proposent des services de formation et un support commercial, mais également des fonctions supplémentaires :

  • Cloudera[12], la première distribution historique d'Hadoop qui intègre les packages classiques et certains développements propriétaires comme Impala (en). C'est un service de formation et de support. À l'origine du Projet Impala. Elle n'est pas présente en France en 2013.
  • Hortonworks - C'est un service de formation et de support. Il n'est pas présent en France en 2013.
  • MapR Technologies - MapR a développé un système de fichier pour Hadoop palliant les limites du HDFS. MapR a également développé des technologies permettant la suppression du name node qui est un point de contentions dans l'architecture Hadoop. Un cluster Hadoop MapR est donc hautement disponible et permet également d’être intégré dans les politiques de sauvegarde des données des entreprises. Un cluster MapR est vu sur le réseau des clients comme un NAS partageant les données en NFS avec des droits POSIX. Il est à l'origine du projet Drill. Ouverture des activités européennes en janvier 2013. Bureau Français depuis mars 2013
  • IBM BigInsights for Hadoop, 100% open source Apache Hadoop, propose des extensions analytiques et d'intégration dans le SI d'entreprise. Il est disponible en France depuis 2010.

Notes et références[modifier | modifier le code]

  1. (en) « Hadoop Daddy Doug Cutting says there's an elephant in the room », The Register,‎ (lire en ligne)
  2. Liste d'entreprises déclarant utiliser Hadoop
  3. (en) « Qwant : les secrets techniques du moteur de recherche français »
  4. Antoine Crochet-Damais, Les technologies Open Source choisies par les géants du Web. Publié sur journaldunet.com le 04 janvier 2013.
  5. « WikiTrends, première application Big Data à restituer plus de 21 To de statistiques en temps réel » [PDF], sur www.itrpress.com,‎ (consulté le 10 novembre 2014)
  6. Christophe Cerqueira (directeur du pôle Ingensi - groupe Cyrès), « WikiTrends, l'application Big Data “French Touch” », sur www.channelbp.com,‎ (consulté le 10 novembre 2014)
  7. Marlène Duretz, « Même pas mal », Le Monde,‎ (lire en ligne)
  8. https://azure.microsoft.com/en-us/solutions/hadoop/
  9. http://www-03.ibm.com/software/products/en/ibm-biginsights-on-cloud
  10. https://azure.microsoft.com/en-us/services/hdinsight/
  11. http://open.blogs.nytimes.com/2007/11/01/self-service-prorated-super-computing-fun/?scp=1&sq=self%20service%20prorated&st=cse&_r=0
  12. Site officiel de Cloudera, présentant son service de formation et de support

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]