Le Big Data est le terme de référence pour désigner la quantité gran­dis­sante de données sur le Web. Les in­gé­nieurs dé­ve­lop­pent des méthodes toujours plus efficaces pour traiter sys­té­ma­ti­que­ment ces données et les stocker ef­fi­ca­ce­ment. Les masses de données à hauteur de plusieurs Petabytes ou exabytes, sont loin de faire office de cas de figures rares. Les données de cette ampleur ne peuvent être gérées par quelques systèmes uniques. Les analystes du Big Data misent pour cela sur des pla­te­formes lo­gi­cielles pour permettre de mener à bien les opé­ra­tions in­for­ma­tiques les plus complexes et de les partager sur dif­fé­rents nœuds de cal­cu­la­teurs physiques. Une solution largement appréciée est offerte pour cela par Apache Hadoop, un framework qui sert de base à la dis­tri­bu­tion de dif­fé­rentes suites du Big Data.

Compute Engine
La solution IaaS idéale pour gérer vos charges de travail
  • vCPU aux coûts avan­ta­geux et cœurs dédiés per­for­mants
  • Sans en­ga­ge­ment pour plus de flexi­bi­lité
  • As­sis­tance par des experts 24h/24 et 7j/7 incluse

Apache Hadoop, c’est quoi au juste ?

Apache Hadoop se base sur Java pour dif­fé­rents com­po­sants logiciels, et permet de procéder à une tay­lo­ri­sa­tion du travail. Ainsi, les calculs sont répartis sur dif­fé­rents nœuds d’un cluster (grappe, ou ensemble) d’or­di­na­teurs et de les faire tra­vail­ler en parallèle. Les struc­tures Hadoop les plus im­por­tantes comptent plus d’un millier d’or­di­na­teurs. Ce concept a pour avantage que chaque or­di­na­teur du cluster ne re­pré­sente qu’une infime partie des res­sources ma­té­rielles né­ces­saires. Le trai­te­ment de ces im­por­tantes quantités de données n’a pas besoin d’être effectué sur des cal­cu­la­teurs élaborés, mais sim­ple­ment sur une multitude de serveurs standards, ce qui permet d’effectuer des économies im­por­tantes. 

Le projet en open source Hadoop a été créé en 2006 par le dé­ve­lop­peur Doug Cutting et se base sur l’al­go­rithme MapReduce de Google. Doug Cutting s’est rendu compte du potentiel de cet al­go­rithme en 2004, lorsque le moteur de recherche a dévoilé des in­for­ma­tions sur une tech­no­lo­gie per­met­tant de faire traiter en parallèle d’im­por­tantes quantités de données par dif­fé­rents clusters d’or­di­na­teurs. C’est Yahoo qui a tout d’abord soutenu le dé­ve­lop­peur dans ce projet. En 2008, Hadoop est devenu le projet prio­ri­taire de l’Apache Software Foun­da­tion, pour atteindre par la suite le statut 1.0.0.

À côté du lancement officiel de l’Apache Software Foun­da­tion, dif­fé­rentes variantes de ce framework logiciel sont dis­po­nibles. Chez Cloudera par exemple, il existe une as­sis­tance Hadoop nommée « en­ter­prise ready », également en open source. Des produits si­mi­laires sont également dis­po­nibles chez Hor­ton­works et Teradata. En ce qui concerne Microsoft, le service Azure, basé sur le Cloud, a été intégré dans Hadoop. Quant à IBM, c’est In­foS­phere Bi­gIn­sights qui se base sur le projet d’Apache.

La structure d’Hadoop : cons­truc­tion et éléments de base

Lorsque l’on évoque Hadoop, c’est gé­né­ra­le­ment de l’ensemble de l’éco­sys­tème du logiciel dont il est question. En plus des com­po­sants du noyau, (le Core Hadoop), il existe de nom­breuses ex­ten­sions aux dé­no­mi­na­tions ori­gi­nales, comme  Pig, Chukwa, Oozie ou encore ZooKeeper, qui per­met­tent au framework de tra­vail­ler des quantités très im­por­tantes de données. Ces projets, élaborés les uns à partir des autres, sont soutenus par l’Apache Software Foun­da­tion.

