← Retourner à la liste des articles
Image blog
Auteur

Par Maxime Jumelle

CTO & Co-Founder

Publié le 27 janv. 2023

Catégorie Data Engineering

Apache Hadoop : tout savoir sur ce framework Big Data

Pendant des années, alors que la puissance de traitement des serveurs d'applications explosait, les bases de données ont pris du retard en raison de leur capacité et de leur vitesse limitées. Cependant, grâce aux différents frameworks Big Data, le monde des bases de données a connu une refonte.

Parmi ces frameworks, on compte notamment Apache Hadoop. Aujourd'hui, les applications fonctionnant sur les clusters Hadoop augmentent de jour en jour. Cela est dû au fait que ce dernier est non seulement simple et efficace, mais aussi parce qu'il fonctionne très bien dans l’environnement distribué. Il est conçu pour s'exécuter efficacement sur des milliers de machines et d’ensembles de données massifs.

Qu'est-ce que Apache Hadoop ?

Qu’entend-on par « Hadoop » ? Ou plus important encore, que signifie « Hadoop » ? Cela signifie High Availability Distributed Object Oriented Platform. Et c’est exactement ce que la technologie Hadoop offre aux développeurs : une haute disponibilité via la distribution parallèle de tâches orientées objet.

Hadoop est un framework Java open source développé en 2006 par Doug Cutting et Michael J. Cafarella, et géré par Apache Software Foundation sous licence Apache 2.0. Il s'agit d'un écosystème logiciel qui permet aux entreprises de traiter d’énormes quantités de données en peu de temps. Ceci est accompli en facilitant l’utilisation du traitement informatique parallèle sur une échelle massive.


À lire aussi : découvrez notre formation Data Engineer


Hadoop est très répandu parce qu'il est à la fois accessible et facile à maîtriser. Économique et pratique, il propose des modules avec de nombreuses options. Il peut facilement évoluer et être déployé sur plusieurs machines pour s'adapter à quasiment toutes les tailles d'ensembles de données. De plus, sa méthode de stockage et de traitement des données présente une solution d'entreprise intéressante dans le cadre d'un stockage croissant.

Aujourd’hui, Hadoop a été mis en œuvre dans plusieurs secteurs pour répondre à leurs besoins spécifiques. Yahoo a été parmi les premières entreprises à adopter Hadoop. Depuis, plusieurs grandes entreprises, y compris Facebook, Twitter et Adobe, ont mis en œuvre cette architecture au profit de leur organisation.

Quelles les composantes de Hadoop ?

Hadoop n'est pas seulement une application, c'est surtout une plateforme dont les différents éléments intégrés permettent le stockage et traitement de données distribuées. L'écosystème Hadoop comporte des éléments de base indispensables au framework, d'autres sont des éléments complémentaires qui ajoutent des fonctionnalités.

Hadoop fonctionne sous forme de clusters : il n'utilise non pas un mais plusieurs serveurs (appelés nœuds) afin de supporter de très grandes charges de travail. Au sein d'un cluster, on retrouve :

  • Le nœud principal (main node) qui va administrer l'ensemble des ressources des serveurs, gérer la réussite de chaque job et manager les nœuds de travail.
  • Les nœuds de travail (workers nodes) qui vont exécuter les calculs demandés sur des portions de données.

Pour les charges de travail critiquent, on peut avoir plusieurs nœuds principaux pour assurer une haute disponibilité.

Les éléments de base de Hadoop sont les suivants :

HDFS

HDFS est l'acronyme de Hadoop Distributed File System et c’est l’unité de stockage de Hadoop. C'est un système de fichiers spécialement conçu pour stocker d’énormes ensembles de données de différents formats sur diverses machines.

Il existe deux composants dans HDFS :

  • NameNode : NameNode est le daemon maître (programme principal). Il n’y a qu’un seul NameNode actif. Il gère les DataNodes et stocke toutes les métadonnées.
  • DataNode : DataNode est le daemon esclave (programme secondaire). Il peut y avoir plusieurs DataNodes. Il stocke les données réelles.

HDFS divise les données en plusieurs blocs, par défaut, à un maximum de 128 Mo. La taille du bloc par défaut peut être modifiée en fonction de la vitesse de traitement et de la distribution des données.

Prenons un exemple : si nous avons 300 Mo de données par exemple, il est divisé en 3 blocs : 128 Mo, 128 Mo et 44 Mo. Le bloc final gère le reste de l’espace de stockage nécessaire, de sorte qu’il ne doit pas être dimensionné à 128 Mo. C’est ainsi que les données sont stockées de manière distribuée dans HDFS.

C'est ainsi que le caractère distribué de HDFS prend tout son sens !

YARN

YARN est l'acronyme de Yet Another Resource Negotiator. Il gère le groupe de nœuds et agit en tant qu’unité de gestion des ressources de Hadoop. YARN alloue la RAM, la mémoire, et d’autres ressources à différentes applications. Il peut être vu comme le programme qui administre la gestion des ressources dans le cluster.

YARN a deux composantes :

  • ResourceManager (Master) : C’est le daemon maître (programme principal). Il gère l’attribution de ressources telles que le CPU, la mémoire et la bande passante du réseau.
  • NodeManager (Slave) : C’est le daemon esclave (programme secondaire), et il rapporte l’utilisation de la ressource au gestionnaire de ressources.

MapReduce

MapReduce permet de traiter de grands volumes de données d’une manière distribuée en parallèle. Puisqu'il s'agit d'une architecture de programmation, MapReduce peut être utilisée dans de nombreux langages de programmation : Java, Scala, R, Python, C++, etc.

Il est principalement utilisé avec le framework Hadoop, car MapReduce va utiliser le fonctionnement en mode cluster d'Hadoop pour tirer parti d'une grande quantité de données à disposition.

C'est en effet très important, puisque la particularité de MapReduce est de pouvoir traiter des données en parallèle. Lorsque le traitement est effectué, les données en provenance des multiples serveurs du cluster sont récupérés et agrégés pour obtenir un résultat final.


À lire aussi : découvrez notre formation Data Engineer


Profitant également de l'écosystème Hadoop, MapReduce utilise le système de fichiers distribués HDFS, ce qui permet à chaque serveur du cluster de lire et écrire des données basées sur des disques. Chaque fichier est donc accessible par n'importe quel nœud du cluster, ce qui permet d'exécuter un job indépendamment des autres.

Ainsi, par son fonctionnement, MapReduce va avoir la capacité de traiter une volumétrie importante, à la fois parce qu'il dispose de plusieurs serveurs dans un cluster, et que chacun de ces serveurs utilise un même système de fichiers.

MapReduce

Common

Hadoop Common fait référence à la collection d’utilitaires communs et de bibliothèques qui prennent en charge d’autres modules Hadoop. Il est considéré comme la base / noyau du framework, car il fournit des services essentiels et des processus de base tels que l’abstraction du système d’exploitation sous-jacent et son système de fichiers.

Il contient également les fichiers et scripts Java Archive (JAR) nécessaires pour démarrer Hadoop et fournit le code source et la documentation, ainsi qu’une section de contribution qui inclut différents projets de la communauté Hadoop.

Hadoop Common est aussi connu sous le nom de Hadoop Core.

Autres éléments de l'écosystème Hadoop

Hadoop, c'est aussi un écosystème, c'est-à-dire des applications populaires qui ne font pas strictement partie des modules Hadoop de base, mais qui sont fréquemment utilisés conjointement avec eux comprennent :

  • Hive est un logiciel d’entrepôt de données qui fonctionne sur Hadoop et permet aux utilisateurs de travailler avec des données en HDFS en utilisant un langage de requête de type SQL appelé HiveQL.
  • Impala est la base de données analytique native open source pour Hadoop.
  • Pig est un outil généralement utilisé avec Hadoop comme une abstraction sur MapReduce pour analyser de grands ensembles de données représentées comme des flux de données. Pig permet de réaliser des opérations comme joindre, filtrer, trier et charger des données.
  • HBase et Cassandra sont deux bases de données non relationnelles (NoSQL) particulièrement populaires sur Hadoop.
  • ZooKeeper est un service centralisé permettant un traitement distribué très fiable. Il est notamment utilisé conjointement avec Apache Kafka pour la diffusion de données en temps réel.
  • Sqoop est un outil conçu pour transférer efficacement des données entre Hadoop et des datastores structurés tels que des bases de données relationnelles.
  • Oozie est un système de planification de flux de travail pour gérer les tâches de Hadoop. Les tâches Oozie Workflow sont des graphiques acycliques dirigés (DAGs) d’actions.

