Vous voulez savoir comment Hadoop stocke d'énormes quantités de données de manière fiable et tolérante aux pannes ?
Dans ce didacticiel HDFS, nous allons aborder l'un des composants principaux de Hadoop, à savoir le système de fichiers distribués Hadoop (HDFS).
Tout d'abord, nous verrons une introduction à Distributed FileSystem. Ensuite, nous étudierons le Hadoop Distributed FileSystem. L'article explique la raison d'utiliser HDFS, l'architecture HDFS et les blocs dans HDFS.
L'article répertorie également certaines des fonctionnalités de Hadoop HDFS. En outre, vous découvrirez les messages de pulsation dans Hadoop HDFS.
Ce didacticiel HDFS fournit le guide d'introduction complet au stockage Hadoop HDFS le plus fiable.
Commençons d'abord par une introduction au système de fichiers distribué.
Système de fichiers distribué
Lorsque l'ensemble de données dépasse la capacité de stockage d'une seule machine, il devient obligatoire de partitionner l'ensemble de données sur plusieurs machines distinctes. Le système de fichiers qui gère les données sur le réseau de machines est appelé un système de fichiers distribué .
Un système de fichiers distribué est un système de fichiers qui nous permet de stocker des données sur plusieurs machines ou nœuds dans un cluster et permet à plusieurs utilisateurs d'accéder aux données.
Étant donné que le DFS est basé sur le réseau, toutes les complications de la programmation réseau entrent en jeu, rendant un système de fichiers distribué plus complexe que le système de fichiers normal. L'un des plus grands défis de DFS est de tolérer les pannes de nœud sans subir de perte de données.
Hadoop est livré avec un système de fichiers distribué appelé Hadoop Distributed Filesystem pour stocker de grandes quantités de données tout en offrant une tolérance aux pannes et une haute disponibilité.
Curieux de connaître HDFS ? Alors maintenant, commençons par le tutoriel HDFS.
Tutoriel HDFS – Introduction
Hadoop Distributed FileSystem (HDFS) est un système de fichiers distribué basé sur Java utilisé dans Hadoop pour stocker une grande quantité de données structurées ou non structurées, dont la taille varie de GigaBytes à PetaBytes, sur un cluster de matériel de base. C'est le stockage le plus fiable connu à ce jour sur la planète.
Dans HDFS, les données sont stockées à plusieurs endroits, donc si l'une des machines tombe en panne, les données peuvent être récupérées à partir d'une autre machine contenant la copie des données. Ainsi, il est hautement tolérant aux pannes et garantit l'absence de perte de données, même en cas de panne matérielle.
C'est le composant principal de Hadoop, avec MapReduce, YARN et d'autres utilitaires courants.
Il suit un Write-Once-Read-Many philosophie qui simplifie la cohérence des données et permet un accès à haut débit.
Pourquoi HDFS ?
Dans le monde informatique d'aujourd'hui, près de 75 % des données mondiales résident dans Hadoop HDFS. Cela est dû à la raison suivante :
- HDFS stocke les données sur le matériel de base grâce auquel il n'est pas nécessaire d'utiliser des machines haut de gamme pour stocker le Big Data. Fournit ainsi un stockage économique pour le stockage de données volumineuses.
- HDFS suit le modèle de traitement de données le plus efficace qui est le modèle Write-Once-Read-Many-Times. Un ensemble de données généré à partir de diverses sources est copié, puis les différentes analyses sont effectuées sur cet ensemble de données au fil du temps. Il est donc préférable pour le traitement par lots.
- HDFS peut stocker des données de n'importe quelle taille générées à partir de n'importe quelle source dans n'importe quel format, structuré ou non structuré.
- Son modèle écriture-un-lecture-plusieurs assouplit les exigences de contrôle de la simultanéité. Les données peuvent être consultées plusieurs fois sans aucun problème de cohérence des données.
- HDFS fonctionne sur l'hypothèse de localité des données selon laquelle le déplacement du calcul vers les données est beaucoup plus facile et plus rapide que le déplacement des données vers l'unité de calcul. HDFS facilite la localisation de la logique de traitement à proximité des données plutôt que de déplacer les données vers l'espace d'application. Ainsi, cela réduit la congestion du réseau et le délai d'exécution global.
Alors, pour avancer dans ce didacticiel HDFS, passons à l'architecture HDFS.
Architecture HDFS
Hadoop DFS suit maître-esclave architecture. Le HDFS se compose de deux types de nœuds qui sont le nœud maître et les nœuds esclaves. Le nœud maître gère l'espace de noms du système de fichiers, c'est-à-dire qu'il stocke les métadonnées sur les blocs de fichiers.
Les nœuds esclaves stockent les données utilisateur et sont responsables du traitement des données en fonction des instructions du nœud maître.
Maître HDFS
Master in HDFS est la pièce maîtresse de Hadoop HDFS. Ce sont les machines haut de gamme qui stockent les métadonnées liées à tous les fichiers stockés dans HDFS. Il gère et maintient l'espace de noms du système de fichiers et fournit des instructions aux nœuds esclaves.
Le NameNode est le nœud maître dans Hadoop HDFS.
Esclave HDFS
Les nœuds esclaves sont responsables du stockage des données commerciales réelles. Ce sont les machines de configuration normales (matériel de base) qui stockent et traitent les ensembles de données sur instruction du nœud maître.
Les DataNodes sont les nœuds esclaves dans Hadoop HDFS.
Noeud de nom HDFS
NameNode est le nœud maître. Il gère les opérations d'espace de noms du système de fichiers telles que l'ouverture/fermeture, le changement de nom des fichiers et des répertoires. NameNode mappe les blocs de données aux DataNodes et enregistre chaque modification apportée à l'espace de noms du système de fichiers.
Noeud de données HDFS
Les DataNodes sont les nœuds esclaves qui gèrent les demandes de lecture/écriture des clients HDFS. DataNodes crée, supprime et réplique des blocs de données conformément aux instructions du nœud de nom de gouvernance.
Vous vous demandez comment les données sont stockées dans HDFS ?
Blocs dans HDFS
HDFS divise les fichiers en blocs de la taille d'un bloc appelés blocs de données. Ces blocs sont stockés sur plusieurs DataNodes dans le cluster. La taille de bloc par défaut est de 128 Mo. Nous pouvons configurer la taille de bloc par défaut, en fonction de la configuration du cluster.
Pour le cluster avec des machines haut de gamme, la taille de bloc peut être maintenue grande (comme 256 Mo ou plus). Pour le cluster avec des machines ayant une configuration telle que 8 Go de RAM, la taille du bloc peut être réduite (comme 64 Mo).
En outre, HDFS crée des répliques de blocs en fonction du facteur de réplication (un nombre qui définit le nombre total de copies d'un bloc d'un fichier). Par défaut, le facteur de réplication est 3. Cela signifie que 3 copies de chaque bloc sont créées et stockées sur plusieurs nœuds.
Si l'un des DataNode échoue, le bloc est récupéré à partir d'un autre DataNode contenant une réplique d'un bloc. Cela rend HDFS tolérance aux pannes.
Avez-vous pensé à la façon dont NameNode découvre l'échec de DataNode ?
Échec du nœud de données
Tous les DataNodes de Hadoop HDFS envoient en continu un petit message de pulsation (signaux) à NameNode pour dire "Je suis vivant" toutes les 3 secondes.
Si NameNode ne reçoit pas de message de pulsation d'un DataNode particulier pendant plus de 10 minutes, il considère alors ce DataNode comme mort et commence à créer une réplique des blocs qui étaient disponibles sur ce DataNode.
NameNode demande aux DataNodes contenant une copie de ces données de répliquer ces données sur d'autres DataNodes pour équilibrer la réplication. De cette façon, NameNode découvre l'échec de DataNode.
Vous voulez savoir comment NameNode place des répliques sur différents DataNode ? Explorons la reconnaissance des racks dans HDFS pour obtenir une réponse à la question ci-dessus.
Reconnaissance du rack dans HDFS
Hadoop HDFS stocke les données sur le cluster de matériel de base. Pour fournir une tolérance aux pannes, des répliques de blocs sont créées et stockées sur différents DataNodes.
NameNode place les répliques de blocs sur plusieurs DataNodes en suivant l'algorithme Rack Awareness pour garantir l'absence de perte de données même si DataNode ou l'ensemble du rack tombe en panne. Le NameNode place le premier réplica sur le DataNode le plus proche.
Il stocke la deuxième réplique sur différents DataNode sur le même rack et la troisième réplique sur différents DataNode sur un rack différent.
Si le facteur de réplication est de 2, alors il place la deuxième réplique sur un DataNode différent sur un rack différent de sorte que si un rack complet tombe en panne, le système sera également hautement disponible.
L'objectif principal d'une stratégie de placement de réplicas compatibles avec le rack est d'améliorer la tolérance aux pannes, la fiabilité des données et la disponibilité.
Ensuite, dans le didacticiel HDFS, nous aborderons certaines fonctionnalités clés de Hadoop HDFS.
Caractéristiques importantes de Hadoop HDFS
1. Haute disponibilité
C'est un système de fichiers hautement disponible. Dans ce système de fichiers, les données sont répliquées entre les nœuds du cluster Hadoop en créant une réplique des blocs sur les autres esclaves présents dans le cluster HDFS. Ainsi, chaque fois qu'un utilisateur souhaite accéder à ces données, il peut accéder à ses données à partir des esclaves, qui contiennent ses blocs.
2. Tolérance aux pannes
La tolérance aux pannes dans Hadoop HDFS est la force de travail d'un système dans des conditions défavorables. Il est hautement tolérant aux pannes. Le framework Hadoop divise les données en blocs.
Après cela, il crée plusieurs copies de blocs sur différentes machines du cluster. Ainsi, lorsqu'une machine du cluster tombe en panne, un client peut facilement accéder à ses données à partir de l'autre machine, qui contient la même copie de blocs de données.
3. Haute fiabilité
HDFS fournit un stockage de données fiable. Il peut stocker des données de l'ordre de 100s de pétaoctets. HDFS stocke les données de manière fiable sur un cluster. Il divise les données en blocs. Ensuite, le framework Hadoop stocke ces blocs sur les nœuds présents dans le cluster.
HDFS stocke également les données de manière fiable en créant une réplique de chaque bloc présent dans le cluster. Fournit donc une installation de tolérance aux pannes.
4. Réplication
La réplication de données est une fonctionnalité unique de HDFS. La réplication résout le problème de la perte de données dans des conditions défavorables telles qu'une panne matérielle, une panne de nœuds, etc. HDFS maintient le processus de réplication à un intervalle de temps régulier.
Il continue également à créer des répliques de données utilisateur sur différentes machines présentes dans le cluster. Ainsi, lorsqu'un nœud tombe en panne, l'utilisateur peut accéder aux données d'autres machines. Ainsi, il n'y a aucune possibilité de perdre des données utilisateur.
5. Évolutivité
Il stocke les données sur plusieurs nœuds du cluster. Ainsi, chaque fois que les exigences augmentent, vous pouvez faire évoluer le cluster. Deux mécanismes d'évolutivité sont disponibles dans HDFS :l'évolutivité verticale et horizontale.
6. Stockage distribué
Les fonctionnalités HDFS sont réalisées via le stockage et la réplication distribués. Il stocke les données de manière distribuée sur les nœuds. Dans Hadoop, les données sont divisées en blocs et stockées sur les nœuds présents dans le cluster.
Après cela, il crée la réplique de chaque bloc et le stocke sur d'autres nœuds. Lorsque la machine unique du cluster tombe en panne, nous pouvons facilement accéder à nos données à partir des autres nœuds qui contiennent sa réplique.
Ensuite, dans le didacticiel HDFS, nous aborderons quelques opérations HDFS utiles.
Fonctionnement HDFS
Hadoop HDFS présente de nombreuses similitudes avec le système de fichiers Linux. Nous pouvons faire presque toutes les opérations que nous pouvons faire avec un système de fichiers local comme créer un répertoire, copier le fichier, modifier les autorisations, etc.
Il fournit également différents droits d'accès comme la lecture, l'écriture et l'exécution aux utilisateurs, groupes et autres.
1. Lire l'opération
Lorsque le client HDFS veut lire un fichier à partir de HDFS, le client interagit d'abord avec NameNode. NameNode est le seul endroit qui stocke les métadonnées. NameNode spécifie l'adresse des esclaves où les données sont stockées. Ensuite, le client interagit avec les DataNodes spécifiés et lit les données à partir de là.
Le client HDFS interagit avec l'API du système de fichiers distribué. Ensuite, il envoie une demande à NameNode pour envoyer un emplacement de bloc. NameNode vérifie d'abord si le client a des privilèges suffisants pour accéder aux données ou non ? Après cela, NameNode partagera l'adresse à laquelle les données sont stockées dans le DataNode.
NameNode fournit un jeton au client, qu'il montre au DataNode pour lire le fichier à des fins de sécurité. Lorsqu'un client accède à DataNode pour lire le fichier, après avoir vérifié le jeton, DataNode permet au client de lire ce bloc particulier.
Après cela, le client ouvre le flux d'entrée et commence à lire les données à partir des DataNodes spécifiés. Ainsi, de cette manière, le client lit les données directement à partir de DataNode.
2. Opération d'écriture
Pour écrire un fichier, le client interagit d'abord avec NameNode. HDFS NameNode fournit l'adresse du DataNode sur lequel les données doivent être écrites par le client.
Lorsque le client a fini d'écrire le bloc, le DataNode commence à répliquer le bloc dans un autre DataNode. Ensuite, il copie le bloc dans le troisième DataNode. Une fois qu'il a créé la réplication requise, il envoie un accusé de réception final au client. L'authentification est la même que l'opération de lecture.
Le client envoie juste 1 copie des données quel que soit notre facteur de réplication, tandis que les DataNodes répliquent les blocs. L'écriture de fichier n'est pas coûteuse car elle écrit plusieurs blocs en parallèle plusieurs blocs sur plusieurs DataNodes.
Résumé
Dans la conclusion du didacticiel HDFS, nous pouvons dire que Hadoop HDFS stocke les données de manière distribuée sur le cluster de matériel de base.
Hadoop HDFS est un système de stockage hautement fiable, tolérant aux pannes et hautement disponible connu à ce jour. Il suit l'architecture maître-esclave où NameNode est le nœud maître et les DataNodes sont les nœuds esclaves.
En outre, le HDFS divise le fichier d'entrée du client en blocs de taille 128 Mo, que nous pouvons configurer selon nos besoins. Il stocke également des répliques de blocs pour fournir une tolérance aux pannes.
NameNode suit la politique de sensibilisation du rack pour placer des répliques sur DataNode afin de s'assurer qu'aucune donnée n'est perdue lors d'une panne de machine ou d'une panne matérielle. De plus, les DataNodes envoient un message de pulsation à NameNode pour s'assurer qu'ils sont actifs.
Lors de la lecture ou de l'écriture d'un fichier, le client interagit d'abord avec le NameNode.
Le Hadoop HDFS est un système de stockage évolutif, fiable, distribué, tolérant aux pannes et hautement disponible pour le stockage de données volumineuses.