Hadoop MapReduce Deltag & Tæller med eksempel

Indholdsfortegnelse:

Anonim

Hvad er deltagelse i Mapreduce?

Mapreduce Join- operation bruges til at kombinere to store datasæt. Denne proces indebærer imidlertid at skrive masser af kode for at udføre den egentlige tilslutningsoperation. Deltagelse i to datasæt begynder med at sammenligne størrelsen på hvert datasæt. Hvis et datasæt er mindre sammenlignet med det andet datasæt, distribueres mindre datasæt til hver dataknude i klyngen.

Når en sammenkædning i MapReduce er distribueret, bruger enten Mapper eller Reducer det mindre datasæt til at søge efter matchende poster fra det store datasæt og derefter kombinere disse poster for at danne outputregistreringer.

I denne vejledning lærer du-

  • Hvad er en deltagelse i MapReduce?
  • Typer af deltagelse
  • Sådan deltager du i to datasæt: MapReduce-eksempel
  • Hvad er Counter i MapReduce?
  • Typer af MapReduce-tællere
  • Tællereksempel

Typer af deltagelse

Afhængigt af det sted, hvor den aktuelle sammenføjning udføres, klassificeres sammenføjninger i Hadoop i-

1. Kortsidesammenføjning - Når sammenføjningen udføres af kortlæggeren kaldes den som kortsidesammenføjning. I denne type udføres sammenføjningen, før data faktisk forbruges af kortfunktionen. Det er obligatorisk, at input til hvert kort er i form af en partition og er i sorteret rækkefølge. Der skal også være lige mange partitioner, og det skal sorteres efter join-nøglen.

2. Reduktionssidesamling - Når sammenføjningen udføres af reduktionsanordningen kaldes det som sammenføjning med reduceringssiden. Det er ikke nødvendigt i denne sammenføjning at have et datasæt i en struktureret form (eller partitioneret).

Her udsender bearbejdning af kortsiden behandlingstast og tilsvarende tupler i begge tabeller. Som en effekt af denne behandling falder alle tuplerne med den samme sammenføjningsnøgle i den samme reducer, som derefter forbinder posterne med den samme sammenføjningsnøgle.

En samlet procesflow af sammenføjninger i Hadoop er vist i nedenstående diagram.

Typer af sammenføjninger i Hadoop MapReduce

Sådan deltager du i to datasæt: MapReduce-eksempel

Der er to datasæt i to forskellige filer (vist nedenfor). Nøglen Dept_ID er almindelig i begge filer. Målet er at bruge MapReduce Join til at kombinere disse filer

Fil 1
Fil 2

Input: Inddatasættet er en txt-fil, DeptName.txt & DepStrength.txt

Download inputfiler herfra

Sørg for, at du har Hadoop installeret. Inden du starter med MapReduce Join-eksemplet på den aktuelle proces, skal du skifte bruger til 'hduser' (id brugt under Hadoop-konfiguration, du kan skifte til den bruger-id, der blev brugt under din Hadoop-konfiguration).

su - hduser_

Trin 1) Kopier zip-filen til det sted, du vælger

Trin 2) Udpak zip-filen

sudo tar -xvf MapReduceJoin.tar.gz

Trin 3) Gå til biblioteket MapReduceJoin /

cd MapReduceJoin/

Trin 4) Start Hadoop

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

Trin 5) DeptStrength.txt og DeptName.txt er de inputfiler, der bruges til dette eksempel på MapReduce Join-programmet.

Disse filer skal kopieres til HDFS ved hjælp af nedenstående kommando-

$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /

Trin 6) Kør programmet ved hjælp af kommandoen nedenfor -

$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin

Trin 7) Efter udførelse gemmes outputfil (med navnet 'part-00000') i mappen / output_mapreducejoin på HDFS

Resultater kan ses ved hjælp af kommandolinjegrænsefladen

$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000

Resultater kan også ses via en webgrænseflade som-