Le noyau, ou Core Hadoop, constitue la base fon­da­men­tale de l’éco­sys­tème de Hadoop. Les éléments qui le composent sont présents dans la version 1 du module de base Hadoop Common, du Hadoop Dis­tri­bu­ted File System (HDFS) et du MapReduce Engine. À partir de la version 2.3, le système de gestion en clusters YARN (également appelé MapReduce 2.0) le remplace. Ceci exclut l’al­go­rithme MapReduce du système de gestion, qui fonc­tionne sys­té­ma­ti­que­ment à partir de YARN.

Hadoop Common

Le module Hadoop Common dispose donc d’une palette de fonctions de base très vaste. Les données d’archives Java (JAR) en font partie, et sont né­ces­saires pour démarrer Hadoop. Des bi­blio­thèques pour la sé­ria­li­sa­tion des données tout comme le module Hadoop Common des codes sources sont dis­po­nibles pour la do­cu­men­ta­tion du projet et des sous-projets.

Hadoop Dis­tri­bu­ted File System (HDFS)

HDFS est un système de fichiers par­ti­cu­liè­re­ment dis­po­nibles, qui vise à stocker d’im­por­tantes quantités de données dans un cluster d’or­di­na­teurs et qui est res­pon­sable de la main­te­nance des données. Les fichiers sont composés de blocs de données et sans schéma de clas­si­fi­ca­tion, et partagés de manière re­don­dante sur dif­fé­rents nœuds. Par con­sé­quent, HDFS est capable de traiter plusieurs millions de données. La longueur des blocs de données, tout comme leur degré de re­don­dance sont con­fi­gu­rables.

Le cluster Hadoop fonc­tionne sur le principe master / slave (maître / esclave). L’ar­chi­tec­ture du framework est composée de nœuds maîtres, auquel sont su­bor­don­nés de nombreux nœuds esclaves. Ce principe se reflète dans la cons­truc­tion de HDFS, qui est basé sur un NameNode et divers DataNodes su­bor­don­nés. Le NameNode gère plusieurs mé­ta­don­nées du système de fichiers, de la structure des ré­per­toires et des DataNodes su­bor­don­nés. Pour minimiser la perte de données, les fichiers sont découpés en dif­fé­rents blocs et stockés sur dif­fé­rents nœuds. La con­fi­gu­ra­tion standard soit dis­po­nible trois fois à chaque exécution.

Chaque DataNode envoie ré­gu­liè­re­ment un signe de vie au NameNode, on appelle cela le heartbeat (battement de cœur). Si ce signal ne se manifeste pas, le NameNode décrète l’esclave comme étant « mort » et veille à l’aide des copies de fichiers et des autres nœuds qu’il y ait suf­fi­sam­ment de blocs de données dans le cluster qui soient dis­po­nibles. Ainsi, le NameNode joue un rôle essentiel dans le framework. Pour ne pas que celui-ci arrive au stade de « Single Point of Failure », il est d’usage de mettre un Se­con­da­ry­Na­me­Node à dis­po­si­tion du nœud maître. Cela permet que les dif­fé­rentes mo­di­fi­ca­tions apportées aux mé­ta­don­nées soient stockées et que l’instance de contrôle central puisse être récupérée.

Pour le passage de Hadoop 1 à Hadoop 2, HDFS a été étendu à dif­fé­rents systèmes de sau­ve­garde : NameNode HA (High Avai­la­bi­lity) qui complète le programme avec un système en cas de panne NameMode, afin que des com­po­sants de rem­pla­ce­ment soient utilisés au­to­ma­ti­que­ment. Une fonction de copie Snapshot permet de plus que le système soit restauré au statut précédent. L’extension Fe­de­ra­tion permet également que divers NameNodes puissent opérer au sein d’un même cluster.

MapReduce Engine

Un autre composant de base du Core Hadoop est l’agorithme de Google MapReduce, qui est im­plé­menté dans la version 1 du framework. Le devoir principal du MapReduce Engine consiste à gérer les res­sources et à guider le processus de calcul (Job sche­du­ling / mo­ni­to­ring). Le travail des données repose sur les phases « map » et « reduce », qui per­met­tent aux fichiers d’être tra­vail­lés di­rec­te­ment où ils sont stockés (data locality). Cela accélère le temps de calcul et minimise la con­som­ma­tion excessive de la bande passante du réseau. Dans le cadre de la phase du MAP, des processus de calculs complexes (jobs) sont divisés en unités et partagés par le Job­Tra­cker sur le nœud maître sur dif­fé­rents systèmes esclaves du cluster. Les Task­Tra­cker veillent par la suite à ce que les divers processus partiels soient traités de manière parallèle. Au cours de la Reduce Phase qui s’ensuit, les résultats in­ter­mé­diaires du MapReduce Engine sont collectés et délivrent un résultat global.

