Hadoop Partitioner: Aflați despre introducere, sintaxă, implementare

Publicat: 2020-05-14

Obiectivul fundamental al acestui tutorial Hadoop Partitioner este de a vă oferi o definiție punct cu punct a fiecărei părți care este utilizată în Hadoop. În această postare, vom acoperi semnificația Hadoop Partitioner, necesitatea unui Partitioner în Hadoop și un caz slab de partiționare Hadoop.

Să înțelegem ce este Hadoop Partitioner.

Cuprins

Ce este Partitioner în Hadoop?

Un partitioner permite diseminarea modului în care ieșirile trec de la stadiul de hartă la reductoare.

Partitioner controlează segmentul cheie al ieșirilor hărții din mijloc. Cheia sau un subset al cheii este utilizat pentru a deduce partiția printr-o funcție hash.

De fapt, structura Hadoop este un partitioner bazat pe hash. Această funcție hash în Hadoop ajută la derivarea partiției.

Partiția funcționează pe ieșirea mapper în funcție de valoarea cheii. Aceeași valoare cheie intră în aceeași partiție în cadrul fiecărui mapper. După acest proces, partiția finală este trimisă la un reductor.

Clasa unei partiții decide unde va merge perechea cheie și valoare. Faza de partiționare se încadrează în mijlocul hărții și reduce fazele.

Să vedem de ce este nevoie de un Hadoop Partitioner.

De ce este nevoie de un partiționar Hadoop?

Este preluat un set de date de intrare și o listă de perechi cheie și valoare este produsă în faza lucrării de arhitectură MapReduce. Aceste perechi cheie și valoare sunt formate în faza hărții. Acest lucru s-a întâmplat atunci când datele de intrare sunt împărțite, care sunt apoi procesate de fiecare sarcină și hartă, producând o listă de perechi cheie și valoare.

Cu toate acestea, partiția map out are loc chiar înainte de faza de reducere, bazată pe cheie și valoare. În acest fel, toate cheile cu aceleași valori sunt grupate împreună și merg la același reductor. Prin urmare, chiar și distribuția ieșirii de pe hartă pe reductor este asigurată.

Partiționarea Hadoop MapReduce permite o distribuție uniformă a ieșirii mapperului peste reductor, asigurându-se că cheia potrivită merge la reductorul potrivit.

Citiți : Salariu pentru dezvoltatori Hadoop în India

Sintaxa Hash Partitioner în Hadoop

Iată sintaxa implicită a unui partitioner hash în Hadoop.

public int getPartition (cheie K, valoare V

int numReduceTasks)

{

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

}

Implementarea Hadoop Partitioner

Pentru a vedea un exemplu de utilizare a Hadoop Partitioner în aplicații practice, să ne uităm la tabelul de mai jos care conține date pentru rezidenții dintr-un bloc dintr-o clădire.

Număr plat Nume Gen Membrii familiei Factura de energie electrică
1101 Manisha Femeie 3 1500
1102 Deepak Masculin 4 2000
1103 Sanjay Masculin 3 1100
1104 Nidhi Femeie 2 900
1105 Prateek Masculin 1 650
1106 Gopal Masculin 4 1800
1107 Samiksha Femeie 2 1300

Acum să scriem un program pentru a găsi cea mai mare factură de energie electrică în funcție de sex în diferite grupuri de membri ai familiei – 2 până la 3 și sub 4.

Datele date sunt salvate ca input.txt în directorul „/home/Hadoop/HadoopPartitioner”.

Tasta urmează un model – cheie specială + nume fișier + număr de linie. De exemplu,

tasta = input@1

Pentru aceasta, valoarea ar fi

valoare = 1101 \t Manisha \t Femeie \t 3 \t 1500

Iată cum ar decurge operația:

  • Citiți valoarea
  • Utilizați funcția de împărțire pentru a separa genurile și pentru a le stoca într-o variabilă șir

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

Gen șir = str[2];

  • Acum trimiteți informații despre sex și înregistrați valoarea datelor ca pereche ley și valoare la sarcina de partiție

context.write(text nou (gen), text nou (valoare));

  • Repetați pentru toate înregistrările

Ca rezultat, veți obține datele sortate de gen și valoarea datelor ca perechi cheie și valoare.

Iată cum ar decurge sarcina de partiționare.

În primul rând, partiționerul va prelua perechile cheie și valoare trimise către acesta ca intrare. Acum, va împărți datele în diferite segmente.

Intrare

cheie = valoarea câmpului de gen

valoare = valoarea record a genului respectiv

Iată cum va urma procesul.

  • Citiți valoarea unui membru al familiei din perechea valori-cheie

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

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

  • Verificați valoarea membrilor familiei cu următoarele condiții
  • Membrii familiei de la 2 la 3
  • Membrii familiei mai mici de 4

dacă(membrii familiei<4)

{

returnează 0;

}

else if(membrii familiei>=2 și membrii familiei<=3)

{

returnează 1 % numReduceTasks;

}

altfel

{

returnează 2 % numReduceTasks;

}

Ieșire

Datele perechilor cheie și valoare vor fi segmentate în cele trei colecții date.

Aflați și: Cele mai bune instrumente Hadoop despre care ar trebui să știți

Partiționare slabă și depășire

Să presupunem că puteți prezice că una dintre cheile din datele dvs. de intrare va apărea mai mult decât orice altă cheie. Deci, s-ar putea să fie nevoie să trimiteți toată cheia (un număr mare) la o partiție și apoi să distribuiți cheile rămase peste toate celelalte partiții prin hashCode().

Deci, acum aveți două mecanisme de trimitere a informațiilor către partiții:

  1. În primul rând, cheia care afișează mai multe va fi trimisă la o partiție
  2. În al doilea rând, toate cheile rămase vor fi trimise către partiții conform hashCode().

Acum, să presupunem că tehnica ta hashCode() nu se dovedește a distribui în mod corespunzător celelalte chei peste partiții. Deci, informațiile nu sunt distribuite în mod egal în partiții și reductoare. Acest lucru se datorează faptului că fiecare partiție este proporțională cu un reductor.

Deci, anumite reductoare vor avea cantități mai mari de date decât alte reductoare. Prin urmare, reductoarele rămase vor trebui să aștepte un reductor (unul cu chei definite de utilizator) din cauza sarcinii la îndemână.

În acest caz, ar trebui să urmați o metodologie care să partajeze datele între diferiți reductori. Aflați mai multe despre Hadoop cu ajutorul tutorialului nostru suprem Hadoop.

Concluzie

Sperăm că acest ghid despre Hadoop Partitioners v-a fost de ajutor. Pentru mai multe informații despre acest subiect, luați legătura cu experții de la upGrad și vă vom ajuta să navigați.

Dacă sunteți interesat să aflați mai multe despre Big Data, consultați programul nostru PG Diploma în Dezvoltare Software Specializare în Big Data, care este conceput pentru profesioniști care lucrează și oferă peste 7 studii de caz și proiecte, acoperă 14 limbaje și instrumente de programare, practică practică. ateliere de lucru, peste 400 de ore de învățare riguroasă și asistență pentru plasarea unui loc de muncă cu firme de top.

Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigați programe Executive PG, programe avansate de certificat sau programe de master pentru a vă accelera cariera.

Stăpânește Tehnologia Viitorului - Big Data

Program de certificat avansat în Big Data de la IIIT Bangalore