Vælg nu 'Gennemse filsystemet' og naviger op til / output_mapreducejoin

Åbn del-r-00000

Resultaterne vises

BEMÆRK: Vær opmærksom på at inden du kører dette program til næste gang, skal du slette outputkatalog / output_mapreducejoin

$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin

Alternativt er at bruge et andet navn til outputkataloget.

Hvad er Counter i MapReduce?

En tæller i MapReduce er en mekanisme, der bruges til at indsamle og måle statistiske oplysninger om MapReduce-job og begivenheder. Tællere holder styr på forskellige jobstatistikker i MapReduce, ligesom antallet af operationer er opstået og operationens status. Tællere bruges til diagnosticering af problemer i MapReduce.

Hadoop-tællere ligner at lægge en logbesked i koden til et kort eller reducere. Disse oplysninger kan være nyttige til diagnose af et problem i MapReduce jobbehandling.

Disse tællere i Hadoop er typisk defineret i et program (kortlæg eller reducer) og øges under udførelse, når en bestemt begivenhed eller tilstand (specifik for denne tæller) opstår. En meget god anvendelse af Hadoop-tællere er at spore gyldige og ugyldige poster fra et inputdatasæt.

Typer af MapReduce-tællere

Der er grundlæggende to typer MapReduce-tællere

    1. Hadoop-indbyggede tællere: Der er nogle indbyggede Hadoop-tællere, der findes pr. Job. Nedenfor er indbyggede tællergrupper-
      • MapReduce Task Counters - Indsamler opgavespecifik information (f.eks. Antal inputposter) i løbet af dens udførelsestid.
      • FileSystem Counters - Indsamler oplysninger som antallet af bytes, der er læst eller skrevet af en opgave
      • FileInputFormat Counters - Indsamler oplysninger om et antal bytes, der læses gennem FileInputFormat
      • FileOutputFormat Counters - Indsamler oplysninger om et antal bytes skrevet gennem FileOutputFormat
      • Jobtællere - Disse tællere bruges af JobTracker. Statistik indsamlet af dem inkluderer f.eks. Antallet af opgaver, der er lanceret for et job.
    2. Brugerdefinerede tællere

Ud over indbyggede tællere kan en bruger definere sine egne tællere ved hjælp af lignende funktioner leveret af programmeringssprog. For eksempel bruges i Java 'enum' til at definere brugerdefinerede tællere.

Tællereksempel

Et eksempel på MapClass med tællere til at tælle antallet af manglende og ugyldige værdier. Input-datafil, der bruges i denne vejledning Vores input-datasæt er en CSV-fil, SalesJan2009.csv

public static class MapClassextends MapReduceBaseimplements Mapper{static enum SalesCounters { MISSING, INVALID };public void map ( LongWritable key, Text value,OutputCollector output,Reporter reporter) throws IOException{//Input string is split using ',' and stored in 'fields' arrayString fields[] = value.toString().split(",", -20);//Value at 4th index is country. It is stored in 'country' variableString country = fields[4];//Value at 8th index is sales data. It is stored in 'sales' variableString sales = fields[8];if (country.length() == 0) {reporter.incrCounter(SalesCounters.MISSING, 1);} else if (sales.startsWith("\"")) {reporter.incrCounter(SalesCounters.INVALID, 1);} else {output.collect(new Text(country), new Text(sales + ",1"));}}}

Ovenstående kodestykke viser et eksempel på implementering af tællere i Hadoop Map Reduce.

Her er SalesCounters en tæller defineret ved hjælp af 'enum' . Det bruges til at tælle MISSING og INVALID input-poster.

I kodeuddraget, hvis 'land' -feltet har nul længde, mangler dets værdi og dermed tilsvarende tæller SalesCounters.MISSING øges.

Dernæst, hvis 'salg' -feltet begynder med et ", betragtes posten som ugyldig. Dette angives ved at øge tælleren SalesCounters.INVALID.