Tandis que le noeud maître est abrité en régle générale par les com­po­sants NameNode et Job­Tra­cker, un DataNode et un Task­Tra­cker tra­vail­lent sur chaque esclave su­bor­donné. Le graphique suivant expose la strucure de base de Hadoop en fonction de la version 1, partagé en MapReduce Layer et HDFS Layer.

Avec la sortie de la version 2.3 de Hadoop, le MapReduce-Engine a été re­tra­vaillé. Le résultat a donné la méthode de gestion des clusters YARN/MapReduce 2.0, dont le ma­na­ge­ment des res­sources et la gestion des tâches (Job Sche­du­ling/Mo­ni­to­ring) de MapReduce ont été couplés. Ainsi, le framework offre de nom­breuses pos­si­bi­li­tés en matière de nouveaux modèles de travail et une large palette d’ap­pli­ca­tions Hadoop pour le Big Data.

YARN/MapReduce 2.0

Avec l’in­tro­duc­tion du module YARN (« Yet Another Resource Ne­go­tia­tor ») à partir de la version 2.3, l’ar­chi­tec­ture de Hadoop a été fortement modifiée. C’est pourquoi on évoque un passage de Hadoop 1 à Hadoop 2. Tandis que les uti­li­sa­teurs de Hadoop 1 ont eu à dis­po­si­tion uni­que­ment MapReduce en tant qu’ap­pli­ca­tion, le couplage au ges­tion­naire des res­sources et des tâches du modèle de ma­ni­pu­la­tion de données a permis d’intégrer de nom­breuses ap­pli­ca­tions pour le Big Data dans le framework. Sous Hadoop 2, MapReduce n’est qu’une des multiples pos­si­bi­li­tés de trai­te­ment des données possibles du framework. YARN adopte le rôle d’un système opé­ra­tion­nel réparti pour la gestion de res­sources pour les ap­pli­ca­tions Hadoop Big Data.

Les mo­di­fi­ca­tions de base à l’ar­chi­tec­ture de Hadoop con­cer­nent avant tout les deux trackers du MapReduce-Engine, qui n’existent plus en tant que com­po­sants uniques dans la version 2 de Hadoop. À la place, le module YARN possède trois nouvelles entités : le Re­sour­ce­Ma­na­ger, le No­de­Ma­na­ger et l’Ap­pli­ca­tion­Mas­ter.

  • Re­sour­ce­Ma­na­ger : le Re­sour­ce­Ma­na­ger global est la plus haute autorité de la structure Hadoop (Master), dont divers No­de­Ma­na­gers sont su­bor­don­nés en tant qu’esclaves. Celui-ci a pour rôle de gérer le cluster in­for­ma­tique, de répartir les res­sources sur les No­de­Ma­na­gers su­bor­don­nés et d’or­ches­trer les ap­pli­ca­tions. Le Re­sour­ce­Ma­na­ger sait où les systèmes uniques d’esclaves se trouvent dans le cluster et quelles res­sources peuvent être mises à dis­po­si­tion. Un composant important du Re­sour­ce­Ma­na­gers est le Re­sour­ceS­che­du­ler, qui détermine comment les res­sources dis­po­nibles du cluster seront partagées.
  • No­de­Ma­na­ger : un No­de­Ma­na­ger agit sur chaque nœud du cluster d’or­di­na­teurs. Celui-ci prend en compte la position des esclaves dans l’in­fras­truc­ture d’Hadoop 2 et procède en tant que des­ti­na­taire de commandes du Re­sour­ce­Ma­na­ger. Si un No­de­Ma­na­ger est démarré dans un nœud du cluster, celui-ci véhicule l’in­for­ma­tion au Re­sour­ce­Ma­na­ger et envoie un signe de vie pé­rio­dique (heartbeat). Chaque No­de­Ma­na­ger est res­pon­sable des res­sources de son propre nœud et en met une partie à dis­po­si­tion du cluster. C’est le Re­sour­ceS­che­du­ler du Re­sour­ce­Ma­na­ger qui dirige la manière dont les res­sources sont utilisées dans le cluster.
  • Ap­pli­ca­tion­Mas­ter : chaque noeud au sein du système YARN comprend un Ap­pli­ca­tion­Mas­ter, dont les res­sources du Re­sour­ce­Ma­na­ger et du No­de­Ma­na­ger sont mo­bi­li­sées et divisées sous forme de con­tai­ners. Su ce container, l’amon­cel­le­ment de données Big Data sont sur­veil­lées et exécutées par l’Ap­pli­ca­tion­Mas­ter.

