Hadoop MapReduce Pridružite se & Števec s primerom

Kazalo:

Anonim

Kaj je Pridružite se v Mapreduceu?

Operacija Mapreduce Join se uporablja za združevanje dveh velikih naborov podatkov. Vendar ta postopek vključuje pisanje veliko kode za izvedbo dejanske operacije združevanja. Združevanje dveh naborov podatkov se začne s primerjavo velikosti vsakega nabora podatkov. Če je en nabor podatkov manjši v primerjavi z drugim naborom podatkov, se manjši nabor podatkov razporedi v vsako podatkovno vozlišče v gruči.

Ko je združitev v MapReduce razdeljena, Mapper ali Reducer uporabi manjši nabor podatkov za iskanje iskalnih poizvedb iz velikega nabora podatkov in nato te zapise združi v izhodne zapise.

V tej vadnici boste izvedeli-

  • Kaj je pridružitev v MapReduce?
  • Vrste Pridruži se
  • Kako združiti dva nabora podatkov: primer MapReduce
  • Kaj je Counter v MapReduce?
  • Vrste števcev MapReduce
  • Primer števcev

Vrste Pridruži se

Pridružitve v Hadoopu so glede na kraj izvedbe dejanskega združevanja razvrščene v

1. Združevanje na strani zemljevida - ko združevanje izvede preslikav, se imenuje združitev na strani zemljevida. Pri tej vrsti se združevanje izvede, preden funkcija zemljevida dejansko porabi podatke. Obvezno je, da je vnos na vsako mapo v obliki particije in v razvrščenem vrstnem redu. Prav tako mora biti particij enako število in razvrščeno po ključu za združevanje.

2. Spajanje na strani zmanjšanja - ko spajanje izvede reduktor, se imenuje spoj na strani zmanjšanja. V tem združevanju ni treba imeti nabora podatkov v strukturirani obliki (ali razdeljen).

Tukaj obdelava zemljevidov oddaja ključ za združevanje in ustrezne sklope obeh tabel. Kot učinek te obdelave vsi nabori z istim ključem za združevanje padejo v isti reduktor, ki nato združi zapise z istim ključem za združevanje.

Splošni postopek združevanja v Hadoopu je prikazan na spodnjem diagramu.

Vrste pridružitev v Hadoop MapReduce

Kako združiti dva nabora podatkov: primer MapReduce

V dveh različnih datotekah sta dva nabora podatkov (prikazano spodaj). Key Dept_ID je pogost v obeh datotekah. Cilj je uporabiti MapReduce Join za združitev teh datotek

Datoteka 1
Datoteka 2

Vhod: Nabor vhodnih podatkov je datoteka txt, DeptName.txt & DepStrength.txt

Prenesite vhodne datoteke od tu

Prepričajte se, da imate nameščen Hadoop. Preden začnete z dejanskim postopkom primera MapReduce Join, spremenite uporabnika v 'hduser' (id, ki se uporablja med konfiguracijo Hadoop, lahko preklopite na uporabniški ID, uporabljen med konfiguracijo Hadoop).

su - hduser_

Korak 1) Kopirajte datoteko zip na izbrano mesto

Korak 2) Stisnite datoteko Zip

sudo tar -xvf MapReduceJoin.tar.gz

Korak 3) Pojdite v imenik MapReduceJoin /

cd MapReduceJoin/

Korak 4) Zaženite Hadoop

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

5. korak) DeptStrength.txt in DeptName.txt sta vhodni datoteki, uporabljeni za ta primer programa MapReduce Join.

Te datoteke je treba kopirati v HDFS z uporabo spodnjega ukaza-

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

6. korak) Zaženite program s spodnjim ukazom -

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

Korak 7) Po izvedbi se izhodna datoteka (imenovana "part-00000") shrani v imenik / output_mapreducejoin na HDFS

Rezultate si lahko ogledate z vmesnikom ukazne vrstice

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

Rezultati so vidni tudi prek spletnega vmesnika

Zdaj izberite 'Brskaj po datotečnem sistemu' in se pomaknite do / output_mapreducejoin

Odprite del-r-00000

Prikazani so rezultati

OPOMBA: Pred naslednjim zagonom tega programa boste morali izbrisati izhodni imenik / output_mapreducejoin

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

Druga možnost je uporaba drugega imena za izhodni imenik.

Kaj je Counter v MapReduce?

Counter v MapReduce je mehanizem, ki se uporablja za zbiranje in merjenje statistične podatke o MapReduce delovnih mest in dogodkih. Števci v MapReducu vodijo evidenco različnih statistik o delovnih mestih, vključno s številom izvedenih operacij in napredkom operacije. Števci se uporabljajo za diagnozo težav v MapReduce.

Števci Hadoop so podobni vstavljanju dnevnika v kodo za zemljevid ali zmanjšanje. Te informacije so lahko koristne za diagnozo težave pri obdelavi opravil MapReduce.

Običajno so ti števci v Hadoopu definirani v programu (preslikaj ali zmanjšaj) in se med izvajanjem povečajo, ko pride do določenega dogodka ali stanja (specifičnega za ta števec). Zelo dobra uporaba števcev Hadoop je sledenje veljavnim in neveljavnim zapisom iz vhodnega nabora podatkov.

Vrste števcev MapReduce

V bistvu obstajata 2 vrsti števcev MapReduce

    1. Vgrajeni števci Hadoop: Obstaja nekaj vgrajenih števcev Hadoop, ki obstajajo na posamezno delovno mesto. Spodaj so vgrajene števčne skupine-
      • MapReduce števci opravil - med izvajanjem zbira informacije, specifične za nalogo (npr. Število vhodnih zapisov).
      • Števci datotek FileSystem - zbira informacije, kot je število bajtov, ki jih je naloga prebrala ali zapisala
      • Števci FileInputFormat - zbira informacije o številu bajtov, prebranih prek FileInputFormat
      • Števci FileOutputFormat - zbira informacije o številu bajtov, zapisanih prek FileOutputFormat
      • Števci opravil - te števce uporablja JobTracker. Statistični podatki, ki jih zberejo, vključujejo npr. Število nalog, ki so se začele za neko delovno mesto.
    2. Uporabniško določeni števci

Poleg vgrajenih števcev lahko uporabnik določi svoje lastne števce z uporabo podobnih funkcij, ki jih zagotavljajo programski jeziki. Na primer, v Javi se 'enum' uporablja za definiranje uporabniško določenih števcev.

Primer števcev

Primer MapClass s števci za štetje števila manjkajočih in neveljavnih vrednosti. Datoteka vhodnih podatkov, uporabljena v tej vadnici Naš nabor vhodnih podatkov je datoteka CSV, 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"));}}}

Zgoraj delček kode prikazuje primer izvedbe števcev v Hadoop Map Reduce.

Tu je SalesCounters števec, definiran s pomočjo 'enum' . Uporablja se za štetje pogrešanih in neveljavnih vhodnih zapisov.

Če je v delčku kode polje 'country' ničelno, potem njegova vrednost manjka, zato se poveča ustrezni števec SalesCounters.MISSING .

Nato, če se polje 'prodaja' začne z ", se zapis šteje za NEVELJENEGA. To se kaže s povečevanjem števca SalesCounters.INVALID.