Hadoop Partitioner: Erfahren Sie mehr über Einführung, Syntax, Implementierung

Veröffentlicht: 2020-05-14

Das grundlegende Ziel dieses Hadoop Partitioner-Lernprogramms besteht darin, Ihnen eine Punkt-für-Punkt-Definition aller Teile zu geben, die in Hadoop verwendet werden. In diesem Beitrag behandeln wir die Bedeutung von Hadoop Partitioner, die Notwendigkeit eines Partitionierers in Hadoop und einen schwachen Fall von Hadoop-Partitionierung.

Lassen Sie uns verstehen, was Hadoop Partitioner ist.

Inhaltsverzeichnis

Was ist Partitionierer in Hadoop?

Ein Partitionierer ermöglicht die Verbreitung, wie die Ausgaben von der Abbildungsstufe zu den Reduzierern gehen.

Partitioner steuert das Schlüsselsegment der mittleren Kartenausgaben. Der Schlüssel oder eine Teilmenge des Schlüssels wird verwendet, um die Partition durch eine Hash-Funktion abzuleiten.

Tatsächlich ist die Hadoop-Struktur ein Hash-basierter Partitionierer. Diese Hash-Funktion in Hadoop hilft beim Ableiten der Partition.

Die Partition arbeitet abhängig vom Schlüsselwert an der Mapper-Ausgabe. Derselbe Schlüsselwert geht in jedem Mapper in dieselbe Partition. Nach diesem Vorgang wird die endgültige Partition an einen Reducer gesendet.

Die Klasse einer Partition entscheidet, wohin das Paar aus Schlüssel und Wert geht. Die Partitionierungsphase fällt in die Mitte der Karte und reduziert Phasen.

Sehen wir uns an, warum ein Hadoop-Partitionierer benötigt wird.

Was ist die Notwendigkeit für einen Hadoop-Partitionierer?

In der Auftragsphase der MapReduce-Architektur wird ein Eingabedatensatz genommen und eine Liste von Schlüssel-Wert-Paaren erstellt. Diese Schlüssel-Wert-Paare werden in der Map-Phase gebildet. Dies geschah, wenn die Eingabedaten aufgeteilt wurden, die dann von jedem Task und jeder Map verarbeitet wurden, wodurch eine Liste von Schlüssel-Wert-Paaren erstellt wurde.

Die Zuordnungspartition erfolgt jedoch direkt vor der Reduzierungsphase, basierend auf Schlüssel und Wert. Auf diese Weise werden alle Schlüssel mit denselben Werten zusammengefasst und gehen an denselben Reducer. Somit ist auch die Verteilung des Ausgangs vom Kennfeld auf den Reduzierer sichergestellt.

Die Hadoop MapReduce-Partitionierung ermöglicht eine gleichmäßige Verteilung der Mapper-Ausgabe über den Reducer, indem sichergestellt wird, dass der richtige Schlüssel zum richtigen Reducer geht.

Lesen Sie : Hadoop-Entwicklergehalt in Indien

Syntax des Hash-Partitionierers in Hadoop

Hier ist die Standard-Syntax eines Hash-Partitionierers in Hadoop.

public int getPartition(K-Schlüssel, V-Wert

int numReduceTasks)

{

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

}

Implementierung von Hadoop Partitioner

Um ein Beispiel für die Verwendung von Hadoop Partitioner in praktischen Anwendungen zu sehen, sehen wir uns die folgende Tabelle an, die Daten für die Bewohner eines Blocks in einem Gebäude enthält.

Wohnungsnummer Name Geschlecht Familienmitglieder Stromrechnung
1101 Manisch Weiblich 3 1500
1102 Deepak Männlich 4 2000
1103 Sanjay Männlich 3 1100
1104 Nidhi Weiblich 2 900
1105 Prateek Männlich 1 650
1106 Göpal Männlich 4 1800
1107 Samikscha Weiblich 2 1300

Lassen Sie uns nun ein Programm schreiben, um die höchste Stromrechnung nach Geschlecht in verschiedenen Familienmitgliedern zu finden – 2 bis 3 und unter 4.

Die angegebenen Daten werden als input.txt im Verzeichnis „/home/Hadoop/HadoopPartitioner“ gespeichert.

Der Schlüssel folgt einem Muster – Sonderschlüssel + Dateiname + Zeilennummer. Zum Beispiel,

Taste = Eingabe@1

