Hadoop
Qu'est-ce que Hadoop ?
Hadoop est un cadre de traitement distribué open source qui gère le traitement et le stockage des données pour les applications big data dans des grappes évolutives de serveurs informatiques. Il est au centre d'un écosystème de technologies big data qui sont principalement utilisées pour soutenir les initiatives de data science et d'analyse avancée, y compris l'analyse prédictive, l'exploration de données, l'apprentissage automatique et l'apprentissage profond.
Les systèmes Hadoop peuvent traiter différentes formes de données structurées, semi-structurées et non structurées, offrant aux utilisateurs une plus grande flexibilité pour la collecte, la gestion et l'analyse des données que les bases de données relationnelles et les entrepôts de données. La capacité d'Hadoop à traiter et à stocker différents types de données en fait un outil particulièrement adapté aux environnements "big data". Ceux-ci impliquent généralement non seulement de grandes quantités de données, mais aussi un mélange de données de transaction, d'enregistrements de flux de clics sur internet, de journaux de serveurs web et d'applications mobiles, de messages sur les médias sociaux, d'e-mails de clients, de données de capteurs provenant de l'internet des objets (IoT) et bien plus encore.
Connue officiellement sous le nom d'Apache Hadoop, cette technologie est développée dans le cadre d'un projet open source au sein de l'Apache Software Foundation. De nombreux fournisseurs proposent des distributions commerciales de Hadoop, bien que le nombre de fournisseurs de Hadoop ait diminué en raison d'un marché surpeuplé et des pressions concurrentielles exercées par le déploiement croissant de systèmes de big data dans l'informatique dématérialisée (cloud).
Le passage au cloud permet également aux utilisateurs de stocker des données dans des services de stockage d'objets en cloud moins coûteux au lieu du système de fichiers homonyme d'Hadoop. En conséquence, le rôle d'Hadoop a été réduit dans de nombreuses architectures big data et le cadre a été partiellement éclipsé par d'autres technologies, telles que le moteur de traitement Apache Spark et la plateforme de streaming d'événements Apache Kafka.
Comment Hadoop fonctionne-t-il pour la gestion et l'analyse des données volumineuses ?
Hadoop fonctionne sur des serveurs de base et peut évoluer pour prendre en charge des milliers de nœuds matériels. Son système de fichiers est conçu pour permettre un accès rapide aux données entre les nœuds d'une grappe, ainsi que des capacités de tolérance aux pannes afin que les applications puissent continuer à fonctionner en cas de défaillance d'un nœud. Ces caractéristiques ont permis à Hadoop de devenir, après son apparition au milieu des années 2000, une plateforme fondamentale de gestion des données pour l'analyse des grandes données.
Comme Hadoop peut traiter et stocker un si large éventail de données, il permet aux organisations de mettre en place des lacs de données qui constituent de vastes réservoirs pour les flux d'informations entrants. Dans un lac de données Hadoop, les données brutes sont souvent stockées telles quelles afin que les scientifiques et autres analystes puissent accéder à l'ensemble des données, si nécessaire ; les données sont ensuite filtrées et préparées par les équipes d'analyse ou de gestion des données pour prendre en charge différentes applications.
Les lacs de données n'ont généralement pas les mêmes objectifs que les entrepôts de données traditionnels qui contiennent des ensembles nettoyés de données transactionnelles. Mais le rôle croissant de l'analyse des big data dans la prise de décision des entreprises a fait de l'efficacité des processus de gouvernance et de sécurité des données une priorité dans les déploiements Hadoop. Hadoop peut également être utilisé dans les data lakehouses, un nouveau type de plateforme qui combine les principales caractéristiques des data lakes et des data warehouses, bien qu'ils soient plus communément construits au-dessus du stockage d'objets dans le cloud.
Les 4 principaux modules de Hadoop
Hadoop comprend les quatre modules suivants, qui sont ses principaux composants :
1. Système de fichiers distribués Hadoop (HDFS)
Il s'agit du principal système de stockage de données pour les applications Hadoop et il gère également l'accès aux données dans les grappes. HDFS est construit autour d'une architecture de NameNodes et de DataNodes. Chaque cluster comprend un NameNode, un nœud maître qui gère l'espace de noms du système de fichiers et contrôle l'accès aux fichiers, ainsi que plusieurs DataNodes qui gèrent le stockage sur les serveurs qui composent le cluster.
2. Hadoop YARN
Abréviation de Yet Another Resource Negotiator, mais généralement désigné par son seul acronyme, YARN est la technologie de gestion des ressources des clusters et de planification des tâches de Hadoop. Dans les clusters Hadoop, YARN se situe entre HDFS et les moteurs de traitement déployés par les utilisateurs. Il utilise une combinaison de conteneurs, de coordinateurs d'applications et d'agents de surveillance au niveau des nœuds pour allouer dynamiquement les ressources du cluster aux applications et superviser l'exécution des tâches de traitement. YARN prend en charge plusieurs approches de planification des tâches, notamment une file d'attente "premier entré-premier sorti" et plusieurs méthodes qui planifient les tâches en fonction des ressources du cluster qui leur sont attribuées.
3. Hadoop MapReduce
Il s'agit d'un cadre de programmation intégré et d'un moteur de traitement pour l'exécution d'applications par lots qui regroupent diverses transactions ou processus. Comme son nom l'indique, MapReduce utilise les fonctions map et reduce pour diviser les tâches de traitement en plusieurs tâches qui s'exécutent sur les nœuds de la grappe où les données sont stockées, puis pour combiner ce que chaque tâche produit en un ensemble cohérent de résultats. Il prend en charge le traitement parallèle d'ensembles de données volumineux sur les clusters Hadoop de manière tolérante aux pannes.
4. Hadoop Common
Ensemble d'utilitaires et de bibliothèques partagés, Hadoop Common soutient les autres modules en fournissant diverses fonctions de configuration, de gestion et de sécurité des clusters. Il s'agit par exemple d'un serveur de gestion des clés, d'un mode sécurisé pour l'authentification et l'accès des utilisateurs, d'un registre des services d'application fonctionnant dans un cluster et d'un mécanisme d'autorisation au niveau des services permettant de s'assurer que les clients ont la permission d'accéder à des services particuliers.
Les avantages de Hadoop pour les utilisateurs
Malgré l'émergence d'autres options, en particulier dans le cloud, Hadoop peut encore profiter aux utilisateurs de big data pour les raisons suivantes :
- Il peut stocker et traiter de grandes quantités de données structurées, semi-structurées et non structurées.
- Il protège les applications et le traitement des données contre les défaillances matérielles. Si un nœud d'une grappe tombe en panne, Hadoop redirige automatiquement les tâches de traitement vers d'autres nœuds afin que les applications puissent continuer à fonctionner.
- Il n'est pas nécessaire de traiter les données avant de les stocker. Les organisations peuvent stocker des données brutes dans HDFS et décider ultérieurement comment les traiter et les filtrer pour des utilisations analytiques spécifiques.
- Il est évolutif : les entreprises peuvent ajouter des nœuds aux grappes en cas de besoin pour gérer davantage de données ou de charges de travail de traitement.
- Il peut prendre en charge des applications d'analyse en temps réel afin d'améliorer la prise de décision opérationnelle, ainsi que des charges de travail par lots pour l'analyse historique.
Globalement, Hadoop permet aux entreprises de collecter, de stocker et d'analyser davantage de données, ce qui permet d'étendre les applications analytiques et de fournir aux dirigeants, aux gestionnaires et aux travailleurs des informations qu'ils ne pouvaient pas obtenir auparavant.
Applications Hadoop et cas d'utilisation
YARN permet aux utilisateurs d'Hadoop d'exécuter des applications sur des moteurs de traitement autres que MapReduce, tels que Spark, Kafka, Apache Flink et Apache Storm. Par conséquent, les clusters Hadoop peuvent gérer une variété d'applications en plus des tâches de traitement par lots, y compris les requêtes interactives, le traitement en flux et l'analyse en temps réel.
Par exemple, les fabricants, les compagnies pétrolières et gazières, les services publics et d'autres entreprises utilisent des données en temps réel provenant d'appareils IoT dans des applications de maintenance prédictive pour essayer de détecter les pannes d'équipement avant qu'elles ne se produisent. La détection des fraudes, la personnalisation des sites web et l'évaluation de l'expérience client sont d'autres cas d'utilisation qui font appel à la diffusion en temps réel et à l'analyse.
Parmi les autres cas d'utilisation courants de Hadoop, on peut citer les suivants :
- Analyse de la clientèle. Il s'agit par exemple de prédire le taux de désaffection des clients, d'analyser les données relatives au parcours de navigation afin de mieux cibler les publicités en ligne pour les utilisateurs du web et de suivre le sentiment des clients sur la base des commentaires relatifs à une entreprise sur les réseaux sociaux.
- Gestion des risques. Dans le cadre de leurs stratégies de gestion des risques, les sociétés de services financiers utilisent des clusters Hadoop pour développer des modèles d'analyse des risques plus précis à utiliser en interne et par leurs clients. Elles ont également élaboré des modèles d'investissement et développé des algorithmes de négociation dans des systèmes de big data basés sur Hadoop.
- Intelligence opérationnelle. Par exemple, Hadoop peut aider les entreprises de télécommunications à mieux comprendre les performances des systèmes de commutation et l'utilisation du réseau pour la planification et la gestion des capacités. En analysant l'utilisation des services mobiles et la bande passante disponible dans les régions géographiques, les entreprises de télécommunications peuvent également déterminer les meilleurs endroits pour implanter de nouvelles tours de téléphonie cellulaire et réagir plus rapidement aux problèmes de réseau.
- Gestion de la chaîne d'approvisionnement. Les fabricants, les détaillants et les entreprises de transport routier utilisent les systèmes Hadoop pour suivre le mouvement des marchandises et des véhicules afin de déterminer les coûts des différentes options de transport. En outre, ils peuvent analyser de grandes quantités de données historiques et horodatées sur les emplacements afin d'identifier les retards potentiels et d'optimiser les itinéraires de livraison.
Hadoop a également été déployé pour de nombreuses autres utilisations. Par exemple, les assureurs utilisent la technologie pour des applications telles que l'analyse de la tarification des polices et la gestion des programmes de réduction pour conducteurs prudents. Les organismes de soins de santé cherchent également des moyens d'améliorer les traitements et les résultats pour les patients avec l'aide de Hadoop.
Outils big data associés à Hadoop
L'écosystème qui s'est construit autour de Hadoop comprend une série d'autres technologies open source qui peuvent compléter et étendre ses capacités de base. Voici quelques outils Apache de big data liés à Hadoop :
- Ambari, un logiciel que les administrateurs de systèmes peuvent utiliser pour approvisionner, gérer et surveiller les clusters Hadoop.
- Atlas, un ensemble de services de gestion des métadonnées et de gouvernance des données à utiliser dans les systèmes Hadoop.
- Flume, un outil utilisé pour collecter et agréger de grandes quantités de données d'événements en continu, puis les transférer dans HDFS.
- HBase, une base de données distribuée à colonnes multiples pour le stockage de grands ensembles de données, souvent associée à Hadoop.
- Hive, un système d'entrepôt de données et un moteur de requête SQL construit au-dessus de Hadoop qui permet aux utilisateurs de structurer et d'analyser de grands ensembles de données.
- Mahout, un cadre d'algèbre linéaire distribué pour la création d'algorithmes d'apprentissage automatique.
- Oozie, un système de planification de flux de travail pour gérer les tâches Hadoop en les organisant en graphes acycliques dirigés (DAG) d'actions.
- Ozone, un magasin d'objets distribués construit sur la couche de stockage en bloc Hadoop Distributed Data Store et conçu pour être utilisé dans des systèmes sur site.
- Phoenix, un moteur de traitement des transactions et d'analyse opérationnelle basé sur SQL qui fournit une couche de base de données relationnelle au-dessus de HBase.
- Pig, un langage de haut niveau et une plateforme logicielle pour développer des programmes d'analyse de données qui s'exécutent sur des clusters Hadoop.
- Ranger, un cadre de surveillance et de gestion de la sécurité des données pour les environnements Hadoop.
- Submarine, une plateforme d'apprentissage automatique en cloud qui a été initialement développée dans le cadre de Hadoop et qui prend en charge YARN.
- Tez, un cadre d'application et un moteur d'exécution basés sur YARN qui utilisent des DAG complexes pour rationaliser les tâches de traitement par rapport à MapReduce.
- ZooKeeper, un service de configuration, de synchronisation et de registre de noms pour les grands systèmes distribués.
Défis liés à l'utilisation de Hadoop
Hadoop est une technologie révolutionnaire qui a rendu possible le déploiement d'environnements de big data, mais certaines limitations ont compliqué son utilisation et contribué à réduire son rôle dans les organisations. Voici quelques-uns des défis auxquels les utilisateurs peuvent être confrontés avec Hadoop :
- Problèmes de performance. Le nombre de lectures et d'écritures de données qu'Hadoop doit traiter sur le stockage sur disque dans un cluster peut ralentir les performances. Spark a supplanté MapReduce dans de nombreuses applications de traitement par lots, car son utilisation du traitement en mémoire lui confère souvent un avantage en termes de performances. Spark et Hadoop sont encore fréquemment utilisés ensemble, sans MapReduce, mais Spark - et d'autres moteurs de traitement - peuvent également contourner HDFS et YARN pour se passer complètement d'Hadoop.
- Coûts élevés. Hadoop associe étroitement les ressources de calcul et de stockage pour rationaliser le traitement. Mais si les besoins en traitement ou en stockage augmentent, il faut ajouter davantage de nœuds de cluster que si le calcul et le stockage étaient séparés. Le stockage sur disque avec HDFS est également plus coûteux que les solutions de stockage d'objets dans le cloud, telles que Amazon Simple Storage Service, Google Cloud Storage et Azure Blob Storage de Microsoft.
- Capacité inutilisée. Un autre problème lié au couplage des ressources de calcul et de stockage est la capacité excédentaire qui peut résulter de l'ajout de nœuds à une grappe. Par exemple, les ressources de traitement d'un nouveau nœud peuvent rester inutilisées s'il a été installé principalement pour augmenter la capacité de stockage des données. Cette situation a des conséquences en termes de coûts et de maintenance.
- Complexité de la gestion. Le déploiement et la gestion de grands clusters Hadoop peuvent s'avérer difficiles pour les entreprises. La nécessité d'intégrer diverses autres technologies big data dans les systèmes Hadoop ajoute encore à la complexité. Au-delà de la gestion des clusters, les fonctions de gestion des données telles que l'intégration et la qualité des données peuvent également représenter un défi.
- Orientation sur site. Hadoop a été initialement développé pour des déploiements sur site. Bien que ses composants puissent désormais être utilisés dans le cadre de plateformes de big data basées sur l'informatique dématérialisée, Hadoop dans son ensemble reste principalement connu comme une technologie sur site.
Histoire de Hadoop
Hadoop a été créé par les informaticiens Doug Cutting et Mike Cafarella, initialement pour prendre en charge le traitement dans le moteur de recherche open source et le robot d'exploration du web Nutch. Après la publication par Google, en 2003 et 2004, de documents techniques détaillant son système de fichiers Google et son cadre de programmation MapReduce, Cutting et Cafarella ont modifié les plans technologiques antérieurs et développé une implémentation MapReduce basée sur Java et un système de fichiers calqué sur celui de Google.
Début 2006, ces éléments ont été séparés de Nutch et sont devenus un sous-projet Apache distinct, que Cutting a baptisé Hadoop, en référence à l'éléphant en peluche de son fils. Au même moment, Cutting a été engagé par la société de services internet Yahoo, qui est devenue le premier utilisateur de Hadoop dans le courant de l'année 2006.
L'utilisation du cadre s'est développée au cours des années suivantes, et trois fournisseurs Hadoop indépendants ont été fondés : Cloudera en 2008, MapR Technologies un an plus tard et Hortonworks en tant que spin-off de Yahoo en 2011. En outre, AWS a lancé un service Hadoop en cloud en 2009. Tout cela avant qu'Apache ne publie Hadoop 1.0.0, qui est devenu disponible en décembre 2011 après une succession de versions 0.x.
MapReduce, HDFS et Hadoop Common étaient les principaux composants de la première itération de Hadoop. MapReduce fonctionnait initialement comme le moteur de traitement de Hadoop et le gestionnaire des ressources du cluster, ce qui liait directement HDFS à MapReduce et limitait les utilisateurs à l'exécution d'applications MapReduce en mode batch.
Cela a changé avec Hadoop 2.x, qui est devenu généralement disponible en 2013 avec la publication de la version 2.2.0. Elle a introduit YARN, qui a pris en charge les fonctions de gestion des ressources du cluster et de planification des tâches de MapReduce. YARN a mis fin à la dépendance stricte vis-à-vis de MapReduce et a ouvert Hadoop à d'autres moteurs de traitement et à diverses applications autres que les travaux par lots.
La série de versions Hadoop 2.x a également ajouté des fonctions de haute disponibilité et de fédération pour HDFS, la prise en charge de l'exécution de clusters Hadoop sur des serveurs Microsoft Windows et d'autres capacités conçues pour étendre la polyvalence du cadre de traitement distribué pour la gestion et l'analyse des données volumineuses (big data).
Les publications ultérieures comprennent les éléments suivants :
- Hadoop 3.0.0. La prochaine version majeure d'Hadoop, publiée par Apache en 2017, a ajouté une fonction de fédération YARN qui a permis à YARN de prendre en charge des dizaines de milliers de nœuds ou plus dans un seul cluster, contre une limite précédente de 10 000 nœuds. Il a également inclus la prise en charge des GPU et de l'erasure coding, une alternative à la réplication des données qui nécessite beaucoup moins d'espace de stockage.
- Hadoop 3.1.x et 3.2.x. Ces séries de versions ont permis aux utilisateurs d'Hadoop d'exécuter des conteneurs YARN à l'intérieur de conteneurs Docker et ont introduit un cadre de service YARN qui fonctionne comme une plateforme d'orchestration de conteneurs. Le moteur d'apprentissage machine Submarine et le magasin d'objets Ozone ont également été ajoutés à ces versions. Submarine et Ozone étaient initialement des composants Hadoop, mais sont devenus des projets de premier niveau distincts au sein d'Apache en 2019 et 2020, respectivement.
- Hadoop 3.3.0. Dernière version majeure en date, elle est devenue disponible en 2020 avec la prise en charge des processeurs Arm, un système de catalogue pour les applications YARN et d'autres nouvelles fonctionnalités. Cinq mises à jour contenant des corrections de bugs, des améliorations et des perfectionnements ont été publiées entre juin 2021 et mars 2023.
Évolution du marché Hadoop
Outre AWS, Cloudera, Hortonworks et MapR, plusieurs autres fournisseurs informatiques, notamment IBM, Intel et la défunte société Pivotal Software, sont entrés sur le marché de la distribution Hadoop. Toutefois, ces trois dernières sociétés ont abandonné le marché après avoir échoué à faire progresser les utilisateurs de Hadoop. Intel a cessé d'offrir sa distribution et a investi dans Cloudera en 2014, tandis que Pivotal et IBM ont quitté le marché et accepté de revendre la version Hortonworks de Hadoop en 2016 et 2017, respectivement.
Même les fournisseurs restants ont couvert leurs paris sur Hadoop lui-même en élargissant leurs plateformes de big data pour inclure également Spark et de nombreuses autres technologies. En 2017, Cloudera et Hortonworks ont tous deux supprimé le mot Hadoop des noms des conférences rivales qu'ils organisaient alors pour les utilisateurs de big data.
La consolidation du marché s'est poursuivie en 2019, lorsque Cloudera a acquis Hortonworks dans le cadre d'une fusion des deux anciens rivaux et que Hewlett Packard Enterprise a acheté les actifs de MapR après que le fournisseur de big data a averti qu'il pourrait devoir fermer s'il ne trouvait pas d'acheteur ou de nouveau financement.
De plus en plus, les utilisateurs et les fournisseurs se concentrent sur les déploiements de systèmes de big data dans le cloud. AWS propose toujours son service en cloud, appelé à l'origine Elastic MapReduce et rebaptisé depuis Amazon EMR. Les organisations qui souhaitent utiliser Hadoop et les technologies connexes dans le cloud peuvent également se tourner vers d'autres services gérés, notamment Azure HDInsight de Microsoft et Dataproc de Google Cloud.
Malgré son nom, Cloudera tirait encore environ 90 % de ses revenus des déploiements sur site en septembre 2019. Pour tenter de rester compétitive, elle a lancé une nouvelle plateforme cloud-native ce mois-là. Cloudera Data Platform (CDP) combine des éléments des distributions distinctes de Cloudera et d'Hortonworks et prend en charge les environnements multi-cloud. Cloudera a depuis déclaré que Hadoop n'était qu'une des nombreuses technologies incluses dans CDP et qu'elle ne représentait plus qu'une petite partie de ses activités.
Le développement de CDP a incité Microsoft à créer sa propre distribution Hadoop pour Azure HDInsight, qui était auparavant basée sur celle de Hortonworks. La version de Microsoft, qui a été publiée en 2020 et comprend également une implémentation Spark, est essentiellement un clone de la technologie Hortonworks. Parmi les évolutions notables du marché depuis lors, on peut citer AWS et Google qui ont tous deux introduit des options sans serveur pour leurs plateformes big data en 2021 et Cloudera qui est devenue une société privée la même année grâce à un rachat de 5,3 milliards de dollars par deux sociétés d'investissement. Dans l'ensemble, cependant, le développement d'Hadoop par les fournisseurs a ralenti.
Dans un billet de blog datant de mai 2022, Merv Adrian, alors analyste chez Gartner, a déclaré que les demandes liées à Hadoop émanant des clients de la société de conseil avaient fortement diminué au cours des 25 derniers mois. Merv Adrian, qui est aujourd'hui analyste indépendant, a également déclaré que les demandes soumises concernaient "de plus en plus l'endroit où placer les données d'abord assemblées pour être utilisées avec l'ensemble d'outils Hadoop d'origine, et les nouveaux outils à utiliser". Hadoop "est loin d'être mort", écrit-il, mais de plus en plus, pour les utilisateurs de big data, "il ne s'agit plus de Hadoop - il s'agit de savoir ce qui va suivre".