sql >> Database teknologi >  >> NoSQL >> HBase

Hadoop RecordReader Introduktion, arbejde og typer

I vores tidligere blog har vi studeret Hadoop Tællere i detaljer. Nu i denne tutorial skal vi diskutere RecordReader i Hadoop.

Her vil vi dække introduktionen til Hadoop RecordReader, der fungerer i RecordReader. Vi vil også diskutere typerne af RecordReader i MapReduce, størrelsen af ​​den enkelte Record i Hadoop MapReduce i denne MapReduce-vejledning.

Hvad er RecordReader i MapReduce?

En RecordReader konverterer den byte-orienterede visning af input til en record-orienteret visning for Mapper og Reducer opgaver til behandling.

For at forstå Hadoop RecordReader skal vi forstå MapReduce Dataflow. Lad os lære, hvordan dataflowet:

MapReduce er en simpel model for databehandling. Input og output til kortet og reducere-funktioner er nøgle-værdi-par . Følgende er den generelle form for kortet og reducere funktioner:

  • Kort: (K1, V1) → liste (K2, V2)
  • Reducer: (K2, liste (V2)) → liste (K3, V3)

Nu før behandlingen starter, skal den vide, hvilke data der skal behandles på. Så InputFormat klasse er med til at opnå dette. Denne klasse vælger filen fra HDFS  det er input til kortfunktionen. Den er også ansvarlig for at oprette input-splitterne.

Opdel dem også i poster. Det opdeler dataene i antallet af opdelinger (typisk 64/128 MB) i HDFS. Dette er kendt som InputSplit. InputSplit er den logiske repræsentation af data. I et MapReduce-job er eksekveringsantallet af kortopgaver lig med antallet af InputSplits.

Ved at kalde 'getSplit ()' klienten beregner fordelingen for jobbet. Derefter sendes det til ansøgningsmesteren. Den bruger deres lagerplaceringer til at planlægge kortopgaver, der behandler dem på klyngen.

Efter denne kortopgave overføres opdelingen til createRecordReader () metode. Derfra får den RecordReader til opdelingen. RecordReader genererer post (nøgleværdi-par). Derefter går den over til kortfunktionen.

Hadoop RecordReader i MapReduce jobudførelse bruger data inden for de grænser, der oprettes af inputsplit. Og så opretter den nøgleværdi-par til kortlæggeren. "Start" er byte-positionen i filen.

Ved starten begynder  Hadoop RecordReader at generere nøgle/værdi-par. "Afslutningen" er, hvor RecorReader stopper med at læse poster. I RecordReader indlæses dataene fra kilden.

Derefter konverteres dataene til nøgleværdi-par, der er egnede til læsning af kortlæggeren. Den kommunikerer med inputsplit, indtil fillæsningen ikke er fuldført.

Hvordan fungerer RecorReader i Hadoop?

Det er mere end iterator over posterne. Kortopgaven bruger én post til at generere nøgleværdi-par, som den overfører til kortfunktionen. Vi kan også se dette ved at bruge kortlæggerens kørselsfunktion nedenfor:

public void run(Context context ) throws IOException, InterruptedException{
setup(context);
while(context.nextKeyValue())
{
map(context.setCurrentKey(),context.getCurrentValue(),context)
}
cleanup(context);
}

Selvom det ikke er obligatorisk for RecordReader at forblive mellem grænserne skabt af inputsplit for at generere nøgleværdi-par, forbliver det normalt. Også tilpasset implementering kan endda læse flere data uden for inputsplit.

Derefter, efter at have kørt setup() , nextKeyValue() vil gentage om sammenhængen. Dette udfylder nøgle- og værdiobjekterne for kortlæggeren. Som kontekst henter framework nøgleværdi fra rekordlæser. Gå derefter til kortet() metode til at udføre sit arbejde.

Derfor input (nøgle-værdi) til kortfunktionsprocesserne i henhold til logikken nævnt i kortkoden. Når posten når til slutningen af ​​posten, vises nextKeyValue() metode returnerer falsk.

Typer af Hadoop RecordReader

InputFormat definerer  RecordReader-forekomsten i Hadoop. Som standard konverterer ReordReader data til nøgleværdipar ved at bruge TextInputFormat. TextInputFormat giver også 2 typer RecordReaders, som er som følger:

1. LineRecordReader

Det er standard RecordReader. TextInputFormat leverer denne RecordReader. Den behandler også hver linje i inputfilen som den nye værdi. Så er den tilknyttede nøgle byte offset. Den springer altid den første linje i opdelingen (eller en del af den), hvis det ikke er den første opdeling.

Den læser altid en linje efter grænsen for opdelingen til sidst (hvis data er tilgængelige, så det er ikke den sidste opdeling).

2. SequenceFileRecordReader

Denne Hadoop RecorReader læser data specificeret af overskriften på en sekvensfil.

Maksimal størrelse af singlen Record

Ved at bruge nedenstående parameter indstiller vi maksimal værdi.

conf.setInt("mapred.linerecordreader.maxlength", Integer.MAX_VALUE);

Konklusion

Som konklusion opretter Hadoop RecorReader input (nøgleværdi) til Mapper. Den bruger også TextInputFormat til at konvertere data til nøgleværdi-par.

Jeg håber, du har kunne lide denne blog, hvis du har spørgsmål relateret til Hadoop RecordReader, er du velkommen til at dele med os. Vi vil med glæde løse dem.


  1. Hvordan bruger man de dumpede data fra mongodump?

  2. Få besked om ændrede dokumenter i mongodb

  3. SignalR kan ikke oprette forbindelse til Azure Redis på SSL

  4. Redis:Race Condition og enkelt gevind