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.

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


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