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.

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


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
- 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.
- 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.