Voici un schéma pré­sen­tant la structure de Hadoop 2 :

Si une ap­pli­ca­tion Big Data est exécutée sur Hadoop, trois acteurs sont impliqués : 

  • un client,
  • le Re­sour­ce­Ma­na­ger
  • un ou plusieurs No­de­Ma­na­gers

Dans la première étape, le client du Re­sour­ce­Ma­na­ger a pour tâche de démarrer l’ap­pli­ca­tion Big Data dans le cluster Hadoop. Celui-ci alloue par la suite un container. En d’autres termes : le Re­sour­ce­Ma­na­ger réserve les res­sources du cluster pour l’ap­pli­ca­tion et contacte le No­de­Ma­na­ger. Le No­de­Ma­na­ger en question démarre le container et exécute l’Ap­pli­ca­tion­Mas­ter, qui est res­pon­sable de l’exécution de l’ap­pli­ca­tion et de sa sur­veil­lance.

L’éco­sys­tème Hadoop : les com­po­sants d’extension op­tion­nels

En plus des éléments de base, l’éco­sys­tème Hadoop comprend de nom­breuses ex­ten­sions qui le com­plè­tent et qui apportent beaucoup au logiciel framework en matière de  fonc­tion­na­li­tés et de flexi­bi­lité. De par le code source ouvert et les nom­breuses in­ter­faces, les com­po­sants sup­plé­men­taires peuvent être intégrés à l’envi aux fonc­tion­na­li­tés de base.

