Hadoop MapReduce Pripojte sa & Počítadlo s príkladom

Obsah:

Anonim

Čo je to Pripojiť sa k Mapreduce?

Operácia Mapreduce Join sa používa na spojenie dvoch veľkých súborov údajov. Tento proces však zahŕňa napísanie množstva kódu na vykonanie skutočnej operácie spojenia. Spojenie dvoch súborov údajov sa začína porovnaním veľkosti každého súboru údajov. Ak je jedna množina údajov v porovnaní s druhou množinou údajov menšia, potom sa do každého uzla údajov v klastri distribuuje menšia množina údajov.

Po distribúcii spojenia v MapReduce buď Mapper alebo Reducer použije menší súbor údajov na vykonanie vyhľadávania zodpovedajúcich záznamov z veľkého súboru údajov a potom tieto záznamy skombinuje do výstupných záznamov.

V tomto návode sa naučíte

  • Čo je to Pripojiť sa k MapReduce?
  • Typy spojenia
  • Ako sa spojiť s dvoma súbormi údajov: Príklad MapReduce
  • Čo je počítadlo v MapReduce?
  • Typy počítadiel MapReduce
  • Príklad počítadla

Typy spojenia

V závislosti od miesta, kde sa skutočne vykonáva spojenie, sa spojenia v Hadoope klasifikujú do

1. Spojenie na strane mapy - Keď sa spojenie uskutoční mapovač, nazýva sa to spojenie na strane mapy. V tomto type sa spojenie uskutoční skôr, ako dáta skutočne spotrebujú údaje mapovou funkciou. Je povinné, aby vstupy do každej mapy boli vo forme oddielov a boli zoradené podľa poradia. Rovnako musí existovať rovnaký počet oddielov a musí sa triediť podľa kľúča spojenia.

2. Spojenie na strane redukcie - Keď sa spojenie vykonáva redukciou, nazýva sa to spojenie na strane zmenšenie. V tomto spojení nie je potrebné mať súbor údajov v štruktúrovanej podobe (alebo rozdelený na oddiely).

Tu spracovanie na strane mapy vyžaruje spojovací kľúč a zodpovedajúce n-tice oboch tabuliek. Výsledkom tohto spracovania je, že všetky n-tice s rovnakým kľúčom spojenia spadajú do rovnakého reduktora, ktorý potom spája záznamy s rovnakým kľúčom spojenia.

Celkový priebeh procesu spojení v Hadoope je znázornený na nasledujúcom diagrame.

Typy pripojení v programe Hadoop MapReduce

Ako sa spojiť s dvoma súbormi údajov: Príklad MapReduce

Existujú dva súbory údajov v dvoch rôznych súboroch (zobrazené nižšie). Kľúč Dept_ID je spoločný v obidvoch súboroch. Cieľom je tieto súbory kombinovať pomocou aplikácie MapReduce Join

Súbor 1
Súbor 2

Vstup: Vstupnou dátovou sadou je súbor txt, DeptName.txt a DepStrength.txt

Stiahnite si vstupné súbory odtiaľto

Uistite sa, že máte nainštalovaný Hadoop. Predtým, ako začnete s príkladom skutočného procesu MapReduce Join, zmeňte používateľa na 'hduser' (ID použité pri konfigurácii Hadoop, môžete prepnúť na ID používateľa použité pri konfigurácii Hadoop).

su - hduser_

Krok 1) Skopírujte súbor zip do umiestnenia podľa vášho výberu

Krok 2) Rozbaľte súbor Zip

sudo tar -xvf MapReduceJoin.tar.gz

Krok 3) Prejdite do adresára MapReduceJoin /

cd MapReduceJoin/

Krok 4) Spustite Hadoop

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

Krok 5) DeptStrength.txt a DeptName.txt sú vstupné súbory použité pre tento ukážkový program MapReduce Join.

Tieto súbory je potrebné skopírovať na HDFS pomocou príkazu dole

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

