Système de fichiers distribué Hadoop (HDFS)
HDFS
Le système de fichiers distribué Hadoop (HDFS) est le principal système de stockage utilisé par les applications Hadoop. Ce framework open source a l'avantage de transférer rapidement les données d'un nœud à l'autre. Il est couramment employé par les entreprises qui ont besoin de traiter et de stocker de grands volumes de données (Big Data). Par sa capacité à gérer ces derniers et sa prise en charge robuste de l'analytique Big Data, HDFS est un composant essentiel de nombreux systèmes Hadoop.
Beaucoup d'organisations utilisent HDFS dans le monde entier, mais de quoi s'agit-il exactement, et quelle est son utilité ? Découvrons ensemble ce qu'est HDFS et quel est son intérêt pour les entreprises.
Qu'est-ce que HDFS ?
HDFS signifie Hadoop Distributed File System.C'est un système de fichiers distribué conçu pour fonctionner sur du matériel générique à bas coût.
HFDS est tolérant aux défaillances et n'impose aucune exigence matérielle spécifique. Il offre un accès haut débit aux données d'applications, y compris dans le cas de datasets volumineux, ainsi qu'un accès en streaming aux données des systèmes de fichiers Apache Hadoop.
Mais qu'est-ce que Hadoop ? Et quelle est la différence avec HDFS ? Il existe une différence de nature entre Hadoop et HDFS : Hadoop est le framework open source qui stocke, traite et analyse les données, tandis que HDFS est le système de fichiers fourni par Hadoop pour accéder aux données. Pour dire les choses simplement, HDFS est un module d'Hadoop.
Attardons-nous un instant sur l'architecture HDFS :
Comme vous pouvez le voir, elle s'articule en NameNodes et en DataNodes. Le NameNode supporte le système d'exploitation et les logiciels GNU/Linux. Le système de fichiers distribué Hadoop joue le rôle de serveur principal. Il gère les fichiers, contrôle l'accès des clients aux fichiers et supervise les processus de traitement, tels que le renommage, l'ouverture et la fermeture des fichiers.
Le DataNode contient lui aussi le système d'exploitation GNU/Linux, ainsi que le logiciel DataNode. Chaque nœud d'un cluster HDFS doit avoir un DataNode. Ces nœuds contrôlent le stockage des données : ils peuvent réaliser différentes opérations sur les systèmes de fichiers à la demande du client, mais aussi créer, répliquer et bloquer des fichiers sur instruction du NameNode.
Le système HDFS est conçu pour remplir les objectifs suivants :
- Gérer les grands datasets : organiser et stocker des datasets peut être une lourde tâche. HDFS encadre les applications qui gèrent les grands datasets. Pour ce faire, HDFS doit avoir des centaines de nœuds par cluster.
- Détection des défaillances : HDFS doit être équipé d'une technologie efficace de recherche et de détection des défaillances car il repose sur un grand nombre de machines génériques. Les défaillances de composant sont courantes.
- Efficacité matérielle : dans le cas de grands datasets, HDFS peut réduire le trafic réseau et accroître la vitesse de traitement.
L'histoire de HDFS
Quelles sont les origines d'Hadoop ? La conception de HDFS s'inspire du système de fichiers de Google. À l'origine, c'est une infrastructure conçue pour le projet de moteur de recherche web Apache Nutch, devenu depuis membre de l'écosystème Hadoop.
Aux premiers temps d'Internet, les robots d'indexation sont apparus pour faciliter les recherches des utilisateurs. Ils ont été à la base de moteurs de recherche tels que Yahoo et Google.
Ces robots ont également été employés par un moteur de recherche appelé Nutch, dont l'objectif était de distribuer les données et les calculs sur plusieurs machines simultanément. Nutch a ensuite été repris par Yahoo et divisé en deux projets. Apache Spark et Hadoop sont désormais deux entités distinctes. Si Hadoop est conçu pour le traitement par batch, Spark est axé sur le traitement efficace des données en temps réel.
Aujourd'hui, la structure et le framework d'Hadoop sont encadrés par la fondation Apache, une communauté de développeurs logiciels et de contributeurs.
HDFS est un fruit de ce projet, conçu dans le but de remplacer les solutions de stockage matériel par une méthode plus efficace et performante : un système de fichiers virtuel. Lorsqu'il est entré en scène, MapReduce était le seul moteur de traitement distribué capable d'utiliser HDFS. Plus près de nous, des services de données Hadoop alternatifs comme HBase et Solr utilisent également HDFS pour stocker les données.
Quelle place occupe HDFS dans le monde du Big Data ?
Qu'est-ce que le Big Data et quel est le rôle de HDFS dans ce contexte ? Le terme de « Big Data » englobe toutes les données qui sont difficiles à stocker, à traiter et à analyser. Le Big Data HDFS renvoie à des données organisées à l'aide du système de fichiers HDFS.
Comme vous le savez maintenant, Hadoop est un framework qui utilise le traitement parallèle et le stockage distribué. Il permet de trier et de stocker les données du Big Data qui ne peuvent pas être conservées de façon traditionnelle.
C'est d'ailleurs le logiciel le plus couramment employé pour gérer le Big Data : des entreprises comme Netflix, Expedia et British Airways utilisent Hadoop pour leur stockage. HDFS joue un rôle vital dans le traitement du Big Data, et c'est la raison pour laquelle de nombreuses entreprises font ce choix.
Lorsqu'elles sont organisées à l'aide des services HDFS, les données du Big Data présentent cinq caractéristiques essentielles :
- Vélocité : vitesse à laquelle les données sont générées, assemblées et analysées.
- Volume : quantité de données générées.
- Variété : type des données, qui peuvent être structurées, non structurées, etc.
- Véracité : qualité et précision des données.
- Valeur : possibilité d'utiliser les données pour produire des insights sur les processus métier.
Avantages du système de fichiers distribué Hadoop
En tant que sous-projet open source d'Hadoop, HDFS offre cinq avantages décisifs pour le traitement du Big Data :
- Tolérance aux défaillances. HDFS a été conçu pour détecter les défaillances et se rétablir automatiquement et rapidement afin d'assurer la continuité et la fiabilité du système.
- Vitesse. Grâce à son architecture en clusters, il peut maintenir un rythme de 2 Go de données par seconde.
- Accès à davantage de types de données, et plus particulièrement aux données de streaming. Parce qu'il est conçu pour traiter de grandes quantités de données en batch, il offre d'excellents débits qui conviennent particulièrement à la prise en charge des données de streaming.
- Compatibilité et portabilité. HDFS est conçu pour être portable sur un large éventail de configurations matérielles et il est compatible avec plusieurs systèmes d'exploitation sous-jacents. Cette souplesse permet de l'utiliser avec des configurations personnalisées. Ces avantages sont extrêmement précieux lorsqu'on traite de grands volumes de données, et ils sont liés à la façon très spécifique dont HDFS gère les données.
Ce schéma illustre la différence entre un système de fichiers local et HDFS.
- Évolutivité. Vous pouvez faire évoluer vos ressources en fonction de la taille de votre système de fichiers. HDFS inclut des mécanismes d'évolution verticale et horizontale.
- Localité des données. Dans le système de fichiers Hadoop, les données résident dans des nœuds et ne sont pas déplacées vers l'unité de calcul. En réduisant la distance entre les données et le processus de calcul, on réduit la congestion du réseau : le système gagne alors en efficacité et en efficience.
- Économies. Traditionnellement, les grands volumes de données étaient synonymes de coût et de bande passante encombrée. Et les pannes matérielles pouvaient coûter très cher. Avec HDFS, le stockage est virtualisé : cela permet de réaliser des économies considérables sur le stockage des métadonnées et des espaces de nommage. De plus, comme HDFS est open source, les entreprises n'ont pas de frais de licence à payer.
- Conservation d'une grande quantité de données. Le stockage de données est central pour HDFS, conçu pour conserver non seulement des données de tous les types et de toutes les tailles, mais également pour stocker des volumes considérables, ce qui représente un atout pour les grandes entreprises qui ont souvent des difficultés dans ce domaine. Enfin, il accueille aussi bien les données structurées que non structurées.
- Flexibilité. Contrairement à d'autres bases de données de stockage plus traditionnelles, il n'est pas nécessaire de traiter les données collectées avant de les stocker. Vous pouvez stocker autant de données que vous le souhaitez, et décider plus tard ce que vous souhaitez en faire. Cela concerne également les données non structurées comme le texte, les vidéos et les images.
Comment utiliser HDFS ?
Comment utilise-t-on HDFS ?HDFS s'appuie sur un NameNode principal et plusieurs autres DataNodes au sein d'un cluster installé sur du matériel générique. Ces nœuds sont regroupés au sein du même data center. Ils sont répartis en blocs distribués entre plusieurs DataNodes à des fins de stockage. Pour réduire le risque de perte de données, les blocs sont souvent répliqués entre différents nœuds. Ce système de sauvegarde offre une solution de secours en cas de perte de données.
Penchons-nous sur les NameNodes. Le NameNode est un nœud du cluster qui sait ce que les données contiennent, à quel bloc elles appartiennent, quelle est la taille du bloc et où il doit aller. Les NameNodes permettent également de contrôler l'accès aux fichiers : ils déterminent sous quelles conditions un utilisateur peut écrire, lire, créer, supprimer ou dupliquer des données entre différents nœuds.
Au besoin, le cluster peut être adapté en temps réel selon la capacité du serveur, ce qui peut être très pratique en cas de pic de données. Vous pouvez ajouter et retirer des nœuds selon les besoins.
Passons maintenant aux DataNodes. Les DataNodes sont en communication régulière avec les NameNodes, pour déterminer s'ils doivent commencer ou terminer une tâche. Grâce à cette collaboration constante, le NameNode est parfaitement informé de l'état de chaque DataNode.
Lorsqu'un DataNode ne fonctionne pas comme il devrait, le NameNode peut immédiatement réaffecter sa tâche à un autre nœud opérationnel au sein du même bloc de données. De la même manière, les DataNodes peuvent communiquer entre eux : ils peuvent donc collaborer au cours des opérations standards sur les fichiers. Comme le NameNode est informé de l'état et des performances des DataNodes, il joue un rôle crucial dans la maintenance du système.
Les blocs de données sont répliqués sur plusieurs DataNodes auxquels le NameNode accède.
Pour utiliser HDFS, vous devez installer et configurer un cluster Hadoop. Il peut s'agir d'un nœud unique, ce qui conviendra idéalement aux utilisateurs débutants ou d'un ensemble plus vaste de clusters distribués. Vous devez vous familiariser avec les commandes HDFS pour exploiter et gérer votre système. En voici quelques-unes.
Commande |
Description |
-rm |
Supprime un fichier ou un répertoire |
-ls |
Dresse la liste des fichiers avec leurs permissions et d'autres informations |
-mkdir |
Créer un chemin de répertoire nommé dans HDFS |
-cat |
Affiche le contenu du fichier |
-rmdir |
Supprime un répertoire |
-put |
Importe un fichier ou un dossier dans HDFS à partir d'un disque local |
-rmr |
Supprime le fichier ou le dossier avec ses sous-dossiers identifié par le chemin |
-get |
Déplace le fichier ou le dossier vers un fichier/dossier local à partir de HDFS |
-count |
Compte le nombre de fichiers et de répertoires, et indique la taille des fichiers |
-df |
Affiche l'espace libre |
-getmerge |
Fusionne plusieurs fichiers dans HDFS |
-chmod |
Modifie les permissions du fichier |
-copyToLocal |
Copie les fichiers vers le système local |
-Stat |
Affiche des statistiques sur le fichier ou le répertoire |
-head |
Affiche le premier kilooctet d'un fichier |
-usage |
Renvoie l'aide d'une commande |
-chown |
Attribue un nouveau propriétaire et un groupe à un fichier |
Comment fonction HDFS ?
Comme on l'a dit précédemment, HDFS utilise des NameNodes et des DataNodes. HDFS permet de transférer rapidement des données entre des nœuds de calcul. Lorsque HDFS reçoit des données, il répartit les informations en blocs et les distribue sur différents nœuds d'un cluster.
Les données sont réparties en blocs et distribuées sur des DataNodes dédiés au stockage. Ces blocs peuvent également être répliqués sur différents nœuds pour permettre un traitement parallèle efficace. Vous pouvez accéder aux données, les déplacer et les visualiser à l'aide d'un éventail de commandes. Les options DFS de HDFS comme -get et -put vous permettent d'extraire et de déplacer les données selon vos besoins.
D'autre part, HDFS est conçu pour être très vigilant et détecter rapidement les défaillances. Le système de fichiers utilise la réplication des données pour que chaque donnée soit sauvegardée plusieurs fois, puis les affecte à des nœuds spécifiques en s'assurant qu'au moins un exemplaire est hébergé sur un autre rack que les autres.
Autrement dit, si un DataNode cesse d'envoyer des signaux au NameNode, celui-ci retire le DataNode du cluster et continue de fonctionner sans lui. Si le DataNode défectueux est rétabli, il peut être affecté à un nouveau cluster. De plus, comme les blocs de données sont répliqués sur plusieurs DataNodes, on peut en supprimer un sans corrompre aucun fichier.
Composants de HDFS
Il est important de comprendre qu'Hadoop se compose de trois éléments principaux : Hadoop HDFS, Hadoop MapReduce et Hadoop YARN. Voyons comment ces trois composants s'articulent dans Hadoop :
- Hadoop HDFS : le système de fichiers distribué Hadoop (HDFS) est l'unité de stockage d'Hadoop.
- Hadoop MapReduce : Hadoop MapReduce est l'unité de traitement d'Hadoop. Ce framework logiciel permet d'écrire des applications pour traiter de grandes quantités de données.
- Hadoop YARN : Hadoop YARN est un composant de gestion de ressources dans Hadoop. Il traite les données pour effectuer des opérations de traitement par batch, de streaming, interactif et graphique, dont le résultat est stocké dans HDFS.
Comment créer un système de fichier HDFS ?
Vous voulez savoir comment créer un système de fichiers HDFS ? Suivez les étapes ci-dessous : elles vous permettront de créer le système, de le modifier et de le supprimer en cas de besoin.
Emplacement de votre HDFS
Votre listing HDFS doit être /user/yourUserName. Pour afficher le contenu de votre répertoire d'accueil HDFS, saisissez :
Comme vous venez juste de commencer, vous ne verrez rien pour le moment. Si vous voulez afficher le contenu d'un répertoire non vide, saisissez :
Vous pourrez alors voir le nom des répertoires d'accueil de tous les autres utilisateurs d'Hadoop.
Création d'un répertoire dans HDFS
Vous pouvez maintenant créer un répertoire de test. Appelons-le testHDFS. Il apparaît dans votre HDFS. Saisissez simplement :
Vous devez maintenant vérifier que le répertoire existe en utilisant la commande que vous avez saisie lorsque vous avez listé votre HDFS. Vous devriez voir le répertoire testHDFS.
Vérifiez à nouveau en utilisant le chemin complet vers votre HDFS. Saisissez :
Vérifiez à nouveau que cela fonctionne avant de passer aux étapes suivantes.
Copier un fichier
Pour copier un fichier vers HDFS à partir de votre système de fichiers local, commencez par créer un fichier à copier. Pour ce faire, saisissez :
Vous allez ainsi créer un nouveau fichier nommé testFile, contenant les caractères « HDFS test file ». Pour vérifier que c'est bien le cas, saisissez :
ls
Ensuite, vérifions que le fichier a bien été créé :
Vous devez maintenant copier le fichier vers HDFS. Pour copier les fichiers depuis Linux vers HDFS, vous devez utiliser :
Notez que vous devez utiliser la commande -copyFromLocal car la commande -cp sert à copier les fichiers au sein de HDFS.
Il ne reste plus qu'à confirmer que le fichier a bien été copié. Pour ce faire, saisissez :
Déplacer et copier des fichiers
Quand vous avez copié le fichier test, il a été placé dans le répertoire d'accueil. Vous pouvez maintenant le déplacer dans le répertoire testHDFS que vous avez créé. Utilisez la commande suivante :
La première partie a déplacé votre fichier testFile depuis le répertoire d'accueil de HDFS vers le répertoire de test que vous avez créé. La deuxième partie de la commande nous montre ensuite que le fichier ne se trouve plus dans le répertoire d'accueil HDFS, et la troisième confirme qu'il est maintenant situé dans le répertoire de test HDFS.
Pour copier un fichier, saisissez :
Vérification de l'utilisation du disque
Il peut être très utile de vérifier l'espace disque lorsque vous utilisez HDFS. Pour ce faire, vous pouvez saisir la commande suivante :
Vous pourrez alors voir quel espace vous utilisez dans votre HDFS. Vous verrez également la quantité d'espace disponible dans HDFS sur l'ensemble du cluster en saisissant :
Suppression d'un fichier ou d'un répertoire
Vous aurez certainement besoin à un moment ou un autre de supprimer un fichier ou un répertoire dans HDFS. Pour cela, vous utiliserez la commande suivante :
Vous pouvez voir que le répertoire testHDFS et l'exemplaire testFile2 sont toujours présents. Supprimez le répertoire à l'aide de la commande suivante :
Un message d'erreur s'affiche, mais pas de panique ! Le message indique « rmdir: testhdfs: Directory is not empty » (le répertoire n'est pas vide). Vous devez le vider avant de le supprimer. La commande rm permet de contourner cette obligation et de supprimer un répertoire avec tous les fichiers qu'il contient. Saisissez :
Comment installer HDFS ?
Avant d'installer Hadoop, rappelez-vous qu'il existe deux approches : un nœud simple (singlenode) ou plusieurs nœuds (multinode). Selon vos besoins, vous allez utiliser un singlenode ou un cluster multinode.
Dans le cas d'un cluster singlenode, un seul DataNode est exécuté. Une même machine héberge le NameNode, le DataNode, le gestionnaire de ressources et le gestionnaire de nœud.
Dans certains secteurs, c'est amplement suffisant. Par exemple, dans le domaine de la santé, si vous réalisez des études et que vous devez collecter, trier et traiter des données de façon séquentielle, un cluster singlenode suffit. Il n'aura aucun mal à traiter des données de cette échelle, contrairement à des données distribuées sur des centaines de machines. Pour installer un cluster singlenode, suivez les étapes ci-dessous :
- Téléchargez le paquet Java 8. Enregistrez ce fichier dans le répertoire d'accueil.
- Extrayez le fichier tar Java.
- Téléchargez le paquet Hadoop 2.7.3.
- Extrayez le fichier tar Hadoop.
- Ajoutez les chemins d'Hadoop et de Java dans le fichier bash (.bashrc).
- Modifiez les fichiers de configuration Hadoop.
- Ouvrez core-site.xml et modifiez la propriété.
- Ouvrez hdfs-site.xml et modifiez la propriété.
- Ouvrez mapred-site.xml et modifiez la propriété.
- Ouvrez yarn-site.xml et modifiez la propriété.
- Ouvrez hadoop-env.sh et ajoutez le chemin de Java.
- Rendez-vous dans le répertoire d'accueil d'Hadoop et formatez le NameNode.
- Rendez-vous dans le répertoire hadoop-2.7.3/sbin et lancez tous les démons.
- Vérifiez que tous les services d'Hadoop fonctionnent.
Et voilà ! Normalement, vous avez bien installé HDFS.
Comment accéder aux fichiers HDFS ?
Vous ne serez pas surpris d'apprendre que la sécurité de HDFS est très étroite. Après tout, il s'agit de données. Comme HDFS est techniquement un stockage virtuel, il couvre l'ensemble du cluster et ne permet de voir que les métadonnées de votre système de fichiers, sans donner accès aux données elles-mêmes.
Pour accéder aux fichiers HDFS, vous pouvez télécharger le fichier jar de HDFS sur votre système de fichiers local. Vous pouvez également accéder à HDFS via l'interface web. Ouvrez simplement votre navigateur et saisissez localhost:50070 dans la barre d'adresse. L'interface web de HDFS apparaît et vous pouvez accéder à l'onglet Utilitaires sur le côté droit. Cliquez ensuite sur « Browse file system » (parcourir le système de fichiers) pour afficher la liste complète des fichiers situés sur votre système HDFS.
Exemples de DFS HDFS
Voici quelques exemples de commandes Hadoop courantes.
Exemple A
Pour supprimer un répertoire, utilisez la commande suivante (remarque : ne fonctionne que si les répertoires sont vides) :
OU
Exemple B
Si vous avez plusieurs fichiers dans un HDFS, vous pouvez utiliser la commande « -getmerge ». Cela permettra de fusionner plusieurs fichiers en un seul que vous pourrez télécharger sur votre système de fichiers local. Pour cela, utilisez la commande suivante :
OU
Exemple C
Lorsque vous voulez importer un fichier de votre système HDFS vers votre système local, utilisez la commande « -put ». Précisez l'emplacement d'origine et le fichier que vous voulez copier dans HDFS. Utilisez la commande ci-dessous :
OU
Exemple D
La commande « count » permet de connaître le nombre de répertoires et de fichiers, ainsi que la taille des fichiers dans HDFS. Vous pouvez utiliser la commande suivante :
OU
Exemple E
La commande « chown » permet de modifier le propriétaire et le groupe d'un fichier. Elle s'utilise comme suit :
OU
Qu'est-ce que le stockage HDFS ?
Comme nous le savons maintenant, les données HDFS sont stockées dans ce que nous appelons des blocs. Ces blocs représentent la plus petite unité de données que le système de fichiers peut conserver. Les fichiers sont traités et répartis en blocs de ce type, et ces blocs sont ensuite distribués sur le cluster et répliqués pour des raisons de sécurité. Généralement, chaque bloc peut être répliqué trois fois. Ce schéma présente la façon dont les données du Big Data peuvent être stockées dans HDFS.
Le premier se trouve sur le DataNode, le deuxième est stocké sur un DataNode distinct sur le même cluster, et un troisième est stocké sur un DataNode d'un autre cluster. C'est une triple protection. Si le pire arrive et qu'une réplique est corrompue, les données ne sont pas définitivement perdues.
Le NameNode conserve les informations importantes, comme le nombre de blocs et l'emplacement de stockage des répliques. Par comparaison, un DataNode conserve les données à proprement parler. Il peut créer des blocs, en supprimer et les répliquer sur commande. Par exemple :
Cette commande détermine où les DataNodes doivent conserver leurs blocs.
Comment HDFS stocke-t-il les données ?
Le système de fichiers HDFS comprend un ensemble de services principaux (NameNode, NameNode secondaire et DataNodes). Le NameNode et le NameNode secondaire gèrent les métadonnées de HDFS. Les DataNodes hébergent les données HDFS sous-jacentes.
Le NameNode suit quels DataNodes contiennent le contenu d'un fichier donné dans HDFS. HDFS divise les fichiers en blocs et stocke chaque bloc sur un DataNode. Les différents DataNodes sont reliés dans le cluster. Le NameNode distribue ensuite les répliques de ces blocs de données sur le cluster. Il indique à l'utilisateur ou à l'application où localiser les informations voulues.
Quelles données le système de fichiers distribué Hadoop (HDFS) est-il conçu pour traiter ?
Pour dire les choses simplement, à la question « Quelles données le système de fichiers distribué Hadoop (HDFS) est-il conçu pour traiter ? », la réponse est d'abord et avant tout : celles du Big Data. HDFS peut avoir une valeur inestimable pour les grandes entreprises qui auraient autrement des difficultés à gérer et stocker les données de leurs activités et de leurs clients.
Avec Hadoop, vous pouvez stocker et unifier les données, qu'elles soient transactionnelles, scientifiques, de réseaux sociaux, publicitaires ou générées par des machines. Cela veut dire également que vous pouvez explorer ces données et en extraire des analyses et de précieux insights sur les performances commerciales.
Comme il a été conçu pour stocker des données, HDFS peut également traiter les données brutes qui sont couramment utilisées par les scientifiques et les analystes du domaine médical. Ces données brutes forment ce qu'on appelle des data lakes. Ils permettent d'aborder des questions difficiles sans limites.
De plus, comme Hadoop a été conçu à l'origine pour traiter des volumes de données considérables de différentes manières, il peut aussi être utilisé pour exécuter des algorithmes à des fins d'analytique. Il permet donc aux entreprises de traiter et analyser les données de façon plus efficace, pour leur permettre de découvrir de nouvelles tendances et de détecter les anomalies. Certains datasets sont même transférés des data warehouses vers Hadoop. Hadoop simplifie en effet la centralisation du stockage de toutes les données.
S'agissant de données transactionnelles, Hadoop est également équipé pour traiter des millions de transactions. Grâce à ses capacités de stockage et de traitement, il permet de conserver et d'analyser des données client. Vous pouvez également explorer les données pour découvrir des tendances et des modèles émergents afin de soutenir les objectifs commerciaux. Enfin, gardez à l'esprit qu'Hadoop reçoit régulièrement de nouvelles données et qu'il permet de comparer les anciennes et les nouvelles afin d'interpréter les changements.
Considérations relatives à HDFS
Par défaut, HDFS applique une triple réplication, ce qui veut dire qu'il existe deux exemplaires supplémentaires du dataset d'origine. Si cela améliore la probabilité d'accès à des données localisées lors du traitement, cette réplication entraîne également des coûts de stockage additionnels.
- HDFS fonctionne de façon optimale avec un stockage joint localement. C'est ainsi qu'on obtient les meilleures performances avec le système de fichiers.
- Pour augmenter la capacité de HDFS, il ne faut pas seulement ajouter de nouveaux supports de stockage, il faut aussi ajouter de nouveaux serveurs (calcul, mémoire et disques).
HDFS ou stockage d'objets cloud
Comme on l'a vu, les capacités de HDFS sont étroitement couplées aux ressources de calcul. L'augmentation des capacités de stockage entraîne une augmentation des ressources de CPU, même lorsqu'elles ne sont pas réellement nécessaires. Lorsqu'on ajoute des nœuds supplémentaires à HDFS, une opération de rééquilibrage doit être effectuée pour répartir les données existantes sur les serveurs qui ont été ajoutés.
Cette opération peut prendre un certain temps. Dans un environnement on-premise, le redimensionnement d'un cluster Hadoop peut aussi poser des difficultés en termes de coût et d'espace. HDFS utilise un stockage joint localement qui peut s'avérer avantageux pour les performances E/S, dès lors que YARN peut provisionner le traitement sur les serveurs qui stockent les données à traiter.
Dans les environnements fortement sollicités, il se peut que la majorité des opérations de lecture/écriture se fasse via le réseau plutôt que localement. Le stockage d'objets cloud comprend des technologies comme Azure Data Lake Storage, AWS S3 ou Google Cloud Storage. Il reste indépendant des ressources de calcul qui y accèdent et permet donc aux clients de stocker des quantités de données bien supérieures dans le cloud.
Les entreprises qui souhaitent stocker des pétaoctets de données n'auront aucune difficulté à le faire dans une solution de stockage d'objets cloud. Toutefois, toutes les opérations de lecture et d'écriture portant sur ce stockage se feront via le réseau. Il est donc important que les applications qui vont accéder aux données utilisent autant que possible la mise en cache ou intègrent une logique visant à minimiser les opérations d'E/S.