Dafür wäre Wert

Wert = 1101 \t Manisha \t Weiblich \t 3 \t 1500

So würde die Operation ablaufen:

  • Wert lesen
  • Verwenden Sie die Split-Funktion, um die Geschlechter zu trennen, und speichern Sie sie in einer String-Variablen

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

String Geschlecht = str[2];

  • Senden Sie nun Geschlechtsinformationen und zeichnen Sie den Datenwert als Ley- und Wertepaar an die Partitionsaufgabe auf

context.write (neuer Text (Geschlecht), neuer Text (Wert));

  • Wiederholen Sie dies für alle Datensätze

Als Ausgabe erhalten Sie die sortierten Geschlechtsdaten und den Datenwert als Schlüssel-Wert-Paare.

So würde die Partitionierungsaufgabe ablaufen.

Zuerst nimmt der Partitionierer die an ihn gesendeten Schlüssel- und Wertpaare als Eingabe. Jetzt werden die Daten in verschiedene Segmente unterteilt.

Eingang

Schlüssel = Geschlechtsfeldwert

Wert = Rekordwert dieses Geschlechts

So wird der Prozess ablaufen.

  • Familienmitgliedwert aus dem Schlüsselwertpaar lesen

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

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

  • Überprüfen Sie den Wert der Familienmitglieder mit den folgenden Bedingungen
  • Familienmitglieder von 2 bis 3
  • Familienmitglieder unter 4

if(Familienmitglieder<4)

{

0 zurückgeben;

}

sonst if(Familienmitglieder>=2 && Familienmitglieder<=3)

{

1 % zurückgeben numReduceTasks;

}

anders

{

2 % zurückgeben numReduceTasks;

}

Ausgabe

Die Daten von Schlüssel-Wert-Paaren werden in die drei angegebenen Sammlungen segmentiert.

Lernen Sie auch: Die besten Hadoop-Tools, die Sie kennen sollten

Schlechte Partitionierung und Überwindung

Nehmen wir an, Sie können vorhersagen, dass einer der Schlüssel in Ihren Eingabedaten häufiger als jeder andere Schlüssel auftaucht. Daher müssen Sie möglicherweise Ihren gesamten Schlüssel (eine große Anzahl) an eine Partition senden und anschließend die verbleibenden Schlüssel über ihren hashCode () auf alle anderen Partitionen verteilen.

Jetzt haben Sie also zwei Mechanismen zum Senden von Informationen an Partitionen:

  1. Zuerst wird der Schlüssel, der häufiger angezeigt wird, an eine Partition gesendet
  2. Zweitens werden alle verbleibenden Schlüssel gemäß ihrem hashCode() an die Partitionen gesendet.

Nehmen wir nun an, Ihre hashCode()-Technik verteilt die anderen Schlüssel nicht angemessen über die Partitionen. Die Informationen werden also nicht gleichermaßen in Partitionen und Reduzierern weitergegeben. Dies liegt daran, dass jede Partition proportional zu einem Reduzierer ist.

Bestimmte Reduzierer haben also größere Datenmengen als andere Reduzierer. Daher müssen die verbleibenden Reduzierer aufgrund der vorliegenden Last auf einen Reduzierer (einen mit benutzerdefinierten Schlüsseln) warten.

In diesem Fall sollten Sie einer Methode folgen, die die Daten über verschiedene Reduzierer verteilt. Erfahren Sie mehr über Hadoop mit unserem ultimativen Hadoop-Tutorial.

Fazit

Wir hoffen, dass dieser Leitfaden zu Hadoop-Partitionierern für Sie hilfreich war. Wenden Sie sich für weitere Informationen zu diesem Thema an die Experten von upGrad, und wir helfen Ihnen dabei.

Wenn Sie mehr über Big Data erfahren möchten, schauen Sie sich unser PG Diploma in Software Development Specialization in Big Data-Programm an, das für Berufstätige konzipiert ist und mehr als 7 Fallstudien und Projekte bietet, 14 Programmiersprachen und Tools abdeckt und praktische praktische Übungen enthält Workshops, mehr als 400 Stunden gründliches Lernen und Unterstützung bei der Stellenvermittlung bei Top-Unternehmen.

Lernen Sie Softwareentwicklungskurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Meistern Sie die Technologie der Zukunft – Big Data

Advanced Certificate Program in Big Data vom IIIT Bangalore