Hadoop MapReduce Bli med og telle med eksempel

Hva er Bli med i Mapreduce?

Mapreduce Bli med operasjon brukes til รฅ kombinere to store datasett. Imidlertid innebรฆrer denne prosessen รฅ skrive mye kode for รฅ utfรธre selve join-operasjonen. ร… slรฅ sammen 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 sammenfรธyning i MapReduce er distribuert, bruker enten Mapper eller Reducer det mindre datasettet for รฅ utfรธre et oppslag for samsvarende poster fra det store datasettet og deretter kombinere disse postene for รฅ danne utdataposter.

Typer bli med

Avhengig av stedet der den faktiske sammenfรธyningen utfรธres, klassifiseres sammenfรธyninger i Hadoop i-

1. Sammenfรธyning pรฅ kartsiden โ€“ Nรฅr sammenfรธyningen utfรธres av kartleggeren, kalles den sammenfรธyning pรฅ kartsiden. I denne typen utfรธres sammenfรธyningen fรธr data faktisk forbrukes av kartfunksjonen. Det er obligatorisk at input til hvert kart er i form av en partisjon og er i sortert rekkefรธlge. Dessuten mรฅ det vรฆre like mange partisjoner og det mรฅ sorteres etter sammenfรธyningsnรธkkelen.

2. Reduser sammenfรธyning pรฅ siden โ€“ Nรฅr sammenfรธyningen utfรธres av reduksjonsanordningen, kalles det skjรธting pรฅ reduseringssiden. Det er ingen nรธdvendighet i denne sammenfรธyningen รฅ ha et datasett i en strukturert form (eller partisjonert).

Her avgir kartsidebehandlingen sammenfรธyningsnรธkkel og tilsvarende tupler av begge tabellene. Som en effekt av denne behandlingen, faller alle tuplene med samme sammenfรธyningsnรธkkel inn i den samme reduseringen som deretter kobler sammen postene med samme sammenfรธyningsnรธkkel.

En samlet prosessflyt av sammenfรธyninger i Hadoop er avbildet i diagrammet nedenfor.

Typer sammenfรธyninger i Hadoop MapReduce
Typer sammenfรธyninger i Hadoop MapReduce

Slik kobler du sammen to datasett: MapReduce Eksempel

Det er to sett med data i to forskjellige filer (vist nedenfor). Key Dept_ID er vanlig i begge filene. Mรฅlet er รฅ bruke MapReduce Join til รฅ kombinere disse filene

Eksempel pรฅ MapReduce
1 File
Eksempel pรฅ MapReduce
2 File

Inngang: Inndatasettet er en txt-fil, DeptName.txt og DepStrength.txt

Last ned inndatafiler herfra

Sรธrg for at du har Hadoop installert. Fรธr du starter med den faktiske prosessen med MapReduce Join-eksemplet, endre bruker til 'hduser' (id brukt mens Hadoop-konfigurasjonen, du kan bytte til bruker-ID-en som ble brukt under Hadoop-konfigurasjonen).

su - hduser_

Eksempel pรฅ MapReduce

Trinn 1) Kopier zip-filen til stedet du รธnsker

Eksempel pรฅ MapReduce

Trinn 2) Pakk ut zip-filen

sudo tar -xvf MapReduceJoin.tar.gz

Eksempel pรฅ MapReduce

Trinn 3) Gรฅ til katalogen MapReduceJoin/

cd MapReduceJoin/

Eksempel pรฅ MapReduce

Trinn 4) Start Hadoop

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

Eksempel pรฅ MapReduce

Trinn 5) DeptStrength.txt og DeptName.txt er inndatafilene som brukes for dette MapReduce Join-eksempelprogrammet.

Disse filene mรฅ kopieres til HDFS ved รฅ bruke kommandoen nedenfor

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

Eksempel pรฅ MapReduce

Trinn 6) Kjรธr programmet ved รฅ bruke kommandoen nedenfor-

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

Eksempel pรฅ MapReduce

Eksempel pรฅ MapReduce

Trinn 7) Etter kjรธring vil utdatafilen (kalt 'del-00000') lagres i katalogen /output_mapreducejoin pรฅ HDFS

