Table des matières:
- Démarrage et fonctionnement de NameNode
- Ecriture de données
- Lecture de données
- Équilibrage des données dans le cluster Hadoop
- Conception du serveur maître NameNode
Vidéo: 【TUTO】Gérer ses sauvegardes sur PS4 2024
Le NameNode fait office de carnet d'adresses pour Hadoop Distributed File System (HDFS) car il ne sait pas seuls les blocs constituent des fichiers individuels mais également où sont stockés chacun de ces blocs et leurs répliques. Lorsqu'un utilisateur stocke un fichier dans HDFS, le fichier est divisé en blocs de données et trois copies de ces blocs de données sont stockées dans des nœuds esclaves dans le cluster Hadoop.
C'est beaucoup de blocs de données à suivre. Comme vous pouvez vous y attendre, savoir où les corps sont enterrés fait du NameNode un composant d'importance critique dans un cluster Hadoop. Si le NameNode n'est pas disponible, les applications ne peuvent accéder à aucune donnée stockée dans HDFS.
Si vous regardez la figure suivante, vous pouvez voir le démon NameNode s'exécuter sur un serveur de noeud maître. Toutes les informations de mappage traitant des blocs de données et de leurs fichiers correspondants sont stockées dans un fichier nommé.
HDFS est un système de fichiers de journalisation, ce qui signifie que les modifications de données sont consignées dans un journal d'édition qui suit les événements depuis le dernier point de contrôle - dernière fois que le journal d'édition a été fusionné. Dans HDFS, le journal d'édition est conservé dans un fichier nommé stocké sur le NameNode.
Démarrage et fonctionnement de NameNode
Pour comprendre le fonctionnement de NameNode, il est utile de voir comment il démarre. Le but de NameNode étant d'informer les applications du nombre de blocs de données à traiter et de conserver l'emplacement exact où elles sont stockées, il a besoin de tous les emplacements de bloc et des mappages de bloc vers fichier disponibles dans RAM.
Voici les étapes que le NameNode prend. Pour charger toutes les informations dont le NameNode a besoin après son démarrage, voici ce qui se passe:
-
Le NameNode charge le fichier en mémoire.
-
Le NameNode charge le fichier et rejoue les modifications journalisées pour mettre à jour les métadonnées de bloc déjà en mémoire.
-
Les démons DataNode envoient les rapports de bloc NameNode.
Pour chaque nœud esclave, il y a un rapport de bloc qui liste tous les blocs de données qui y sont stockés et décrit la santé de chacun.
Une fois le processus de démarrage terminé, le noeud NameNode dispose d'une image complète de toutes les données stockées dans HDFS et est prêt à recevoir des demandes d'application des clients Hadoop.
Comme les fichiers de données sont ajoutés et supprimés en fonction des demandes des clients, les modifications sont écrites sur les volumes de disque du nœud esclave, les modifications sont répercutées dans les emplacements de bloc et les métadonnées stockées dans la mémoire de NameNode..
Pendant toute la durée de vie du cluster, les démons DataNode envoient les pulsations NameNode (un signal rapide) toutes les trois secondes, indiquant qu'ils sont actifs.(Cette valeur par défaut est configurable.) Toutes les six heures (à nouveau, une valeur par défaut configurable), les DataNodes envoient au NameNode un rapport de bloc décrivant les blocs de fichiers sur leurs nœuds. De cette façon, le NameNode a toujours une vue actuelle des ressources disponibles dans le cluster.
Ecriture de données
Pour créer de nouveaux fichiers dans HDFS, le processus suivant doit avoir lieu:
-
Le client envoie une requête au NameNode pour créer un nouveau fichier.
Le NameNode détermine le nombre de blocs nécessaires et le client obtient un bail pour créer ces nouveaux blocs de fichiers dans le cluster. Dans le cadre de ce bail, le client a une limite de temps pour terminer la tâche de création. (Cette limite de temps garantit que l'espace de stockage n'est pas utilisé par les applications client défaillantes.)
-
Le client écrit ensuite les premières copies des blocs de fichiers sur les nœuds esclaves à l'aide du bail attribué par NameNode.
Le NameNode gère les demandes d'écriture et détermine où les blocs de fichiers et leurs répliques doivent être écrits, en équilibrant la disponibilité et les performances. La première copie d'un bloc de fichier est écrite dans un rack, et les deuxième et troisième copies sont écrites sur un rack différent de celui de la première copie, mais dans des nœuds esclaves différents dans le même rack. Cette disposition minimise le trafic réseau tout en garantissant qu'aucun bloc de données ne se trouve sur le même point de défaillance.
-
Lorsque chaque bloc est écrit dans HDFS, un processus spécial écrit les répliques restantes sur les autres noeuds esclaves identifiés par NameNode.
-
Une fois que les démons DataNode ont reconnu que les répliques de blocs de fichiers ont été créées, l'application cliente ferme le fichier et notifie le NameNode, qui ferme ensuite le bail ouvert.
Lecture de données
Pour lire des fichiers à partir de HDFS, le processus suivant doit avoir lieu:
-
Le client envoie une requête au NameNode pour un fichier.
Le NameNode détermine quels blocs sont impliqués et choisis, en fonction de la proximité globale des blocs entre eux et avec le client, le chemin d'accès le plus efficace.
-
Le client accède alors aux blocs en utilisant les adresses données par NameNode.
Équilibrage des données dans le cluster Hadoop
Au fil du temps, avec des combinaisons de modèles d'intégration de données inégaux (où certains nœuds esclaves peuvent recevoir davantage de données) ou de défaillances de nœuds, les données risquent de se répartir inégalement entre les racks et des nœuds esclaves dans votre cluster Hadoop.
Cette distribution inégale peut avoir un impact négatif sur les performances car la demande sur les nœuds esclaves individuels sera déséquilibrée; les nœuds avec peu de données ne seront pas entièrement utilisés; et les nœuds avec beaucoup de blocs seront surutilisés. ( Note: La surutilisation et la sous-utilisation sont basées sur l'activité du disque, pas sur CPU ou RAM.)
HDFS inclut un utilitaire d'équilibrage pour redistribuer les blocs des nœuds esclaves surutilisés aux nœuds sous-utilisés tout en conservant la politique blocs sur différents noeuds et racks esclaves. Les administrateurs Hadoop doivent vérifier régulièrement l'intégrité de HDFS et, si les données sont distribuées de manière inégale, ils doivent appeler l'utilitaire d'équilibrage.
Conception du serveur maître NameNode
En raison de sa nature critique, le serveur maître exécutant le démon NameNode nécessite des exigences matérielles nettement différentes de celles d'un nœud esclave. Plus important encore, les composants au niveau de l'entreprise doivent être utilisés pour minimiser la probabilité d'une panne. En outre, vous aurez besoin de suffisamment de RAM pour charger en mémoire toutes les métadonnées et les données de localisation de tous les blocs de données stockés dans HDFS.