Spuštění příkladů MapReduce zahrnutých ve službě HDInsight
Zjistěte, jak spustit příklady MapReduce, které jsou součástí Apache Hadoopu ve službě HDInsight.
Požadavky
Cluster Apache Hadoop ve službě HDInsight. Viz Začínáme se službou HDInsight v Linuxu.
Klient SSH. Další informace najdete v tématu Připojení ke službě HDInsight (Apache Hadoop) pomocí SSH.
Příklady MapReduce
Ukázky jsou umístěné v clusteru HDInsight na adrese /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
. Zdrojový kód pro tyto ukázky je součástí clusteru HDInsight na adrese /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples
.
Tento archiv obsahuje následující ukázky:
Ukázka | Popis |
---|---|
aggregatewordcount | Spočítá slova ve vstupních souborech. |
aggregatewordhist | Vypočítá histogram slov ve vstupních souborech. |
bbp |
Použije Bailey-Borwein-Plouffe k výpočtu přesných číslic pi. |
dbcount | Spočítá protokoly pageview uložené v databázi. |
distbbp | Používá vzorec typu BBP k výpočtu přesných bitů pí. |
grep | Spočítá shody regulárního výrazu ve vstupu. |
join | Provede spojení se seřazenými, rovnoměrně dělenými datovými sadami. |
multifilewc | Spočítá slova z několika souborů. |
pentomino | Dlaždice pokládání program najít řešení pentomino problémy. |
Pi | Odhaduje pí pomocí metody kvazi-Monte Carlo. |
randomtextwriter | Zapíše 10 GB náhodných textových dat na uzel. |
randomwriter |
Zapíše 10 GB náhodných dat na uzel. |
secondarysort |
Definuje sekundární řazení fáze redukce. |
sort | Seřadí data zapsaná náhodným zapisovačem. |
Sudoku | Řešitel sudoku. |
teragen | Vygenerujte data pro terasort. |
Tesasová | Spusť terasort. |
teravalidate | Kontrola výsledků terasort. |
počet slov | Spočítá slova ve vstupních souborech. |
wordmean |
Spočítá průměrnou délku slov ve vstupních souborech. |
wordmedian |
Spočítá střední délku slov ve vstupních souborech. |
slovatandarddeviation | Spočítá směrodatnou odchylku délky slov ve vstupních souborech. |
Spuštění příkladu wordcount
Připojte se ke službě HDInsight pomocí SSH. Nahraďte
CLUSTER
názvem vašeho clusteru a zadejte následující příkaz:ssh sshuser@CLUSTER-ssh.azurehdinsight.net
V relaci SSH pomocí následujícího příkazu vypište ukázky:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
Tento příkaz vygeneruje seznam ukázek z předchozí části tohoto dokumentu.
Pomocí následujícího příkazu získáte nápovědu ke konkrétní ukázce. V tomto případě ukázka wordcount :
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount
Zobrazí se následující zpráva:
Usage: wordcount <in> [<in>...] <out>
Tato zpráva znamená, že můžete zadat několik vstupních cest ke zdrojovým dokumentům. Konečná cesta je místo, kde je uložen výstup (počet slov ve zdrojových dokumentech).
Pomocí následujícího postupu můžete spočítat všechna slova v poznámkových blocích Leonarda da Vinci, která jsou k dispozici jako ukázková data s vaším clusterem:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/davinciwordcount
Vstup pro tuto úlohu se načte z
/example/data/gutenberg/davinci.txt
. Výstup pro tento příklad je uložený v/example/data/davinciwordcount
souboru . Obě cesty se nacházejí ve výchozím úložišti clusteru, nikoli v místním systému souborů.Poznámka
Jak je uvedeno v nápovědě k ukázce wordcount, můžete také zadat více vstupních souborů. Počítá například
hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/gutenberg/ulysses.txt /example/data/twowordcount
slova v davinci.txt i ulysses.txt.Po dokončení úlohy zobrazte výstup pomocí následujícího příkazu:
hdfs dfs -cat /example/data/davinciwordcount/*
Tento příkaz zřetězí všechny výstupní soubory vytvořené úlohou. Zobrazí výstup do konzoly. Výstup se bude podobat následujícímu:
zum 1 zur 1 zwanzig 1 zweite 1
Každý řádek představuje slovo a kolikrát se vyskytlo ve vstupních datech.
Příklad Sudoku
Sudoku je logické puzzle složené z devíti mřížek 3x3. Některé buňky v mřížce obsahují čísla, zatímco jiné jsou prázdné a cílem je vyřešit prázdné buňky. Předchozí odkaz obsahuje další informace o skládačce, ale účelem této ukázky je vyřešit prázdné buňky. Vstupem by tedy měl být soubor v následujícím formátu:
- Devět řádků po devíti sloupcích
- Každý sloupec může obsahovat buď číslo, nebo
?
(což označuje prázdnou buňku). - Buňky jsou oddělené mezerou.
Existuje určitý způsob, jak vytvořit Sudoku puzzle; nemůžete opakovat číslo ve sloupci nebo řádku. Existuje příklad správně vytvořeného clusteru HDInsight. Nachází se na adrese /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta
a obsahuje následující text:
8 5 ? 3 9 ? ? ? ?
? ? 2 ? ? ? ? ? ?
? ? 6 ? 1 ? ? ? 2
? ? 4 ? ? 3 ? 5 9
? ? 8 9 ? 1 4 ? ?
3 2 ? 4 ? ? 8 ? ?
9 ? ? ? 8 ? 5 ? ?
? ? ? ? ? ? 2 ? ?
? ? ? ? 4 5 ? 7 8
Pokud chcete spustit tento ukázkový problém pomocí příkladu Sudoku, použijte následující příkaz:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar sudoku /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta
Výsledky se zobrazí podobně jako v následujícím textu:
8 5 1 3 9 2 6 4 7
4 3 2 6 7 8 1 9 5
7 9 6 5 1 4 3 8 2
6 1 4 8 2 3 7 5 9
5 7 8 9 6 1 4 2 3
3 2 9 4 5 7 8 1 6
9 4 7 2 8 6 5 3 1
1 8 5 7 3 9 2 6 4
2 6 3 1 4 5 9 7 8
Příklad pí (π)
Vzorek pí používá k odhadu hodnoty pí statistickou metodu (kvazi-Monte Carlo). Body se náhodně umisťují do jednotkového čtverce. Čtverec obsahuje také kruh. Pravděpodobnost, že body spadají do kruhu, se rovná oblasti kruhu pí/4. Hodnotu pí lze odhadnout z hodnoty 4R
. R je poměr počtu bodů uvnitř kruhu k celkovému počtu bodů, které jsou ve čtverci. Čím větší je vzorek bodů, tím lepší je odhad.
Ke spuštění této ukázky použijte následující příkaz. Tento příkaz používá k odhadu hodnoty pí 16 map s 10 000 000 vzorky:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 16 10000000
Hodnota vrácená tímto příkazem je podobná hodnotě 3,14159155000000000000000. Pro odkazy je prvních 10 desetinných míst pí 3,1415926535.
Příklad 10 GB GraySort
GraySort je řazení srovnávacích testů. Metrika je rychlost řazení (TB/minuta), které se dosahuje při řazení velkých objemů dat, obvykle minimálně 100 TB.
Tato ukázka používá skromných 10 GB dat, aby bylo možné je spustit relativně rychle. Používá aplikace MapReduce vyvinuté společností Owen O'Malley
a Arun Murthy
. Tyto aplikace získaly v roce 2009 roční srovnávací test řazení terabajtů pro obecné účely (Daytona) s rychlostí 0,578 TB/min (100 TB za 173 minut). Další informace o tomto a dalších srovnávacích testech řazení najdete na webu Seřadit srovnávací testy .
Tato ukázka používá tři sady programů MapReduce:
TeraGen: Program MapReduce, který generuje řádky dat k řazení.
TeraSort: Vzorkuje vstupní data a pomocí MapReduce seřadí data do celkového pořadí.
TeraSort je standardní řazení MapReduce s výjimkou vlastního partitioneru. Partitioner používá seřazený seznam vzorových klíčů N-1, které definují rozsah klíčů pro každé redukce. Konkrétně se za účelem snížení hodnoty i odesílají všechny klíče, například sample[i-1] <= key < sample[i]. Tento oddělovač zaručuje, že všechny výstupy redukce
i
jsou menší než výstup redukcei+1
.TeraValidate: Program MapReduce, který ověřuje, jestli je výstup globálně seřazený.
Vytvoří ve výstupním adresáři jedno mapování pro každý soubor a každé mapování zajistí, aby každý klíč byl menší nebo roven předchozímu. Funkce mapování vygeneruje záznamy prvního a posledního klíče každého souboru. Funkce redukce zajišťuje, že první klíč souboru i je větší než poslední klíč souboru i-1. Všechny problémy se hlásí jako výstup fáze redukce s klíči, které jsou mimo pořadí.
Pomocí následujících kroků vygenerujte data, seřaďte a ověřte výstup:
Vygenerujte 10 GB dat, která se ukládají do výchozího úložiště clusteru HDInsight na adrese
/example/data/10GB-sort-input
:yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapred.map.tasks=50 100000000 /example/data/10GB-sort-input
Hadoop
-Dmapred.map.tasks
sděluje, kolik úkolů mapování má pro tuto úlohu použít. Poslední dva parametry instrukuje úlohu, aby vytvořila 10 GB dat a uložila je na/example/data/10GB-sort-input
.Pomocí následujícího příkazu seřaďte data:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar terasort -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-input /example/data/10GB-sort-output
Hadoop
-Dmapred.reduce.tasks
informuje, kolik úkolů redukce má pro úlohu použít. Poslední dva parametry jsou pouze vstupní a výstupní umístění pro data.K ověření dat vygenerovaných řazením použijte následující:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teravalidate -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-output /example/data/10GB-sort-validate
Další kroky
V tomto článku jste zjistili, jak spustit ukázky, které jsou součástí clusterů HDInsight se systémem Linux. Kurzy o používání Pig, Hive a MapReduce se službou HDInsight najdete v následujících tématech: