Accueil
Thèmes
HDFS
Date de mise à jour : 14 juin 2024
Contributeur : Jim Holdsworth
Le Hadoop Distributed File System (HDFS) est un système de fichiers conçu pour gérer de grandes quantités de données et fonctionner sur du matériel standard. Le HDFS est le système de stockage de données le plus utilisé avec Hadoop, et il permet de faire évoluer un cluster unique Apache Hadoop vers des centaines, voire des milliers de nœuds. Grâce à sa gestion efficace du big data avec un haut débit, le HDFS peut être utilisé comme un pipeline de données et est idéal pour prendre en charge des analyses de données complexes.
Le HDFS repose sur un cadre open source et constitue l’un des principaux composants d’Apache Hadoop, avec MapReduce et YARN. Le HDFS ne doit pas être confondu avec ou remplacé par Apache HBase, un système de gestion de bases de données non relationnel orienté colonnes, qui repose sur HDFS et répond mieux aux besoins de traitement des données en temps réel grâce à son moteur en mémoire.
Découvrez les principaux avantages de l’IA générative et comment elle peut dynamiser les activités des entreprises.
Une instance du HDFS pouvant inclure des milliers de serveurs, la défaillance d’au moins un serveur est toujours possible. Le HDFS a été conçu pour détecter rapidement les pannes et se rétablir automatiquement. La réplication des données, avec plusieurs copies réparties sur de nombreux nœuds, permet de prévenir la perte de données. Le HDFS conserve au moins une copie sur un rack distinct des autres. Ce stockage de données dans un large cluster réparti sur plusieurs nœuds augmente la fiabilité. De plus, le HDFS peut prendre des instantanés de stockage pour sauvegarder des informations ponctuelles (PIT).
Le HDFS est principalement destiné au traitement par lots plutôt qu’à une utilisation interactive, c’est pourquoi sa conception favorise des débits de données élevés, facilitant l'accès continu aux ensembles de données.
Le HDFS est adapté aux applications utilisant des ensembles de données allant de plusieurs gigaoctets à plusieurs téraoctets. Il offre une large bande passante agrégée et peut s’étendre à des centaines de nœuds dans un seul cluster, soutenant ainsi des systèmes de calcul haute performance (HPC). Les data lakes sont souvent stockés sur le HDFS. Les entrepôts de données ont également utilisé le HDFS, mais de moins en moins en raison de la complexité perçue de son utilisation.
Comme les données sont stockées virtuellement, les coûts associés aux métadonnées du système de fichiers et au stockage des données dans l’espace de noms du système de fichiers peuvent être réduits.
Pour faciliter son adoption, le HDFS est conçu pour être portable sur plusieurs plateformes matérielles et compatible avec différents systèmes d’exploitation sous-jacents, notamment Linux, macOS et Windows. De plus, les data lakes Hadoop peuvent gérer des bases de données non structurées, semi-structurées et structurées pour une flexibilité maximale. Bien que Hadoop soit codé en Java, d'autres langages (comme C++, Perl, Python et Ruby) permettent de l'utiliser dans le domaine de la science des données.
Le HDFS utilise une architecture en cluster pour garantir un débit élevé. Pour réduire le trafic réseau, le système de fichiers Hadoop stocke les données dans les DataNodes, là où les calculs ont lieu, plutôt que de déplacer les données vers un autre emplacement pour le calcul.
Grâce à ses fonctions d'extensibilité horizontale et verticale, le HDFS peut être rapidement adapté aux besoins d'une organisation en matière de données. Un cluster peut comprendre des centaines, voire des milliers de nœuds.
Le HDFS repose sur une architecture maître/esclave.
Le NameNode et le DataNode sont des logiciels écrits pour fonctionner sur une large gamme de systèmes d'exploitation, souvent basés sur GNU/Linux. Le HDFS étant écrit en Java, toute machine supportant Java peut exécuter les logiciels NameNode et DataNode.
Les déploiements incluent souvent une machine dédiée à l'exécution du logiciel NameNode, tandis que les autres machines du cluster exécutent chacune une instance unique du logiciel DataNode. En cas de besoin, bien que rarement, il est possible de configurer plusieurs DataNodes sur une même machine.
Lorsque les données sont intégrées dans le HDFS, elles sont fragmentées en blocs et réparties sur les différents nœuds du cluster. Les données étant stockées dans plusieurs DataNodes, les blocs peuvent être répliqués sur d'autres nœuds pour permettre un traitement parallèle. Le système de fichiers distribués (DFS) propose des commandes pour accéder rapidement aux données, les récupérer, les déplacer et les visualiser. Grâce à la réplication des blocs de données sur plusieurs DataNodes, une copie peut être supprimée sans risquer de corrompre les autres copies. La taille par défaut des blocs dans le HDFS est de 128 Mo (Hadoop 2.x), une taille que certains peuvent considérer comme importante. Cependant, cette taille vise à minimiser les temps de recherche et à réduire la quantité de métadonnées nécessaires.
Pour minimiser les risques et accélérer le traitement, lorsqu'un DataNode cesse de communiquer avec le NameNode, ce DataNode est retiré du cluster et les opérations se poursuivent sans lui. Si ce DataNode redevient opérationnel par la suite, il est réassigné à un nouveau cluster.
Le HDFS propose des moyens d’accès flexibles aux données via différentes interfaces : une API Java native est incluse, un wrapper en langage C est disponible pour l’API Java, et il est également possible d’utiliser un navigateur HTTP pour parcourir les fichiers d’une instance HDFS.
Le HDFS est organisé selon une hiérarchie de fichiers traditionnelle, dans laquelle l’utilisateur peut créer des répertoires contenant plusieurs fichiers. La hiérarchie de l’espace de noms du système de fichiers fonctionne de manière similaire à celle des systèmes de fichiers classiques, où l’utilisateur peut créer, supprimer, déplacer ou renommer des fichiers et des répertoires.
L’espace de noms est géré par le NameNode, qui enregistre toutes les modifications apportées. Le nombre total de répliques à sauvegarder pour une application donnée peut être défini dans cette hiérarchie. Ce nombre représente le facteur de réplication pour ce fichier. Le facteur de réplication peut être défini lors de la création du fichier et ajusté ultérieurement en fonction des besoins.
Pour garantir un stockage fiable, le HDFS stocke les fichiers volumineux dans plusieurs emplacements d’un grand cluster, chaque fichier étant constitué d’une séquence de blocs. Chaque bloc est stocké dans un fichier de la même taille, sauf le dernier bloc qui se remplit progressivement au fur et à mesure que des données y sont ajoutées.
Pour une protection renforcée, les fichiers HDFS ne peuvent être écrits qu’une seule fois et uniquement par un auteur à la fois. Afin de s’assurer que toutes les données sont répliquées comme prévu, le NameNode reçoit périodiquement un signal de heartbeat (rapport de statut) et un blockreport (incluant l’ID du bloc, l’estampille de génération et la longueur de chaque réplique de bloc) de chaque DataNode dans le cluster. La réception de ce signal indique que le DataNode fonctionne correctement.
Le NameNode sélectionne l’ID de rack pour chaque DataNode grâce à un processus appelé Hadoop Rack Awareness, qui permet de prévenir la perte de données en cas de défaillance d’un rack entier. Cela permet également d’utiliser la bande passante de plusieurs racks pour la lecture des données.
Prenons l'exemple d'un fichier contenant les numéros de téléphone d'un pays entier. Les numéros des personnes dont le nom de famille commence par A pourraient être stockés sur le serveur 1, ceux commençant par B sur le serveur 2, et ainsi de suite. Avec Hadoop, des fragments de cet annuaire téléphonique seraient répartis sur un seul cluster, et pour reconstituer l'annuaire complet, une application aurait besoin des blocs provenant de chaque serveur du cluster.
Afin de garantir une haute disponibilité en cas de défaillance d’un serveur, le HDFS réplique par défaut ces fragments sur au moins deux serveurs supplémentaires. (Cette redondance peut être augmentée ou réduite pour chaque fichier ou pour l'ensemble de l'environnement. Par exemple, un cluster Hadoop de développement n'a généralement pas besoin d'une redondance de données.)
Cette redondance permet également au cluster Hadoop de répartir le travail en petits segments et d’exécuter ces tâches sur tous les serveurs du cluster, favorisant ainsi une meilleure évolutivité. En outre, les organisations bénéficient de la localité des données, un atout essentiel lorsqu'elles travaillent avec de grands ensembles de données.
Le HDFS peut également être utilisé pour soutenir l'intelligence artificielle (IA) et le machine learning (ML) en passant efficacement à l’échelle. Tout d'abord, en stockant les données en quantités suffisantes pour entraîner les modèles de ML, et ensuite en facilitant l'accès à ces énormes jeux de données.
Toute organisation qui capture, stocke et utilise de vastes jeux de données, jusqu'à des pétaoctets, pourrait envisager l'utilisation de HDFS. Quelques exemples d'utilisation dans différentes industries montrent comment HDFS peut être implémenté :
Selon les cofondateurs Mike Cafarella et Doug Cutting, Hadoop trouve son origine dans un article sur le Google File System, publié en 2003.Un second article a suivi, intitulé « MapReduce : Simplified Data Processing on Large Clusters ». Le développement d'un premier moteur de recherche nommé Apache Nutch a commencé, mais Doug Cutting a ensuite transféré ce travail chez Yahoo en 2006.
Hadoop tire son nom d'un éléphant en peluche appartenant au fils de M. Cutting (d'où le logo). Le code initial de Hadoop reposait largement sur Nutch, mais a résolu les problèmes de mise à l’échelle, tout en intégrant les premières versions de HDFS et de MapReduce. Depuis, la suite de programmes dans l’écosystème Hadoop n’a cessé de croître.
Depuis, la suite de programmes dans l’écosystème Hadoop n’a cessé de croître. Outre HDFS, l’écosystème inclut également : HBase (une base de données NoSQL), Mahout, Spark MLLib (bibliothèques d'algorithmes pour le machine learning), MapReduce (traitement des données basé sur la programmation), Oozie (planificateur de tâches), PIG et HIVE (services de traitement des données basés sur des requêtes), Solar et Lucene (pour la recherche et l'indexation), Spark (traitement des données en mémoire), YARN (Yet Another Resource Negotiator), Zookeeper (coordination des clusters).
Les logiciels open source de l’écosystème Hadoop sont désormais gérés par l’Apache Software Foundation1, une communauté mondiale de développeurs et de contributeurs de logiciels.
watsonx.data™ est désormais disponible : un entrepôt de données adapté à vos besoins, conçu sur une architecture de type data lakehouse ouverte pour vous permettre de faire évoluer les workloads d’IA, et ce pour toutes vos données, où qu’elles se trouvent.
IBM et Cloudera se sont associés pour offrir une distribution Hadoop d’entreprise de pointe, comprenant un écosystème intégré de produits et de services pour accélérer les analyses à grande échelle.
Au moins trois solutions émergent actuellement en matière de plateformes de données. Découvrez les relations entre data lakehouse, data fabric et data mesh.
Lisez cette introduction pratique à la nouvelle génération d’architectures de données. Elle présente le rôle du cloud et des technologies NoSQL et aborde les aspects pratiques de la sécurité, de la confidentialité et de la gouvernance.
Presto offre aux entreprises de toutes tailles un moyen rapide et efficace d’analyser des données volumineuses provenant de diverses sources, y compris des systèmes sur site et dans le cloud.
1 « Apache software foundation » (lien externe à ibm.com)