Hadoop MapReduce Gå med & Räknare med exempel

Innehållsförteckning:

Anonim

Vad är Delta i Mapreduce?

Mapreduce Join- operation används för att kombinera två stora datamängder. Denna process innebär dock att man skriver mycket kod för att utföra den faktiska anslutningsoperationen. Att gå med i två datamängder börjar med att jämföra storleken på varje dataset. Om en dataset är mindre jämfört med den andra dataset, distribueras mindre dataset till varje datanod i klustret.

När en koppling i MapReduce har distribuerats använder antingen Mapper eller Reducer den mindre datasetet för att söka efter matchande poster från den stora datasetet och sedan kombinera dessa poster för att bilda utdata.

I den här handledningen lär du dig-

  • Vad är en Delta i MapReduce?
  • Typer av anslutning
  • Hur man går med i två datasatser: MapReduce Exempel
  • Vad är Counter i MapReduce?
  • Typer av MapReduce Counters
  • Räknarexempel

Typer av anslutning

Beroende på platsen där den faktiska föreningen utförs klassificeras föreningar i Hadoop i-

1. Sammanfogning på kartsidan - När sammanfogningen utförs av kartläggaren kallas den som koppling på kartsidan. I den här typen utförs kopplingen innan data faktiskt konsumeras av kartfunktionen. Det är obligatoriskt att inmatningen till varje karta är i form av en partition och är i sorterad ordning. Det måste också finnas lika många partitioner och det måste sorteras efter kopplingsnyckeln.

2. Reduce-side-fogning - När föreningen utförs av reduceraren kallas den för reduktionssidan-fogningen. Det finns ingen nödvändighet i denna anslutning att ha en dataset i en strukturerad form (eller partitionerad).

Här avger kartsidans bearbetning kopplingsnyckel och motsvarande tupler i båda tabellerna. Som en effekt av denna bearbetning faller alla tapparna med samma kopplingsnyckel i samma reducerare som sedan förenar posterna med samma kopplingsnyckel.

Ett övergripande processflöde av sammanfogningar i Hadoop visas i nedanstående diagram.

Typer av sammanfogningar i Hadoop MapReduce

Hur man går med i två datasatser: MapReduce Exempel

Det finns två datauppsättningar i två olika filer (visas nedan). Nyckeln Dept_ID är vanlig i båda filerna. Målet är att använda MapReduce Join för att kombinera dessa filer

Fil 1
Fil 2

Ingång: Ingångsdatauppsättningen är en txt-fil, DeptName.txt & DepStrength.txt

Ladda ner inmatningsfiler härifrån

Se till att du har Hadoop installerat. Innan du börjar med MapReduce Join-exempelprocessen, byt användare till 'hduser' (id som används under Hadoop-konfiguration, du kan växla till användar-ID som används under din Hadoop-konfiguration).

su - hduser_

Steg 1) Kopiera zip-filen till den plats du väljer

Steg 2) Packa upp zip-filen

sudo tar -xvf MapReduceJoin.tar.gz

Steg 3) Gå till katalogen MapReduceJoin /

cd MapReduceJoin/

Steg 4) Starta Hadoop

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

Steg 5) DeptStrength.txt och DeptName.txt är de inmatningsfiler som används för detta exempel på MapReduce Join.

Dessa filer måste kopieras till HDFS med kommandot nedan

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

Steg 6) Kör programmet med kommandot nedan-

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

Steg 7) Efter körning lagras utdatafilen (med namnet 'part-00000') i katalogen / output_mapreducejoin på HDFS

Resultaten kan ses med kommandoradsgränssnittet

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

Resultaten kan också ses via ett webbgränssnitt som-

Välj nu "Bläddra i filsystemet" och navigera upp till / output_mapreducejoin

Öppna del-r-00000

Resultaten visas

OBS: Observera att innan du kör programmet för nästa gång måste du radera utdatakatalogen / output_mapreducejoin

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

Alternativ är att använda ett annat namn för utdatakatalogen.

Vad är Counter i MapReduce?

En räknare i MapReduce är en mekanism som används för att samla in och mäta statistisk information om MapReduce-jobb och händelser. Räknare håller reda på olika jobbstatistik i MapReduce, lika många operationer som har skett och operationens framsteg. Räknare används för diagnos av problem i MapReduce.

Hadoop-räknare liknar att sätta ett loggmeddelande i koden för en karta eller reducera. Denna information kan vara användbar för diagnos av ett problem i MapReduce jobbbehandling.

Vanligtvis definieras dessa räknare i Hadoop i ett program (mappa eller reducera) och ökas under körning när en viss händelse eller tillstånd (specifikt för den räknaren) inträffar. En mycket bra tillämpning av Hadoop-räknare är att spåra giltiga och ogiltiga poster från en indataset.

Typer av MapReduce Counters

Det finns i princip två typer av MapReduce Counters

    1. Hadoop-inbyggda räknare: Det finns några inbyggda Hadoop-räknare som finns per jobb. Nedan finns inbyggda motgrupper-
      • MapReduce Task Counters - Samlar uppgiftspecifik information (t.ex. antal inmatningsposter) under dess exekveringstid.
      • FileSystem Counters - Samlar in information som antalet byte som läst eller skrivits av en uppgift
      • FileInputFormat Counters - Samlar in information om ett antal byte som läses genom FileInputFormat
      • FileOutputFormat Counters - Samlar information om ett antal byte skrivna genom FileOutputFormat
      • Jobbräknare - Dessa diskar används av JobTracker. Statistik som samlas in av dem inkluderar t.ex. antalet uppdrag som startas för ett jobb.
    2. Användardefinierade räknare

Förutom inbyggda räknare kan en användare definiera sina egna räknare med hjälp av liknande funktioner som tillhandahålls av programmeringsspråk. Till exempel används i Java 'enum' för att definiera användardefinierade räknare.

Räknarexempel

Ett exempel på MapClass med räknare för att räkna antalet saknade och ogiltiga värden. Ingångsdatafil som används i denna handledning Vår inmatningsdatauppsättning är 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"));}}}

Ovanstående kodavsnitt visar ett exempel på implementering av räknare i Hadoop Map Reduce.

Här är SalesCounters en räknare definierad med 'enum' . Den används för att räkna MISSING och INVALID input-poster.

I kodavsnittet, om fältet 'land' har noll längd, saknas dess värde och därmed motsvarande räknare SalesCounters.MISSING ökas.

Därefter, om fältet "försäljning" börjar med ett " betraktas posten som ogiltig. Detta indikeras av ökande räknare SalesCounters.INVALID.