Partizionatore Hadoop: informazioni su introduzione, sintassi, implementazione

Pubblicato: 2020-05-14

L'obiettivo fondamentale di questo tutorial di Hadoop Partitioner è quello di fornire una definizione punto per punto di ogni parte utilizzata in Hadoop. In questo post, tratteremo il significato di Hadoop Partitioner, la necessità di un Partitioner in Hadoop e un brutto caso di partizionamento Hadoop.

Cerchiamo di capire cos'è Hadoop Partitioner.

Sommario

Che cos'è il partizionatore in Hadoop?

Un partizionatore consente di diffondere come le uscite passano dalla fase della mappa ai riduttori.

Il partizionatore controlla il segmento chiave degli output della mappa centrale. La chiave o un sottoinsieme della chiave viene utilizzata per dedurre la partizione tramite una funzione hash.

In effetti, la struttura Hadoop è un partizionatore basato su hash. Questa funzione hash in Hadoop aiuta a derivare la partizione.

La partizione funziona sull'output del mappatore a seconda del valore della chiave. Lo stesso valore chiave va nella stessa partizione all'interno di ogni mappatore. Dopo questo processo, la partizione finale viene inviata a un riduttore.

La classe di una partizione decide dove andrà la coppia di chiave e valore. La fase di partizionamento cade al centro della mappa e riduce le fasi.

Vediamo perché è necessario un partizionatore Hadoop.

Qual è la necessità di un partizionatore Hadoop?

Viene preso un set di dati di input e viene prodotto un elenco di coppie chiave e valore nella fase del lavoro dell'architettura MapReduce. Queste coppie chiave e valore si formano nella fase della mappa. Ciò si verifica quando i dati di input vengono suddivisi, che vengono quindi elaborati da ciascuna attività e mappa, producendo un elenco di coppie di chiavi e valori.

Tuttavia, la partizione di mappatura avviene subito prima della fase di riduzione, in base alla chiave e al valore. In questo modo, tutte le chiavi con gli stessi valori vengono raggruppate e vanno allo stesso riduttore. In questo modo viene assicurata anche la distribuzione dell'uscita dalla mappa sul riduttore.

Il partizionamento Hadoop MapReduce consente una distribuzione uniforme dell'output del mappatore sul riduttore assicurando che la chiave giusta vada al riduttore giusto.

Leggi : Stipendio per sviluppatori Hadoop in India

Sintassi di Hash Partitioner in Hadoop

Ecco la sintassi predefinita di un partizionatore hash in Hadoop.

public int getPartition(chiave K, valore V

int numReduceTasks)

{

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

}

Implementazione del partizionatore Hadoop

Per vedere un esempio dell'uso di Hadoop Partitioner in applicazioni pratiche, osserviamo la tabella seguente contenente i dati per i residenti in un blocco di un edificio.

Numero piatto Nome Genere Membri della famiglia Bolletta elettrica
1101 Maniscia Femmina 3 1500
1102 Deepak Maschio 4 2000
1103 Sanjay Maschio 3 1100
1104 Nidhi Femmina 2 900
1105 Pratek Maschio 1 650
1106 Gopal Maschio 4 1800
1107 Samiksha Femmina 2 1300

Ora scriviamo un programma per trovare la bolletta dell'elettricità più alta per sesso in diversi gruppi di membri della famiglia: da 2 a 3 e inferiore a 4.

I dati forniti vengono salvati come input.txt nella directory "/home/Hadoop/HadoopPartitioner".

La chiave segue uno schema: chiave speciale + nome file + numero di riga. Per esempio,

tasto = input@1

Per questo, il valore sarebbe

valore = 1101 \t Manisha \t Femmina \t 3 \t 1500

Ecco come andrebbe l'operazione:

  • Leggi il valore
  • Usa la funzione di divisione per separare i sessi e archiviarli in una variabile stringa

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

genere della stringa = str[2];

  • Ora invia le informazioni sul sesso e registra il valore dei dati come coppia di valori e ley all'attività di partizione

context.write(nuovo testo(genere), nuovo testo(valore));

  • Ripetere per tutti i record

Come output, otterrai i dati di genere ordinati e il valore dei dati come coppie chiave e valore.

Ecco come andrebbe l'attività di partizionamento.

Innanzitutto, il partizionatore prenderà come input le coppie chiave e valore inviategli. Ora, dividerà i dati in diversi segmenti.

Ingresso

chiave = valore campo sesso

valore = valore record di quel genere

Ecco come seguirà il processo.

  • Leggi il valore del membro della famiglia dalla coppia di valori chiave

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

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

  • Controlla il valore dei membri della famiglia con le seguenti condizioni
  • Familiari da 2 a 3 anni
  • Familiari inferiori a 4

se(familiari<4)

{

restituire 0;

}

else if(familiari>=2 && familiari<=3)

{

restituisce 1 % numReduceTasks;

}

altro

{

restituisce 2 % numReduceTasks;

}

Produzione

I dati delle coppie chiave e valore verranno segmentati nelle tre raccolte date.

Impara anche: i migliori strumenti Hadoop che dovresti conoscere

Scarso partizionamento e superamento

Supponiamo che tu possa prevedere che una delle chiavi nei tuoi dati di input verrà visualizzata più di qualsiasi altra chiave. Quindi, potresti dover inviare tutta la tua chiave (un numero enorme) a una partizione e, successivamente, distribuire le chiavi rimanenti su tutte le altre partizioni tramite il loro hashCode().

Quindi, ora hai due meccanismi per inviare informazioni alle partizioni:

  1. Innanzitutto, la chiave che mostra di più verrà inviata a una partizione
  2. In secondo luogo, tutte le chiavi rimanenti verranno inviate alle partizioni secondo il loro hashCode().

Ora, supponiamo che la tua tecnica hashCode() non si riveli una distribuzione appropriata delle altre chiavi sulle partizioni. Quindi, le informazioni non vengono equamente distribuite in partizioni e riduttori. Questo perché ogni partizione è proporzionale a un riduttore.

Quindi, alcuni riduttori avranno una quantità di dati maggiore rispetto ad altri riduttori. Pertanto, i restanti riduttori dovranno attendere un riduttore (uno con chiavi definite dall'utente) a causa del carico a portata di mano.

In questo caso, dovresti seguire una metodologia che condivida i dati tra diversi riduttori. Scopri di più su Hadoop con il nostro tutorial definitivo di Hadoop.

Conclusione

Ci auguriamo che questa guida sui partizionatori Hadoop ti sia stata utile. Per ulteriori informazioni su questo argomento, contatta gli esperti di upGrad e ti aiuteremo a navigare.

Se sei interessato a saperne di più sui Big Data, dai un'occhiata al nostro PG Diploma in Software Development Specialization nel programma Big Data, progettato per professionisti che lavorano e fornisce oltre 7 casi di studio e progetti, copre 14 linguaggi e strumenti di programmazione, pratiche pratiche workshop, oltre 400 ore di apprendimento rigoroso e assistenza all'inserimento lavorativo con le migliori aziende.

Impara i corsi di sviluppo software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Padroneggia la tecnologia del futuro - Big Data

Programma di certificazione avanzato in Big Data da IIIT Bangalore