Dans ce tutoriel, nous vous fournirons une description détaillée d'un cache distribué dans Hadoop . Tout d'abord, nous allons comprendre brièvement ce qu'est Hadoop, puis nous verrons ce qu'est le cache distribué dans Hadoop.
Nous couvrirons également le fonctionnement et la mise en œuvre du cache distribué Hadoop. Enfin, dans ce blog, nous verrons également les avantages et les inconvénients de la mise en cache distribuée dans Hadoop.
Introduction à Hadoop
Il s'agit d'un mécanisme fourni par le framework MapReduce pour mettre en cache les fichiers nécessaires aux applications. Il peut mettre en cache des fichiers tels que des fichiers texte/données en lecture seule et des types plus complexes tels que des archives, des fichiers jar, etc.
Avant de commencer avec le cache distribué, discutons d'abord de ce qu'est Hadoop ?
Hadoup est un cadre de programmation open source basé sur Java. Il prend en charge le traitement et le stockage d'ensembles de données extrêmement volumineux dans un environnement distribué. Hadoop suit la topologie maître-esclave.
Le maître est NameNode et l'esclave est DataNode. Datanode stocke les données réelles dans HDFS . Et il effectue une opération de lecture et d'écriture selon la demande du client. Namenode stocke les métadonnées.
Dans Apache Hadoop, les blocs de données sont traités en parallèle entre les Datanodes, à l'aide d'un programme écrit par l'utilisateur. Si nous voulons accéder à certains fichiers de tous les Datanodes, nous placerons ce fichier dans un cache distribué.
Qu'est-ce que le cache distribué dans Hadoop ?
Cache distribué dans Hadoop est une fonctionnalité fournie par le framework MapReduce. Le cache distribué peut mettre en cache des fichiers lorsque les applications en ont besoin. Il peut mettre en cache des fichiers texte en lecture seule, des archives, des fichiers jar, etc.
Une fois que nous avons mis en cache un fichier pour notre travail, Apache Hadoop le rendra disponible sur chaque nœud de données où les tâches map/reduce sont en cours d'exécution. Ainsi, nous pouvons accéder aux fichiers de tous les nœuds de données de notre tâche MapReduce.
Taille du cache distribué
Par défaut, la taille du cache distribué est de 10 Go. Si nous voulons ajuster la taille du cache distribué, nous pouvons l'ajuster en utilisant local .cache .taille.
Mise en œuvre
Une application qui va utiliser le cache distribué pour distribuer un fichier :
- Devrait d'abord s'assurer que le fichier est disponible.
- Après cela, assurez-vous également que le fichier est accessible via des URL. Les URL peuvent être soit hdfs :// ou https://.
Après la validation ci-dessus, si le fichier est présent sur les urls mentionnées. L'utilisateur Hadoop mentionne qu'il s'agit d'un fichier cache du cache distribué. La tâche Hadoop MapReduce copiera le fichier cache sur tous les nœuds avant de démarrer les tâches sur ces nœuds.
Suivez le processus ci-dessous :
a) Copiez le fichier requis sur le HDFS :
$ hdfs dfs-put/user/dataflair/lib/jar_file.jar
b) Configurez la JobConf de l'application :
DistributedCache.addFileToClasspath(nouveau chemin ("/user/dataflair/lib/jar-file.jar"), conf).
c) Ajoutez-le dans la classe Pilote.
Avantages du cache distribué
- Point de défaillance unique : Comme le cache distribué s'exécute sur de nombreux nœuds. Par conséquent, la défaillance d'un seul nœud n'entraîne pas une défaillance complète du cache.
- Cohérence des données- Il suit les horodatages de modification des fichiers de cache. Il notifie ensuite que les fichiers ne doivent pas changer tant qu'un travail n'est pas en cours d'exécution. À l'aide d'un algorithme de hachage, le moteur de cache peut toujours déterminer sur quel nœud réside une valeur-clé particulière. Comme nous le savons, il y a toujours un seul état du cluster de cache, donc, il n'est jamais incohérent.
- Stocker des données complexes – Il distribue un fichier texte simple en lecture seule. Il stocke également des types complexes comme des pots, des archives. Ces réalisations sont ensuite désarchivées au niveau du nœud esclave.
Inconvénient du cache distribué
Un cache distribué dans Hadoop a une surcharge qui le rendra plus lent qu'un cache in-process :
a) Sérialisation d'objets – Il doit sérialiser les objets. Mais le mécanisme de sérialisation présente deux problèmes principaux :
- Très volumineux – La sérialisation stocke le nom complet de la classe, le cluster et les détails de l'assembly. Il stocke également des références à d'autres instances dans des variables membres. Tout cela rend la sérialisation très volumineuse.
- Très lent – La sérialisation utilise la réflexion pour inspecter le type d'informations lors de l'exécution. La réflexion est un processus très lent par rapport au code précompilé.
Conclusion
En conclusion du cache distribué, nous pouvons dire qu'il s'agit d'une fonctionnalité fournie par MapReduce. Il met en cache les fichiers lorsque les applications en ont besoin. Il peut mettre en cache des fichiers texte en lecture seule, des archives, des fichiers jar, etc.
Par défaut, la taille du cache distribué est de 10 Go. Si vous trouvez ce blog ou si vous avez des questions concernant le cache distribué dans Hadoop, n'hésitez pas à partager avec nous.