Hadoop MapReduce Připojit se & Počítadlo s příkladem

Obsah:

Anonim

Co je to Připojit se k Mapreduce?

Operace Mapreduce join se používá ke kombinaci dvou velkých datových sad. Tento proces však zahrnuje psaní spousty kódu k provedení skutečné operace spojení. Spojení dvou datových sad začíná porovnáním velikosti každé datové sady. Pokud je jedna datová sada ve srovnání s druhou datovou sadou menší, pak se do každého datového uzlu v klastru distribuuje menší datová sada.

Po distribuci spojení v MapReduce buď Mapper nebo Reducer použije menší datovou sadu k vyhledání odpovídajících záznamů z velké datové sady a poté tyto záznamy zkombinuje do výstupních záznamů formuláře.

V tomto výukovém programu se naučíte

  • Co je to připojení v MapReduce?
  • Typy spojení
  • Jak se připojit ke dvěma datovým sadám: Příklad MapReduce
  • Co je Counter v MapReduce?
  • Typy čítačů MapReduce
  • Příklad čítačů

Typy spojení

V závislosti na místě, kde se skutečné spojení provádí, se spojení v Hadoopu dělí na -

1. Spojení na straně mapy - Když spojení provede mapovač, nazývá se to spojení na straně mapy. V tomto typu se spojení provádí před tím, než data skutečně spotřebují funkci mapy. Je povinné, aby vstup do každé mapy byl ve formě oddílu a byl seřazen. Rovněž musí existovat stejný počet oddílů a musí být tříděny podle klíče spojení.

2. Spojení na zmenšené straně - Když je spojení provedeno reduktorem, nazývá se to spojení na zmenšené straně. V tomto spojení není nutné mít datovou sadu ve strukturované formě (nebo rozdělené na oddíly).

Zde zpracování na straně mapy vydává klíč spojení a odpovídající n-tice obou tabulek. V důsledku tohoto zpracování všechny n-tice se stejným klíčem spojení spadají do stejného reduktoru, který pak spojuje záznamy se stejným klíčem spojení.

Celkový průběh procesu spojení v Hadoopu je znázorněn na následujícím diagramu.

Typy připojení v Hadoop MapReduce

Jak se připojit ke dvěma datovým sadám: Příklad MapReduce

Existují dvě sady dat ve dvou různých souborech (viz níže). Klíč Dept_ID je společný v obou souborech. Cílem je použít MapReduce Join ke spojení těchto souborů

Soubor 1
Soubor 2

Vstup: Vstupní datovou sadou je soubor txt, DeptName.txt a DepStrength.txt

Stáhněte si zde vstupní soubory

Ujistěte se, že máte nainstalovaný Hadoop. Než začnete s ukázkovým skutečným procesem MapReduce Join, změňte uživatele na 'hduser' (ID použité při konfiguraci Hadoop, můžete přepnout na ID uživatele použité během konfigurace Hadoop).

su - hduser_

Krok 1) Zkopírujte soubor zip do umístění podle vašeho výběru

Krok 2) Dekomprimujte soubor ZIP

sudo tar -xvf MapReduceJoin.tar.gz

Krok 3) Přejít do adresáře MapReduceJoin /

cd MapReduceJoin/

Krok 4) Spusťte Hadoop

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

Krok 5) DeptStrength.txt a DeptName.txt jsou vstupní soubory použité pro tento ukázkový program MapReduce Join.

Tyto soubory je třeba zkopírovat na HDFS pomocí níže uvedeného příkazu -

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

Krok 6) Spusťte program pomocí níže uvedeného příkazu -

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

Krok 7) Po provedení se výstupní soubor (s názvem „part-00000“) uloží do adresáře / output_mapreducejoin na HDFS

Výsledky lze zobrazit pomocí rozhraní příkazového řádku

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

Výsledky lze také zobrazit prostřednictvím webového rozhraní

Nyní vyberte možnost „Procházet souborový systém“ a přejděte nahoru / output_mapreducejoin

Otevřená část-r-00000

Výsledky jsou zobrazeny

POZNÁMKA: Pamatujte, že před dalším spuštěním tohoto programu budete muset odstranit výstupní adresář / output_mapreducejoin

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

Alternativou je použití jiného názvu pro výstupní adresář.

Co je Counter v MapReduce?

Counter v MapReduce je mechanismus používaný pro sběr a měření statistické informace o MapReduce pracovních míst a událostí. Čítače sledují různé statistiky úloh v MapReduce, jako je počet operací a postup operace. Čítače se používají pro diagnostiku problémů v MapReduce.

Čítače Hadoop jsou podobné jako vložení zprávy protokolu do kódu mapy nebo zmenšení. Tyto informace by mohly být užitečné pro diagnostiku problému při zpracování úlohy MapReduce.

Obvykle jsou tyto čítače v Hadoopu definovány v programu (mapování nebo zmenšování) a jsou zvyšovány během provádění, když dojde ke konkrétní události nebo podmínce (specifické pro tento čítač). Velmi dobrou aplikací čítačů Hadoop je sledování platných a neplatných záznamů ze vstupní datové sady.

Typy čítačů MapReduce

V zásadě existují 2 typy čítačů MapReduce

    1. Integrované čítače Hadoop: Existuje několik integrovaných čítačů Hadoop, které existují pro každou úlohu. Níže jsou zabudované skupiny počitadel-
      • Čítače úkolů MapReduce - shromažďuje specifické informace o úkolu (např. Počet vstupních záznamů) během jeho provádění.
      • FileSystem pulty - sbírá informace, jako je počet bajtů číst nebo zapisovat pomocí úkolu
      • Čítače FileInputFormat - shromažďuje informace o počtu bajtů načtených prostřednictvím FileInputFormat
      • Čítače FileOutputFormat - shromažďuje informace o počtu bajtů zapsaných prostřednictvím FileOutputFormat
      • Počítadla úloh - Tyto čítače používá JobTracker. Statistiky, které shromažďují, zahrnují např. Počet úkolů spuštěných pro úlohu.
    2. Uživatelem definované čítače

Kromě integrovaných čítačů může uživatel definovat vlastní čítače pomocí podobných funkcí poskytovaných programovacími jazyky. Například v Javě se „enum“ používá k definování uživatelem definovaných čítačů.

Příklad čítačů

Příklad MapClass s čítači pro počítání počtu chybějících a neplatných hodnot. Soubor vstupních dat použitý v tomto výukovém programu Naše sada vstupních dat je soubor 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 výše ukazuje příklad implementace čítačů v Hadoop Map Reduce.

Zde je SalesCounters počítadlo definované pomocí 'enum' . Používá se k počítání CHYBĚJÍCÍCH a NEPLATNÝCH vstupních záznamů.

Pokud má ve fragmentu kódu pole „země“ nulovou délku, jeho hodnota chybí, a proto se zvýší odpovídající počítadlo SalesCounters.MISSING .

Dále, pokud pole „prodej“ začíná „, pak je záznam považován za NEPLATNÝ. To je indikováno zvyšujícím se počitadlem SalesCounters.INVALID.