Hadoop MapReduce Bli & Counter med eksempel

Innholdsfortegnelse:

Anonim

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.

Typer av sammenføyninger i Hadoop MapReduce

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

Fil 1
Fil 2

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

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