Quels sont les avantages de Apache Hadoop ?

Hadoop permet de relever le challenge de l'énormité du Big Data grâce à ses nombreuses qualités, parmi ces derniers, on peut citer :

  1. Résilience : Les données stockées dans un nœud du cluster sont répliquées dans d'autres nœuds, ce qui garantit la tolérance aux incidents de Hadoop. Si un nœud tombe en panne, les autres serveurs du cluster disposent toujours d'une copie de sauvegarde des données.

  2. Évolutivité : Contrairement aux systèmes traditionnels qui ont une capacité de stockage limitée, Hadoop est évolutif, car il fonctionne dans un environnement distribué. En cas de besoin, la configuration peut être facilement étendue en installant d'autres serveurs, et la capacité de stockage peut ainsi atteindre plusieurs péta-octets.

  3. Coût modéré : Hadoop étant un framework open source n'exigeant aucune licence, les coûts de cette solution sont nettement inférieurs à ceux des bases de données relationnelles classiques. Par ailleurs, l'utilisation d'un matériel standard peu coûteux joue explique le coût modéré de cette solution.

  4. Vitesse : Le système de fichiers distribué, les traitements concurrents et le modèle MapReduce permettent d'exécuter les requêtes les plus complexes en quelques secondes.

  5. Diversité des données : Le HDFS peut stocker différents formats de données : structurés, non structurés (par exemple, des vidéos) ou semi-structurés (par exemple, des fichiers XML). Lors du stockage des données, il n'est pas nécessaire de valider celles-ci par rapport à un schéma prédéfini : les données peuvent être téléchargées sous n'importe quel format. Lors de leur récupération, les données sont analysées et utilisées en appliquant le ou les schémas requis. Cette souplesse permet de dériver des connaissances différentes à partir des mêmes données.


À lire aussi : découvrez notre formation Data Engineer


Il est utilisé pour le stockage et traitement des big data et analyser les données structurées et non structurées, à travers une collection de composants et en passant d’un serveur unique à des milliers de machines.

Quelles sont les limites de Apache Hadoop ?

Bien que Hadoop soit un outil extrêmement puissant du Big Data, il présente tout de mêmes quelques limitations.

  • Il est limité dans sa capacité à traiter des données en temps réel, car il est conçu pour des tâches de traitement de données à grande échelle qui peuvent prendre des heures ou des jours pour s'exécuter.
  • Il a des difficultés à gérer les données de structure variable ou non structurée, comme les images, les vidéos et les données de géolocalisation.
  • Il peut avoir des problèmes de scalabilité pour les tâches de traitement intensives en mémoire.
  • Il peut être difficile à configurer et à gérer, surtout pour les utilisateurs qui ne sont pas expérimentés dans la gestion de cluster.

Malgré ces limitations où il existe des alternatives et des outils spécifiques, Apache Hadoop reste encore aujourd'hui une brique essentielle des architectures Data dans les entreprises. Que ce soit pour exécuter des larges tâches de traitement de données ou pour des besoins de stockage de données durable, l'écosystème Hadoop n'a pas encore dit son dernier mot.

Articles similaires

Blog

7 févr. 2024

Data Engineering

Pendant de nombreuses années, le rôle des Data Engineers était de récupérer des données issues de différentes sources, systèmes de stockage et applications tierces et de les centraliser dans un Data Warehouse, dans le but de pouvoir obtenir une vision complète et organisée des données disponibles.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

4 déc. 2023

Data Engineering

Pour de nombreuses entreprises, la mise en place et la maintenant de pipelines de données est une étape cruciale pour avoir à disposition d'une vue d'ensemble nette de toutes les données à disposition. Un des challenges quotidien pour les Data Analysts et Data Engineers consiste à s'assurer que ces pipelines de données puissent répondre aux besoins de toutes les équipes d'une entreprise.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

14 nov. 2023

Data Engineering

Pour améliorer les opérations commerciales et maintenir la compétitivité, il est essentiel de gérer efficacement les données en entreprise. Cependant, la diversité des sources de données, leur complexité croissante et la façon dont elles sont stockées peuvent rapidement devenir un problème important.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article