La liste suivante dévoile une sélection des projets les plus po­pu­laires dans l’éco­sys­tème Hadoop :

  • Ambari : le projet Ambari, d’Apache, a été initié par le dis­tri­bu­teur Hadoop Hor­ton­works et complète l’éco­sys­tème avec un outil d’ins­tal­la­tion et de gestion qui met à dis­po­si­tion les res­sources in­for­ma­tiques et facilite la gestion d’Hadoop. De plus, Ambari propose un « Step-by-Step-Wizard », une as­sis­tance à l’ins­tal­la­tion étape par étape pour Hadoop. Une interface uti­li­sa­teur graphique informe du statut du système. De plus, Ambari permet grâce au Ambari Metrics System et au Ambari Alert Framework d’en­re­gis­trer des métriques et de con­fi­gu­rer divers niveaux d’alarmes.
  • Avro : en ce qui concerne Apache Avro, il s’agit d’un système per­met­tant la sé­ria­li­sa­tion de données. Avro est basé sur JSON pour définir les types de données et les pro­to­coles. Les données sont quant à elles sé­ria­li­sées dans un format compact binaire. Cela sert de format de transfert des données pour la com­mu­ni­ca­tion entre les dif­fé­rents nœuds Hadoop et les pro­grammes client.
  • Cassandra : Apache Cassandra est programmé en Java. Ce système de gestion de base de données partagé est structuré pour les quantités im­por­tantes de données, qui suit un principe non re­la­tion­nel. On évoque également dans cet ensemble les bases de données NoSQL. L’objectif de ce système en open source ini­tia­le­ment développé pour Facebook est de permettre un éche­lon­nage souple pour les grandes struc­tures Hadoop réparties. La sau­ve­garde des données s’effectue sur la base d’une clé en relation avec la valeur réelle du paramètre.
  • HBase : avec HBase, il s’agit également d’une base de données ouverte NoSQL. Elle permet en temps réel d’exécuter les accès en lecture et en écriture de grandes quantités de données au sein d’un cluster d’or­di­na­teurs. HBase se base sur BigTable de Google, un système très per­for­mant de bases de données. Comparé à d’autres bases de données NoSQL, HBase se démarque par une cohérence des données hors norme.
  • Chukwa : avec Chukwa, les uti­li­sa­teurs bé­né­fi­cient d’un système d’analyse et de collecte des données basé sur le framework Big Data d’Hadoop (HDFS et MapReduce). La sur­veil­lance en temps réel est possible même avec les systèmes les plus grands. Pour cela, Chukwa a recours à des agents qui col­lec­tent des données sur chaque nœud à sur­veil­ler. Ces données sont par la suite trans­mises à des col­lec­tors et stockées dans le HDFS.
  • Flume : Apache Flume est également un service qui a été créé pour permettre la collecte, l’agré­ga­tion et la mobilité de données log. Pour exploiter les données à des fins de stockage et d’analyse de dif­fé­rentes sources vers HDFS, Flume se base sur des formats de transport comme Apache Thrift ou Avro.
  • Pig : avec Apache Pig, les uti­li­sa­teurs ont recours à une pla­te­forme d’analyse d’im­por­tantes quantités de données. Les uti­li­sa­teurs d’Hadoop bé­né­fi­cient du langage de pro­gram­ma­tion élaboré Pig Latin. Cela permet de décrire de manière abstraite le flux de données des jobs MapReduce. Ainsi, les requêtes MapReduce ne sont plus pro­gram­mées en Java, mais en Pig Latin, qui est un langage plus efficace. Les jobs MapReduce sont sim­pli­fiés, ainsi que les analyses. À l’origine, Pig Latin a été développé par Yahoo. L’idée réside dans le fait que tout comme les cochons (qui sont omnivores), Pig est programmé de manière à tra­vail­ler tous les types de données.
  • Hive : avec Apache Hive, Hadoop  propose une base de données centrale créée et optimisée pour les analyses. Le logiciel a été développé par Facebook, et se base sur le framework MapReduce. Avec HiveQL, Hive dispose d’une syntaxe semblable à SQL qui permet de consulter des données sau­ve­gar­dées en HDFS ou de les analyser. C’est pourquoi Hive traduit les requêtes sem­blables à SQL au­to­ma­ti­que­ment dans les jobs MapReduce.
  • HCatalog : Un des com­po­sants de base d’Apache Hive est HCatalog, un système de gestion tabulaire et de mé­ta­don­nées. Il permet de sau­ve­gar­der et de tra­vail­ler les données in­dé­pen­dam­ment de leur format. HCatalog décrit la structure des données et facilite l’uti­li­sa­tion avec Hive ou Pig. 
  • Mahout : Apache Mahout est une extension de la bi­blio­thèque Java pour l’éco­sys­tème Hadoop. Cette ap­pli­ca­tion de data mining et ma­thé­ma­tique a été pensée pour l’ap­pren­tis­sage machine. Les al­go­rithmes qui sont im­plé­men­tés par Mahout pour Hadoop per­met­tent des opé­ra­tions comme le clas­se­ment, le clus­te­ring et le filtrage collectif. En pratique, Mahout peut être utilisé pour le dé­ve­lop­pe­ment de services de conseils à la clientèle (de type : « les clients qui ont acheté ce produit con­sul­tent également les articles suivants»).
  • Oozie : les com­po­sants op­tion­nels de flux de travail Oozie per­met­tent de cons­truire des chaînes de processus et de les au­to­ma­ti­ser en temps voulu. Ainsi, Oozie compense le déficit du MapReduce Engine présent sur Hadoop 1.
  • Sqoop : avec Apache Sqoop, il s’agit de com­po­sants logiciels qui struc­tu­rent l’import et l’export d’im­por­tantes quantités de données du Big Data du framework Hadoop. En règle générale, les données sont stockées dans des bases de données re­la­tion­nelles par les en­tre­prises de nos jours. Sqoop permet un échange efficace entre les systèmes de stockage et les clusters d’or­di­na­teurs.
  • ZooKeeper : Apache ZooKeeper offre des services pour que les processus du cluster soient coor­don­nés, en per­met­tant des fonctions de sau­ve­garde, de ré­par­ti­tion et d’ac­tua­li­sa­tion.

Hadoop en en­tre­prise

Comme les clusters Hadoop se cons­trui­sent sur la base de grandes quantités de données à l’aide d’or­di­na­teurs standards, le framework Hadoop destiné au Big Data est par­ti­cu­liè­re­ment apprécié par les grandes en­tre­prises. Les plus grands noms utilisent Hadoop : on compte par exemple Adobe, AOL, eBay, Facebook, Google, IBM, LinkedIn et Twitter. En plus de permettre de stocker fa­ci­le­ment des données sur des struc­tures dé­cen­tra­li­sées et de les tra­vail­ler en parallèle, le logiciel en open source Hadoop se démarque par sa stabilité, les multiples pos­si­bi­li­tés d’ex­ten­sions et le large spectre de fonc­tion­na­li­tés.

Aller au menu principal