Sdílet prostřednictvím


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

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

  1. 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
    
  2. 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.

  3. 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).

  4. 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/davinciwordcountsouboru . 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.

  5. 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 redukce i+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:

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

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

  3. 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: