Par Maxime Jumelle
CTO & Co-Founder
Publié le 13 avr. 2023
Catégorie Data Engineering
HDFS (Hadoop Distributed File System) est un système de fichiers distribué open source conçu pour stocker et gérer de gros volumes de données sur des clusters de serveurs. Il fait partie de l'écosystème Hadoop, qui comprend également d'autres composants tels que MapReduce, YARN (Yet Another Resource Negotiator) et Spark.
Il est devenu en quelques années la référence pour le stockage de données à très grande échelle, notamment pour ses performances et sa tolérance à la panne, mais également pour sa facilité d'utilisation et son intégration dans toute la suite logicielle de l'écosystèeme Hadoop.
HDFS a été développé pour répondre aux besoins de stockage de données à grande échelle pour les applications de traitement distribué telles que Hadoop MapReduce. Il permet de stocker des fichiers de grande taille en les découpant en blocs de taille fixe, puis en les distribuant sur plusieurs nœuds dans le cluster. HDFS assure également la réplication des données pour garantir une haute disponibilité des données en cas de panne de nœud ou de disque.
Aujourd'hui, HDFS reste un outil de choix pour le stockage de fichiers distribué, non seulement car il est encore très présent dans l'écosystème Hadoop, mais aussi parce qu'il peut être intégré à des services de stockage dans le Cloud comme AWS S3 ou Google Cloud Storage (GCS) pour offrir des solutions de stockage de données hybrides. Pour les entreprises qui utilisent le Cloud, cette intégration offre donc une expérience fluide et sans contraintes avec une forte inter-opérabilité entre les services et HDFS.
Rappelons quelques notions importantes. Il existe deux composants dans HDFS :
Ce qui est important à comprendre, c'est que HDFS divise les données en plusieurs blocs. Par défaut, la taille d'un bloc est de 128 Mo.
À lire aussi : découvrez notre formation Data Engineer
Le système de fichiers HDFS utilise une donc cette architecture de réplication pour garantir la disponibilité et la tolérance aux pannes des données. Les blocs de données sont répliqués sur plusieurs DataNodes pour réduire les risques de perte de données en cas de panne de nœud ou de disque. Le nombre de réplications peut être configuré selon les besoins de tolérance aux pannes et de performances.
Par exemple, supposons que l'on ait un cluster avec 1 NameNode et 3 DataNodes. Si l'on y ajoute un fichier qui pèse 500 Mo, alors il y aura 3 blocs de 128 Mo et 1 bloc de 116 Mo (500 Mo - 3 x 128 Mo). Ainsi, 1 DataNode stockera 2 blocs, et chacun des deux autres stockera un seul bloc.
Et ce découpage par blocs est l'une des fonctionnalités clés qui permet de stocker et de gérer de grands fichiers de manière efficace et distribuée.
Mais pourquoi 128 Mo ? Pourquoi pas 64 Mo ou 256 Mo ? Même si ce choix peut sembler arbitraire, il s'agit en réalité d'un compromis entre performance et généralisation.
Bien entendu, il est possible de modifier soi-même cette valeur en configurant le paramètre dfs.block.size
.
La structure de répertoire de HDFS est similaire à celle des systèmes de fichiers locaux sur les systèmes Unix/Linux. La structure de répertoire de HDFS est hiérarchique et est représentée par une arborescence de dossiers et de fichiers.
Le répertoire racine de HDFS est représenté par le caractère /
. Tous les autres répertoires et fichiers sont créés sous ce répertoire racine. Les utilisateurs peuvent créer leurs propres dossiers personnalisés pour stocker leurs données et leurs applications dans HDFS.
/ |-- user | |-- blent | | |-- hello.txt | | `-- world.txt | |-- maxime | | |-- data.csv | | `-- code.sql |-- tmp |-- hadoop | `-- mapred | `-- system |-- hbase |-- hive |-- user | `-- history `-- var
Les applications de l'écosystème Hadoop, comme Apache HBase ou Apache Hive, vont eux aussi avoir leur dossier spécifique. C'est notamment à l'intérieur de ces dossiers que sont situés les tables de données.
Ainsi, chaque fichier peut donc être référencé par son chemin sur HDFS. Par exemple, si le nom de domaine du noeud principal HDFS est mon-adresse.internal
, alors le fichier data.csv
représentée plus haut aura pour chemin HDFS hdfs://mon-adresse.internal/user/maxime/data.csv
. Ainsi, toute application capable de lire sur un système HDFS pourra lire le contenu du fichier.
Outre les nombreux avantages listés plus haut que présente HDFS, il y a également quelques inconvénients à son utilisation.
L'installation et la configuration de HDFS peuvent être coûteuses pour les entreprises en raison du coût des serveurs, des logiciels et des licences nécessaires pour exécuter et gérer le système. De plus, HDFS peut avoir une latence élevée lorsqu'il s'agit d'accéder aux fichiers stockés dans le système de fichiers, en particulier pour les fichiers de petite taille, ce qui peut rendre le traitement de données en temps réel plus difficile.
À lire aussi : découvrez notre formation Data Engineer
De plus, la gestion de HDFS peut également être complexe en raison de la nécessité de configurer et de gérer plusieurs nœuds de serveur pour stocker et gérer les données. La gestion des nœuds peut nécessiter une expertise technique et une surveillance constante pour garantir la disponibilité des données et la performance du système. C'est en partie pour cette raison que de nombreuses entreprises choisissent de s'orienter vers des clusters managés dans le Cloud, pour avoir à éviter de gérer soi même la mise en place et la supervision d'un cluster HDFS.
Par ailleurs, HDFS peut avoir une faible efficacité pour les petits fichiers, car chaque fichier est divisé en blocs de taille fixe. Si un petit fichier est stocké sur HDFS, il peut occuper un espace disque important par rapport à sa taille réelle, ce qui peut entraîner une utilisation inefficace des ressources de stockage.
Au global, HDFS reste tout de même un système très puissant et encore très utilisé aujourd'hui dans le monde du Data Engineering.
Vous souhaitez vous former au Data Engineering ?
Articles similaires
7 févr. 2024
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
CTO & Co-Founder
Lire l'article
4 déc. 2023
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
CTO & Co-Founder
Lire l'article
14 nov. 2023
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
CTO & Co-Founder
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2025 Blent.ai | Tous droits réservés