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