Krok 6) Spustite program pomocou príkazu dole

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

Krok 7) Po vykonaní sa výstupný súbor (s názvom „part-00000“) uloží do adresára / output_mapreducejoin na HDFS

Výsledky je možné vidieť pomocou rozhrania príkazového riadku

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

Výsledky je možné vidieť aj prostredníctvom webového rozhrania

Teraz zvoľte „Prehliadať súborový systém“ a prejdite hore / output_mapreducejoin

Otvorená časť-r-00000

Výsledky sú zobrazené

POZNÁMKA: Upozorňujeme, že pred ďalším spustením tohto programu budete musieť odstrániť výstupný adresár / output_mapreducejoin

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

Alternatívou je použitie iného názvu pre výstupný adresár.

Čo je počítadlo v MapReduce?

Counter v MapReduce je mechanizmus používaný pre zber a meranie štatistické informácie o MapReduce pracovných miest a udalostí. Počítadlá sledujú rôzne štatistické údaje úloh v MapReduce, ako napríklad počet vykonaných operácií a postup operácie. Počítadlá sa používajú na diagnostiku problémov v aplikácii MapReduce.

Počítadlá Hadoop sú podobné ako vloženie logovacej správy do kódu mapy alebo zmenšenia. Tieto informácie by mohli byť užitočné na diagnostiku problému v spracovaní úlohy MapReduce.

Spravidla sú tieto čítače v Hadoop definované v programe (mapujú alebo zmenšujú) a zvyšujú sa počas vykonávania, keď dôjde ku konkrétnej udalosti alebo podmienke (špecifickej pre dané počítadlo). Veľmi dobrou aplikáciou počítadiel Hadoop je sledovanie platných a neplatných záznamov zo vstupnej množiny údajov.

Typy počítadiel MapReduce

V zásade existujú 2 typy počítadiel MapReduce

    1. Zabudované počítadlá Hadoop: Existuje niekoľko zabudovaných počítadiel Hadoop, ktoré existujú pre každú úlohu. Nižšie sú zabudované skupiny počítadiel -
      • Počítadlá úloh MapReduce - zhromažďuje počas doby vykonávania úlohy špecifické informácie o úlohe (napr. Počet vstupných záznamov).
      • Počítadlá FileSystem - zhromažďujú informácie, ako je počet bajtov prečítaných alebo napísaných úlohou
      • Počítadlá FileInputFormat - zhromažďuje informácie o počte bajtov načítaných cez FileInputFormat
      • Počítadlá FileOutputFormat - zhromažďuje informácie o počte bajtov zapísaných cez FileOutputFormat
      • Počítadlá úloh - Tieto počítadlá používa JobTracker. Štatistiky, ktoré zhromaždia, zahŕňajú napríklad počet úloh spustených pre úlohu.
    2. Užívateľom definované počítadlá

Okrem vstavaných počítadiel môže používateľ definovať svoje vlastné počítadlá pomocou podobných funkcií poskytovaných programovacími jazykmi. Napríklad v Jave sa „enum“ používa na definovanie počítadiel definovaných používateľom.

Príklad počítadla

Príklad MapClass s počítadlami na počítanie počtu chýbajúcich a neplatných hodnôt. Súbor vstupných údajov použitý v tomto návode Naša sada vstupných údajov je súbor 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"));}}}

Fragment kódu vyššie zobrazuje príklad implementácie počítadiel v programe Hadoop Map Reduce.

Odtiaľ SalesCounters je počítadlo definované pomocou , enum ' . Používa sa na počítanie CHÝBAJÚCICH a NEPLATNÝCH vstupných záznamov.

Ak má v úryvku kódu pole „krajina“ nulovú dĺžku, chýba jeho hodnota, a teda sa zvyšuje príslušné počítadlo SalesCounters.MISSING .

Ďalej, ak pole „predaj“ začína znakom „, záznam sa považuje za NEPLATNÝ. To je indikované zvyšujúcim sa počítadlom SalesCounters.INVALID.