Lorsque l’on évoque la question du Big Data, la première technologie qui vient à l’esprit de nombre d’entreprises est Hadoop, le framework analytique Java développé au sein de la fondation Apache. Hadoop reste toutefois un mystère pour nombre d’utilisateurs. SolutionITPME a donc décidé de faire le point sur Hadoop, sur son histoire et sur les différentes briques technologiques qui composent le framework.

Doug Cutting, le créateur d’Hadoop et l’éléphant qui servait de doudou à son fils, et fait aujourd’hui figure de logo pour le framework Java

Hadoop trouve ironiquement ses racines dans des technologies propriétaires de Google. En 2004, le moteur de recherche a publié un article de recherche présentant son algorithme MapReduce, conçu pour réaliser des opérations analytiques à grande échelle sur un grand cluster de serveurs, et sur son système de fichier en cluster, Google Filesystem (GFS). Doug Cutting, qui travaillait alors sur le développement du moteur de recherche libre Apache Lucene et butait sur les mêmes problèmes de taille qu’avait rencontré Google, s’est alors emparé des concepts décrits dans l’article de du géant de la recherche et a décidé de répliquer en open source les outils développés par Google pour ses besoins. Employé chez Yahoo, il s’est alors lancé dans le développement de ce qui est devenu le projet Hadoop – pour la petite histoire, Hadoop est le nom de l’éléphant qui servait de doudou à son jeune fils.

Un framework modulaire

Hadoop n’a pas été conçu pour traiter de grandes quantités de données structurées à grande vitesse, une mission qui reste largement l’apanage des grands systèmes de DataWarehouse. La spécialité du Framework, c’est le traitement à très grande échelle de grands volumes de données non structurées tels que des documents textuels, des images, des fichiers audio…

Les différents composants de la distribution Hadoop MapR, revendue par EMC sous le nom Greenplum MR

Au cœur d’Hadoop se trouve avant tout un système de fichiers en cluster, baptisé HDFS (Hadoop Distributed Filesystem). HDFS est 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. Le filesystem est conçu pour assurer la sécurité des données en répliquant de multiples fois l’ensemble des données écrites sur le cluster (par défaut chaque donnée est écrite sur trois nœuds différents). Il est optimisé pour maximiser les débits de données et non pas pour les opérations transactionnelles aléatoires. La taille d’un bloc de données est ainsi de 64 Mo dans HDFS contre 512 octets à 4 Ko dans la plupart des filesystem traditionnels Cette taille de bloc s’explique par le fait que Hadoop doit analyser de grandes quantités de données en local. Avec HDFS certains nœuds ont en charge la gestion des métadonnées (les name nodes) tandis que d’autres stockent les données (data nodes). Historiquement, une des fragilités d’HDFS était qu’il ne pouvait y avoir qu’un namenode dans un cluster, mais cette fragilité a été corrigée. Un autre « défaut » est que HDFS n’est pas conforme au standard POSIX et que certaines commandes familières sur un filesystem traditionnel ne sont pas disponibles.

[Cliquez ici pour consulter l’intégralité des « leçons » de vulgarisation
technique de SolutionITPME]

Il est à noter que si HDFS est le filesystem par défaut d’Hadoop, le framework peut aussi être déployé sur des filesystem tiers, souvent grâce à des couches de compatibilité. MapR l’un des pionniers d’Hadoop et partenaire d’EMC, a ainsi développé son propre système de fichier qui règle le problème de fragilité lié aux namenodes d’HDFS et qui ajoute aussi des fonctions avancées comme les snapshot, la réplication ou le clonage. Isilon a quant à lui développé un pont entre HDFS et son filesystem OneFS de façon à ce que les données d’un cluster soient stockées sur un cluster Isilon.

Le second composant majeur d’Hadoop est MapReduce, qui gère la répartition et l’exécution des requêtes sur les données stockées par le cluster. Le moteur MapReduce a pour but de distribuer les travaux d’analyses entre les différents nœuds du cluster. Il inclut un mécanisme de distribution de « jobs » – le JobTracker – et un mécanisme de suivi de l’exécution de ces jobs – le TaskTracker. Ce dernier est distribué sur l’ensemble des nœuds et fait remonter au JobTracker l’état des jobs en cours. Il est à noter que la distribution des jobs inclut des mécanismes d’optimisation de telle sorte que les jobs sont placés au plus près des données qu’ils doivent manipuler.

De nouveaux outils et langages pour faciliter les requêtes sur Hadoop

Les API clés de MapReduce sont accessibles en Java, un langage certes populaire mais qui requiert des compétences bien plus pointues que la maîtrise d’un langage d’interrogation comme SQL. Plusieurs langages ont donc émergé pour tenter de simplifier le travail des utilisateurs d’Hadoop, dont Pig et Hive. Né chez Yahoo, Pig est conçu pour traiter toute forme de données. Le langage de Pig est PigLatin, complété par un runtime destiné à exécuter les programmes rédigés en PigLatin. PigLatin a une sémantique assez simple. Il permet de charger des données, puis de les manipuler (appliquer des filtres, des groupements, des opérations mathématiques…).

Chez Facebook, des développeurs ont quant à eux conçu Hive, pour permettre à des développeurs familiers du langage SQL de manipuler des données dans Hadoop. Hive dispose d’un langage baptisé HQL (Hive Query Langage) dont la syntaxe est similaire à celle de SQL. Le service Hive découpe les requêtes en jobs MapReduce afin de les exécuter sur le cluster.

Au fil des ans, Hadoop  a continué à s’enrichir de nouvelles applications, comme la base de données Hbase, qui fournit des services similaires au service BigTable de Google. Hbase est une base de données en colonnes (dans la mouvance NoSQL) qui s’appuie sur HDFS pour le stockage de ses données. Hbase est notamment utile pour ceux qui ont besoin d’accès aléatoires en lecture/écriture à de grands volumes de données. Parmi les autres composants connus, on peut aussi citer la technologie d’apprentissage Apache Mahout, ainsi que la technologie d’administration de cluster Zookeeper. Zookeeper est lui-même un service distribué qui permet de coordonner l’ensemble des processus distribués sur le cluster, mais aussi de gérer les configurations de ses différents éléments.

Signalons pour terminer que le périmètre d’Hadoop continue de s’élargir, les différents développeurs de distributions Hadoop ajoutant progressivement de nouveaux composants, outils ou langages afin d’enrichir les composants de base du Framework. Un signe évident du dynamisme de l’écosystème Hadoop, mais aussi de sa relative jeunesse.