Qu'est-ce que le cache distribué dans Hadoop?

Hadoop est un framework open-source qui utilise le stockage distribué ainsi que le traitement d'énormes ensembles de données à l'aide de HDFS et de MapReduce. Il a NameNodes qui stockent les métadonnées et DataNodes qui stockent les données réelles dans HDFS. Lorsque nous devons traiter les énormes ensembles de données, cela se fait par un programme écrit par les utilisateurs, puis le traitement se fait en parallèle dans les DataNodes. Dans le framework Hadoop, certains fichiers sont fréquemment utilisés par les travaux MapReduce. S'il y a le nombre de mappeurs en cours d'exécution, chaque fois qu'il est nécessaire de lire les fichiers depuis HDFS, la latence augmentera à mesure que le temps de recherche augmentera également. Ainsi, au lieu de lire les fichiers à chaque fois que les fichiers sont nécessaires, les fichiers peuvent être copiés et envoyés à tous les DataNodes. Ce mécanisme est appelé cache distribué dans Hadoop.

Fonctionnement du cache distribué dans Hadoop

  • Hadoop copie les fichiers spécifiés par les options telles que –files, -libjars et –archives sur le HDFS lorsqu'un travail est lancé. Ensuite, le Node Manager copiera les fichiers de HDFS dans le cache afin que lorsqu'une tâche s'exécute, il puisse accéder aux fichiers. Les fichiers peuvent être qualifiés de localisés lorsqu'ils sont copiés dans le cache ou sur le disque local.
  • Dans le cache, le nombre de tâches utilisant chaque fichier est conservé comme référence par le Node Manager. Le nombre de références des fichiers devient 1 avant l'exécution de la tâche. Mais une fois la tâche exécutée, le nombre est diminué de 1. Lorsque le nombre devient 0, le fichier peut être supprimé car il n'est pas utilisé. Lorsque le cache d'un nœud atteint sa certaine taille, la suppression d'un fichier est effectuée afin que les nouveaux fichiers puissent être hébergés. La taille du cache peut être modifiée dans la propriété de configuration. La taille du cache distribué dans Hadoop est de 10 Go par défaut.
  • MapReduce devient plus lent que le cache en cours s'il a une surcharge. Afin de surmonter cette situation, le cache distribué peut sérialiser les objets, mais même cela a peu de problèmes. La réflexion est un processus utilisé pour rechercher le type d'informations pendant l'exécution, ce qui est très lent. En outre, il devient très difficile dans la sérialisation où il stocke le nom complet du cluster, le nom de classe ainsi que les références à d'autres instances présentes dans les variables membres.

Implémentation de Hadoop dans le cache distribué

  • Pour utiliser le cache distribué pour une application, nous devons nous assurer que pour distribuer un fichier sur les nœuds; le fichier doit d'abord être disponible. Nous devons donc copier les fichiers sur HDFS et nous devons également vérifier que le fichier est accessible via des URI qui peuvent être trouvés en accédant au core-site.xml. Ensuite, le travail MapReduce copie le fichier cache sur tous les nœuds avant que les tâches ne commencent à s'exécuter sur ces nœuds.
  • Donc, pour implémenter le cache distribué, nous devons copier les fichiers sur HDFS et nous pouvons vérifier si cela est fait ou non via la commande hdfs dfs –put /path/samplefile.jar. En outre, la configuration du travail doit être configurée pour l'application et cela doit être ajouté à la classe de pilote.
  • Les fichiers qui ne sont lisibles que par le propriétaire, vont dans le cache privé tandis que le cache partagé contient les fichiers qui sont lisibles par tous. Le fichier qui est ajouté au cache est utilisé sans aucune contrainte dans toutes les machines du cluster en tant que fichier local. Les appels d'API ci-dessous peuvent être utilisés pour ajouter les fichiers dans le cache.

Code:

DistributedCache.addCacheFile(URI, conf);
DistributedCache.setCacheFiles(URIs, conf);

Le partage des fichiers de cache distribué sur les nœuds esclaves dépend de si les fichiers de cache distribué sont privés ou publics. Les fichiers de cache distribué privé sont mis en cache dans le répertoire local de l'utilisateur qui est privé pour l'utilisateur et ces fichiers sont requis par les travaux de l'utilisateur. Dans le cas des fichiers de cache distribués publics, les fichiers sont mis en cache dans le répertoire global. L'accès aux fichiers en cas de cache public est configuré de manière à ce qu'ils soient visibles par tous les utilisateurs. En outre, le fichier de cache distribué devient privé ou public en fonction de l'autorisation sur le système de fichiers.

Avantages du cache distribué dans Hadoop

Avec l'utilisation du cache distribué, de nombreuses fonctionnalités avantageuses sont ajoutées au cadre Hadoop. Voici les avantages de l'utilisation du cache distribué:

1. Cache distribué en un seul point de défaillance

En cas de défaillance d'un nœud, il ne fera pas l'échec complet du cache. Parce que le cache distribué s'exécute en tant que processus autonome ou indépendant sur les différents nœuds. Donc, si l'échec du cache se produit sur un nœud, cela ne signifie pas que le cache complet doit également échouer.

2. Cohérence des données

En utilisant l'algorithme de hachage, il peut être déterminé quelles paires clé-valeur appartiennent à quel nœud. En outre, le cache distribué dans Hadoop surveille ou suit la modification d'horodatage effectuée sur les fichiers de cache et signale que tant que le travail n'a pas été exécuté, un fichier ne doit pas changer. Ainsi, les données ne deviennent jamais incohérentes en raison de l'état unique du cluster de cache.

3. Stockage de données complexes

Le cache distribué dans le cadre Hadoop offre l'avantage de mettre en cache les fichiers en lecture seule comme les fichiers texte, les fichiers JAR, etc., puis de les diffuser aux nœuds de données. Pour cette raison, une copie du fichier est stockée dans chaque nœud de données. Avec la fonction de cache distribué, des fichiers complexes comme un bocal, etc. sont distribués et stockés.

Conclusion

Le cache distribué offre une efficacité car les fichiers sont copiés une fois pour chaque travail. De plus, il a la capacité de mettre en cache les archives qui ne sont pas archivées sur les esclaves. L'utilisation du cache distribué est un bonus supplémentaire et dépend du développeur pour tirer le meilleur parti de cette fonctionnalité.

Articles recommandés

Ceci est un guide du cache distribué dans Hadoop. Nous discutons ici de ce qu'est le cache distribué dans Hadoop, de son travail, de sa mise en œuvre, avec des avantages. Vous pouvez également consulter nos autres articles connexes pour en savoir plus -

  1. Avantages de Hadoop
  2. Installer Hadoop
  3. Qu'est-ce que Head in Git?
  4. Écosystème Apache Hadoop
  5. Variables en JavaScript

Catégorie: