Što je Pridruživanje u Mapreduceu?
Operacija Mapreduce Join koristi se za kombiniranje dva velika skupa podataka. Međutim, ovaj postupak uključuje pisanje puno koda za izvođenje stvarne operacije spajanja. Spajanje dvaju skupova podataka započinje usporedbom veličine svakog skupa podataka. Ako je jedan skup podataka manji u usporedbi s drugim skupom podataka, tada se manji skup podataka raspoređuje u svaki podatkovni čvor u klasteru.
Jednom kada se pridruži pridruživanje u MapReduceu, Mapper ili Reducer koristi manji skup podataka za obavljanje pretraživanja za podudaranje zapisa iz velikog skupa podataka, a zatim kombinira te zapise u izlazne zapise.
U ovom vodiču naučit ćete-
- Što je pridruživanje u MapReduceu?
- Vrste pridruživanja
- Kako spojiti dva skupa podataka: Primjer MapReduce
- Što je Counter u MapReduceu?
- Vrste brojača MapReduce
- Primjer brojača
Vrste pridruživanja
Ovisno o mjestu na kojem se izvodi stvarno spajanje, pridruživanja u Hadoopu klasificiraju se u
1. Pridruživanje na karti - Kada spajanje izvodi mapper, ono se naziva pridruživanje na strani karte. U ovom se tipu spajanje izvodi prije nego što podaci stvarno potroše funkciju karte. Obavezno je da ulaz za svaku kartu bude u obliku particije i da bude poredan. Također, mora postojati jednak broj particija i to mora biti sortirano po ključu za pridruživanje.
2. Spajanje na reduciranoj strani - Kada spajanje izvodi reduktor, naziva se spajanjem na reduciranoj strani. U ovom pridruživanju nije potrebno imati skup podataka u strukturiranom obliku (ili podijeljen).
Ovdje obrada karte na strani emitira ključ pridruživanja i odgovarajuće korpe obje tablice. Kao učinak ove obrade, sve korpice s istim ključem spajanja padaju u isti reduktor koji zatim spaja zapise istim ključem spajanja.
Cjelokupni tok procesa spajanja u Hadoopu prikazan je na donjem dijagramu.
![](https://cdn.css-code.org/2612424/hadoop_mapreduce_join_ampamp_counter_with_example.png.webp)
Kako spojiti dva skupa podataka: Primjer MapReduce
Postoje dva skupa podataka u dvije različite datoteke (prikazano dolje). Key Dept_ID uobičajen je u obje datoteke. Cilj je koristiti MapReduce Join za kombiniranje ovih datoteka
![](https://cdn.css-code.org/2612424/hadoop_mapreduce_join_ampamp_counter_with_example_2.png.webp)
![](https://cdn.css-code.org/2612424/hadoop_mapreduce_join_ampamp_counter_with_example_3.png.webp)
Ulaz: Skup ulaznih podataka je txt datoteka, DeptName.txt i DepStrength.txt
Preuzmite ulazne datoteke odavde
Provjerite je li instaliran Hadoop. Prije nego što započnete sa stvarnim postupkom primjera MapReduce Join, promijenite korisnika u 'hduser' (id koji se koristi za vrijeme konfiguracije Hadoop-a, možete se prebaciti na korisnički ID koji se koristio tijekom vaše konfiguracije Hadoop-a).
su - hduser_
Korak 1) Kopirajte zip datoteku na mjesto koje ste odabrali
Korak 2) Raspakirajte Zip datoteku
sudo tar -xvf MapReduceJoin.tar.gz
Korak 3) Idite u direktorij MapReduceJoin /
cd MapReduceJoin/
Korak 4) Pokrenite Hadoop
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
Korak 5) DeptStrength.txt i DeptName.txt su ulazne datoteke koje se koriste za ovaj primjer programa MapReduce Join.
Ovu datoteku treba kopirati u HDFS pomoću naredbe ispod -
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /
Korak 6) Pokrenite program pomoću naredbe ispod -
$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin
Korak 7) Nakon izvršenja, izlazna datoteka (nazvana 'part-00000') pohranit će se u direktorij / output_mapreducejoin na HDFS-u
Rezultati se mogu vidjeti pomoću sučelja naredbenog retka
$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000
Rezultati se također mogu vidjeti putem web sučelja kao-
Sada odaberite "Pregledaj datotečni sustav" i pomaknite se gore / output_mapreducejoin
Otvorite dio-r-00000
Rezultati su prikazani
NAPOMENA: Imajte na umu da ćete prije sljedećeg pokretanja ovog programa morati izbrisati izlazni direktorij / output_mapreducejoin
$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin
Alternativa je korištenje drugog naziva za izlazni direktorij.
Što je Counter u MapReduceu?
Brojač u MapReduce je mehanizam koristi za prikupljanje i mjerenje statističke podatke o MapReduce radnih mjesta i događaje. Brojači vode evidenciju različitih statistika poslova u MapReduceu kao i broj izvršenih operacija i napredak operacije. Brojači se koriste za dijagnozu problema u MapReduceu.
Brojači Hadoop slični su stavljanju poruke dnevnika u kod za kartu ili redukciju. Te bi informacije mogle biti korisne za dijagnozu problema u obradi posla MapReduce.
Ti su brojači u Hadoopu obično definirani u programu (mapiranje ili smanjenje) i povećavaju se tijekom izvršavanja kada se dogodi određeni događaj ili stanje (specifično za taj brojač). Vrlo dobra primjena brojača Hadoop je praćenje valjanih i nevaljanih zapisa iz ulaznog skupa podataka.
Vrste brojača MapReduce
U osnovi postoje 2 vrste brojača MapReduce
- Ugrađeni Hadoop brojači: Postoje neki ugrađeni Hadoop brojači koji postoje po poslu. Ispod su ugrađene brojačke grupe-
- Brojači zadataka MapReduce - prikuplja specifične podatke o zadatku (npr. Broj ulaznih zapisa) tijekom vremena izvršenja.
- Brojači datotečnog sustava - prikuplja podatke poput broja bajtova pročitanih ili napisanih od strane zadatka
- FileInputFormat brojači - prikuplja informacije o broju bajtova pročitanih kroz FileInputFormat
- FileOutputFormat brojači - prikuplja podatke o određenom broju bajtova zapisanih putem FileOutputFormat
- Brojači poslova - ove brojače koristi JobTracker. Statistike koje prikupljaju uključuju npr. Broj pokrenutih zadataka za posao.
- Korisnički definirani brojači
Pored ugrađenih brojača, korisnik može definirati vlastite brojače koristeći slične funkcionalnosti koje pružaju programski jezici. Na primjer, u Javi se 'enum' koristi za definiranje korisnički definiranih brojača.
Primjer brojača
Primjer MapClass s brojačima za brojanje broja nedostajućih i nevaljanih vrijednosti. Datoteka ulaznih podataka koja se koristi u ovom vodiču Naš skup ulaznih podataka je CSV datoteka, 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"));}}}
Iznad isječak koda prikazuje primjer implementacije brojača u Hadoop Map Reduce.
Ovdje je SalesCounters brojač definiran pomoću 'enum' . Koristi se za brojanje nedostajućih i nevaljanih ulaznih zapisa.
U isječku koda, ako polje 'zemlja' ima nultu duljinu, onda njegova vrijednost nedostaje i stoga se povećava brojač SalesCounters.MISSING .
Dalje, ako polje 'prodaja' započinje s ", tada se zapis smatra NEVREDNIM. To se označava povećanjem brojača SalesCounters.INVALID.