Hva er Delta i Mapreduce?
Mapreduce Join- operasjon brukes til å kombinere to store datasett. Imidlertid innebærer denne prosessen å skrive mye kode for å utføre selve deltaoperasjonen. Å bli med i to datasett begynner med å sammenligne størrelsen på hvert datasett. Hvis ett datasett er mindre sammenlignet med det andre datasettet, distribueres mindre datasett til hver datanode i klyngen.
Når en sammenkobling i MapReduce distribueres, bruker enten Mapper eller Reducer det mindre datasettet til å utføre et oppslag for samsvarende poster fra det store datasettet, og deretter kombinere disse postene for å danne utgangsposter.
I denne veiledningen vil du lære-
- Hva er en Delta i MapReduce?
- Typer av Bli med
- Hvordan bli med i to datasett: MapReduce-eksempel
- Hva er Counter i MapReduce?
- Typer MapReduce Counters
- Counter Eksempel
Typer av Bli med
Avhengig av stedet hvor selve sammenføyningen utføres, blir deltakelser i Hadoop klassifisert i -
1. Kortsidesammenføyning - Når sammenføyningen utføres av kartleggeren, kalles den som kortsidesammenføyning. I denne typen utføres sammenføyningen før data faktisk forbrukes av kartfunksjonen. Det er obligatorisk at inndataene til hvert kart er i form av en partisjon og er i sortert rekkefølge. Det må også være like mange partisjoner, og det må sorteres etter sammenkoblingsnøkkelen.
2. Redusjonssidesammenføyning - Når sammenføyningen utføres av reduksjonsanordningen, kalles den som sammenføyning med redusert side. Det er ingen nødvendighet i denne sammenføyningen å ha et datasett i en strukturert form (eller partisjonert).
Her sender kartsidebehandling sammenføyningsnøkkel og tilsvarende tupler i begge tabellene. Som en effekt av denne behandlingen faller alle tuplene med den samme sammenføyningsnøkkelen i den samme reduseringsenheten som deretter blir sammen med postene med den samme foreningsnøkkelen.
En samlet prosessflyt av sammenføyninger i Hadoop er avbildet i diagrammet nedenfor.

Hvordan bli med i to datasett: MapReduce-eksempel
Det er to datasett i to forskjellige filer (vist nedenfor). Key Dept_ID er vanlig i begge filene. Målet er å bruke MapReduce Join for å kombinere disse filene


Inngang: Inndatasettet er en txt-fil, DeptName.txt & DepStrength.txt
Last ned inndatafiler herfra
Forsikre deg om at du har Hadoop installert. Før du begynner med MapReduce Join-eksempelets faktiske prosess, bytter bruker til 'hduser' (id som brukes mens Hadoop-konfigurasjon, du kan bytte til bruker-ID som ble brukt under Hadoop-konfigurasjonen).
su - hduser_
Trinn 1) Kopier zip-filen til ønsket sted
Trinn 2) Pakk ut zip-filen
sudo tar -xvf MapReduceJoin.tar.gz
Trinn 3) Gå til katalogen MapReduceJoin /
cd MapReduceJoin/
Trinn 4) Start Hadoop
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
Trinn 5) DeptStrength.txt og DeptName.txt er inndatafilene som brukes til dette MapReduce Join-eksempelprogrammet.
Disse filene må kopieres til HDFS ved hjelp av kommandoen nedenfor
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /
Trinn 6) Kjør programmet ved å bruke kommandoen nedenfor-
$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin
Trinn 7) Etter kjøring lagres utdatafilen (kalt 'part-00000') i katalogen / output_mapreducejoin på HDFS
Resultatene kan sees ved hjelp av kommandolinjegrensesnittet
$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000
Resultatene kan også sees via et webgrensesnitt som-
Velg nå "Bla gjennom filsystemet" og naviger opp til / output_mapreducejoin
Åpne del-r-00000
Resultatene vises
MERKNAD: Vær oppmerksom på at før du kjører dette programmet for neste gang, må du slette utdatakatalogen / output_mapreducejoin
$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin
Alternativt er å bruke et annet navn for utdatakatalogen.
Hva er Counter i MapReduce?
En teller i MapReduce er en mekanisme som brukes til å samle inn og måle statistisk informasjon om MapReduce-jobber og hendelser. Teller holder oversikt over ulike jobbstatistikker i MapReduce, like antall operasjoner som har skjedd og fremdriften av operasjonen. Teller brukes til diagnostisering av problemer i MapReduce.
Hadoop Counters ligner på å sette en loggmelding i koden for et kart eller redusere. Denne informasjonen kan være nyttig for diagnostisering av et problem i MapReduce jobbbehandling.
Vanligvis er disse tellerne i Hadoop definert i et program (kart eller reduser) og økes under utførelse når en bestemt hendelse eller tilstand (spesifikk for den telleren) oppstår. En veldig god anvendelse av Hadoop-tellere er å spore gyldige og ugyldige poster fra et inndatasett.
Typer MapReduce Counters
Det er i utgangspunktet to typer MapReduce Counters
- Hadoop-innebygde tellere: Det er noen innebygde Hadoop-tellere som finnes per jobb. Nedenfor er innebygde motgrupper-
- MapReduce Task Counters - Samler oppgavespesifikk informasjon (f.eks. Antall inngangsposter) i løpet av utføringstiden.
- FileSystem Counters - Samler informasjon som antall byte som er lest eller skrevet av en oppgave
- FileInputFormat Counters - Samler informasjon om et antall byte som er lest gjennom FileInputFormat
- FileOutputFormat Counters - Samler informasjon om et antall byte skrevet gjennom FileOutputFormat
- Jobbtellere - Disse tellerne brukes av JobTracker. Statistikk samlet av dem inkluderer f.eks. Antall oppgaver som er lansert for en jobb.
- Brukerdefinerte tellere
I tillegg til innebygde tellere, kan en bruker definere sine egne tellere ved hjelp av lignende funksjoner som tilbys av programmeringsspråk. I Java brukes for eksempel 'enum' til å definere brukerdefinerte tellere.
Counter Eksempel
Et eksempel MapClass med tellere for å telle antall manglende og ugyldige verdier. Inndatafil som brukes i denne veiledningen Inndatasettet vårt 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"));}}}
Ovenfor viser kodebiten et eksempel på implementering av tellere i Hadoop Map Reduce.
Her er SalesCounters en teller definert ved hjelp av 'enum' . Den brukes til å telle MISKENDE og ugyldige inngangsposter.
I kodebiten, hvis 'country' -feltet har null lengde, mangler verdien og dermed tilsvarende teller SalesCounters.MISSING økes.
Deretter, hvis 'salg' -feltet begynner med et ", betraktes posten som ugyldig. Dette indikeres av økende teller SalesCounters.INVALID.