Hadoop Partitioner : en savoir plus sur l'introduction, la syntaxe et la mise en œuvre

Publié: 2020-05-14

L'objectif fondamental de ce didacticiel Hadoop Partitioner est de vous donner une définition point par point de chaque partie utilisée dans Hadoop. Dans cet article, nous allons couvrir la signification de Hadoop Partitioner, la nécessité d'un partitionneur dans Hadoop et un mauvais cas de partitionnement Hadoop.

Comprenons ce qu'est Hadoop Partitioner.

Table des matières

Qu'est-ce que le partitionneur dans Hadoop ?

Un partitionneur permet de diffuser comment les sorties vont de l'étage de la carte aux réducteurs.

Le partitionneur contrôle le segment clé des sorties de carte du milieu. La clé ou un sous-ensemble de la clé est utilisé pour déduire la partition par une fonction de hachage.

En fait, la structure Hadoop est un partitionneur basé sur le hachage. Cette fonction de hachage dans Hadoop permet de dériver la partition.

La partition fonctionne sur la sortie du mappeur en fonction de la valeur de la clé. La même valeur de clé va dans la même partition dans chaque mappeur. Après ce processus, la partition finale est envoyée à un réducteur.

La classe d'une partition décide où la paire d'une clé et d'une valeur ira. La phase de partitionnement tombe au milieu de la carte et réduit les phases.

Voyons pourquoi un partitionneur Hadoop est nécessaire.

Quel est le besoin d'un partitionneur Hadoop ?

Un ensemble de données d'entrée est pris et une liste de paires de clés et de valeurs est produite dans la phase de travail de l'architecture MapReduce. Ces paires de clé et de valeur sont formées dans la phase de mappage. Cela s'est produit lorsque les données d'entrée sont divisées, qui sont ensuite traitées par chaque tâche et carte, produisant une liste de paires de clé et de valeur.

Cependant, la partition map out se produit juste avant la phase de réduction, en fonction de la clé et de la valeur. De cette façon, toutes les clés de mêmes valeurs sont regroupées et vont dans le même réducteur. Par conséquent, même la distribution de la sortie de la carte sur le réducteur est assurée.

Le partitionnement Hadoop MapReduce permet une distribution uniforme de la sortie du mappeur sur le réducteur en garantissant que la bonne clé va au bon réducteur.

Lire : Salaire d'un développeur Hadoop en Inde

Syntaxe de Hash Partitioner dans Hadoop

Voici la syntaxe par défaut d'un partitionneur de hachage dans Hadoop.

public int getPartition (clé K, valeur V

int numReduceTasks)

{

return(key.hashCode() & Integer.MAX_VALUE) % numRedudeTasks ;

}

Implémentation du partitionneur Hadoop

Pour voir un exemple d'utilisation de Hadoop Partitioner dans des applications pratiques, regardons le tableau ci-dessous contenant des données pour les résidents d'un bloc dans un bâtiment.

Numéro d'appartement Nom Le sexe Membres de la famille Facture d'électricité
1101 Manisha Femme 3 1500
1102 Deepak Homme 4 2000
1103 Sanjay Homme 3 1100
1104 Nidhi Femme 2 900
1105 Prateek Homme 1 650
1106 Gopal Homme 4 1800
1107 Samiksha Femme 2 1300

Écrivons maintenant un programme pour trouver la facture d'électricité la plus élevée par sexe dans différents groupes de membres de la famille - 2 à 3 et moins de 4.

Les données fournies sont enregistrées en tant que input.txt dans le répertoire "/home/Hadoop/HadoopPartitioner".

La clé suit un modèle - clé spéciale + nom de fichier + numéro de ligne. Par exemple,

clé = entrée@1

Pour cela, la valeur serait

valeur = 1101 \t Manisha \t Femelle \t 3 \t 1500

Voici comment l'opération se déroulerait :

  • Lire la valeur
  • Utilisez la fonction split pour séparer les genres et les stocker dans une variable de chaîne

String[] str = value.toString().split("\t", -2);

Sexe de la chaîne = str[2] ;

  • Envoyez maintenant des informations sur le sexe et enregistrez la valeur des données sous forme de paire ley et valeur à la tâche de partition

context.write(new Text(genre), new Text(value));

  • Répéter pour tous les enregistrements

En sortie, vous obtiendrez les données de genre triées et la valeur des données sous forme de paires clé et valeur.

Voici comment se déroulerait la tâche de partitionnement.

Tout d'abord, le partitionneur prendra les paires clé et valeur qui lui sont envoyées en entrée. Maintenant, il divisera les données en différents segments.

Contribution

clé = valeur du champ sexe

valeur = enregistrer la valeur de ce sexe

Voici comment le processus va suivre.

  • Lire la valeur du membre de la famille à partir de la paire clé-valeur

String[] str = value.toString().split("\t");

int age = Integer.parseInt(str[3]);

  • Vérifier la valeur des membres de la famille avec les conditions suivantes
  • Membres de la famille de 2 à 3
  • Membres de la famille de moins de 4 ans

si(membres de la famille<4)

{

renvoie 0 ;

}

sinon si(membresfamille>=2 && membresfamille<=3)

{

renvoie 1 % numReduceTasks ;

}

autre

{

renvoie 2 % numReduceTasks ;

}

Sortir

Les données des paires de clé et de valeur seront segmentées dans les trois collections données.

Découvrez également : Les meilleurs outils Hadoop à connaître

Mauvais partitionnement et le surmonter

Supposons que vous puissiez prédire qu'une des clés de vos données d'entrée apparaîtra plus que toute autre clé. Ainsi, vous devrez peut-être envoyer toute votre clé (un nombre énorme) à une partition et ensuite, répartir les clés restantes sur toutes les autres partitions par leur hashCode().

Ainsi, vous disposez maintenant de deux mécanismes d'envoi d'informations aux partitions :

  1. Tout d'abord, la clé qui apparaît plus sera envoyée à une partition
  2. Deuxièmement, toutes les clés restantes seront envoyées aux partitions selon leur hashCode().

Maintenant, disons que votre technique hashCode() ne s'avère pas distribuer correctement les autres clés sur les partitions. Ainsi, l'information ne circule pas également dans les cloisons et les réducteurs. En effet, chaque partition est proportionnelle à un réducteur.

Ainsi, certains réducteurs auront de plus grandes quantités de données que d'autres réducteurs. Par conséquent, les réducteurs restants devront attendre un réducteur (un avec des clés définies par l'utilisateur) en raison de la charge à portée de main.

Dans ce cas, vous devez suivre une méthodologie qui partagerait les données entre différents réducteurs. Apprenez-en plus sur Hadoop avec notre didacticiel ultime Hadoop.

Conclusion

Nous espérons que ce guide sur les partitionneurs Hadoop vous a été utile. Pour plus d'informations à ce sujet, contactez les experts d'upGrad, et nous vous aiderons à naviguer.

Si vous souhaitez en savoir plus sur le Big Data, consultez notre programme PG Diploma in Software Development Specialization in Big Data qui est conçu pour les professionnels en activité et fournit plus de 7 études de cas et projets, couvre 14 langages et outils de programmation, pratique pratique ateliers, plus de 400 heures d'apprentissage rigoureux et d'aide au placement dans les meilleures entreprises.

Apprenez des cours de développement de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Maîtrisez la technologie du futur - Big Data

Programme de certificat avancé en Big Data de l'IIIT Bangalore