Resultatene kan sees ved hjelp av kommandolinjegrensesnittet

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

Eksempel pรฅ MapReduce

Resultatene kan ogsรฅ sees via et nettgrensesnitt som-

Eksempel pรฅ MapReduce

Velg nรฅ "Bla gjennom filsystemet" og naviger opp til /output_mapreducejoin

Eksempel pรฅ MapReduce

Open del-r-00000

Eksempel pรฅ MapReduce

Resultatene vises

Eksempel pรฅ MapReduce

NOTAT: 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

Alternativet er รฅ bruke et annet navn for utdatakatalogen.

Hva er Counter i MapReduce?

A Teller i MapReduce er en mekanisme som brukes til รฅ samle inn og mรฅle statistisk informasjon om MapReduce-jobber og -hendelser. Tellere holder track av ulike jobbstatistikker i MapReduce, som antall operasjoner som har blitt utfรธrt og fremdriften til operasjonen. Tellere brukes til problemdiagnose i MapReduce.

Hadoop-tellere 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 (tilordnes eller reduseres) og รธkes under utfรธrelse nรฅr en bestemt hendelse eller betingelse (spesifikk for den telleren) oppstรฅr. En veldig god anvendelse av Hadoop-tellere er รฅ track gyldige og ugyldige poster fra et inputdatasett.

Typer MapReduce-tellere

Det er i utgangspunktet 2 typer MapReduce tellere

  1. Hadoop innebygde tellere:Det er noen innebygde Hadoop-tellere som eksisterer per jobb. Nedenfor er innebygde tellergrupper-
    • MapReduce Task Counters โ€“ Samler oppgavespesifikk informasjon (f.eks. antall inndataposter) i lรธpet av utfรธrelsestiden.
    • Filsystemtellere โ€“ Samler informasjon som antall byte lest eller skrevet av en oppgave
    • FileInputFormat-tellere โ€“ Samler informasjon om et antall byte lest gjennom FileInputFormat
    • FileOutputFormat-tellere โ€“ Samler informasjon om et antall byte skrevet gjennom FileOutputFormat
    • Jobbtellere โ€“ Disse tellerne brukes av JobTracker. Statistikk som samles inn av dem inkluderer f.eks. antall oppgaver som er startet for en jobb.
  2. Brukerdefinerte tellere

I tillegg til innebygde tellere, kan en bruker definere sine egne tellere ved รฅ bruke lignende funksjoner levert av programmerings sprรฅk. For eksempel i Java 'enum' brukes til รฅ definere brukerdefinerte tellere.

Eksempel pรฅ tellere

Et eksempel pรฅ MapClass med tellere for รฅ telle antall manglende og ugyldige verdier. Inndatafil som brukes i denne opplรฆringen Vรฅrt inndatadatasett er en CSV-fil, SalgJan2009.csv

public static class MapClass
            extends MapReduceBase
            implements Mapper<LongWritable, Text, Text, Text>
{
    static enum SalesCounters { MISSING, INVALID };
    public void map ( LongWritable key, Text value,
                 OutputCollector<Text, Text> output,
                 Reporter reporter) throws IOException
    {
        
        //Input string is split using ',' and stored in 'fields' array
        String fields[] = value.toString().split(",", -20);
        //Value at 4th index is country. It is stored in 'country' variable
        String country = fields[4];
        
        //Value at 8th index is sales data. It is stored in 'sales' variable
        String 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"));
        }
    }
}

Kodebiten ovenfor viser et eksempelimplementering av tellere i Hadoop Map Reduce.

Her Salgstellere er en teller definert ved hjelp av 'enum'. Det brukes til รฅ telle MANGLER og UGYLDIG legge inn poster.

I kodebiten, if 'land' feltet har null lengde, sรฅ mangler verdien og dermed tilsvarende teller Salgstellere.MANGLER er รธkt.

Neste, hvis "salg" feltet starter med a " da anses posten som Ugyldig. Dette indikeres med รธkende teller Salgetellere.Ugyldig.

Oppsummer dette innlegget med: