spuštění příkladů MapReduce obsažených v HDInsight

naučte se spouštět příklady MapReduce, které jsou součástí Apache Hadoop v HDInsight.

Požadavky

příklady MapReduce

Ukázky se nacházejí 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 .

V tomto archivu jsou uvedené 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žívá Bailey-Borwein-Plouffe k výpočtu přesných číslic v PI.
dbcount Spočítá protokoly PageView uložené v databázi.
distbbp K výpočtu přesných bitů PI používá vzorec BBP typu.
grep Počítá shodu regulárního výrazu ve vstupu.
join Provede spojení se setříděnými a rovnoměrně rozdělenými datovými sadami.
multifilewc Spočítá slova z několika souborů.
pentomino Program pro rozložení dlaždic, který vyhledá řešení, která pentomino problémy.
čísla Odhadne číslo pí pomocí kvazi-Monte Carlo metody.
randomtextwriter Zapisuje 10 GB náhodných textových dat na uzel.
randomwriter Zapisuje 10 GB náhodných dat na uzel.
secondarysort Definuje sekundární řazení do fáze zmenšení.
sort Seřadí data zapsaná náhodným zapisovačem.
sudoku Řešitel sudoku
teragen Vygenerujte data pro terasort.
terasort Spusťte terasort.
teravalidate Kontrola výsledků terasort
WORDCOUNT Spočítá slova ve vstupních souborech.
wordmean Spočítá průměrnou délku slov ve vstupních souborech.
wordmedian Spočítá medián slov ve vstupních souborech.
wordstandarddeviation Počítá směrodatnou odchylku délky slov ve vstupních souborech.

Spuštění příkladu WORDCOUNT

  1. Připojení do HDInsight pomocí SSH. Nahraďte CLUSTER názvem vašeho clusteru a potom zadejte následující příkaz:

    ssh sshuser@CLUSTER-ssh.azurehdinsight.net
    
  2. Z relace SSH použijte následující příkaz k vypsání ukázek:

    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 můžete získat nápovědu ke konkrétní ukázce. V tomto případě je to 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 pro zdrojové dokumenty můžete zadat několik vstupních cest. Poslední cesta je místo, kde je uložen výstup (počet slov ve zdrojových dokumentech).

  4. Pomocí následujícího parametru můžete spočítat všechna slova v poznámkových blocích Leonardo da Vinci, která jsou k dispozici jako vzorová data ve vašem clusteru:

    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 je načtený z /example/data/gutenberg/davinci.txt . Výstup v tomto příkladu je uložen v /example/data/davinciwordcount . Obě cesty se nacházejí ve výchozím úložišti pro cluster, nikoli v místním systému souborů.

    Poznámka

    Jak je uvedeno v nápovědě ke ukázce WORDCOUNT, můžete také zadat více vstupních souborů. 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 by bylo třeba spočítat slova v davinci.txt i ulysses.txt.

  5. Po dokončení úlohy použijte následující příkaz k zobrazení výstupu:

    hdfs dfs -cat /example/data/davinciwordcount/*
    

    Tento příkaz zřetězí všechny výstupní soubory vytvář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 k němu došlo ve vstupních datech.

Příklad Sudoku

Sudoku je logicová skládanka tvořená devíti mřížkami 3x3. Některé buňky v mřížce mají čísla, zatímco ostatní jsou prázdné, a cílem je vyřešit prázdné buňky. Předchozí odkaz obsahuje další informace o skládankě, ale účelem této ukázky je vyřešit prázdné buňky. Takže náš vstup by měl být soubor, který je v následujícím formátu:

  • Devět řádků devíti sloupců
  • 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; nelze opakovat číslo v rámci sloupce nebo řádku. V clusteru HDInsight je příklad, který je správně vytvořen. Je umístěný 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

Chcete-li spustit tento ukázkový problém prostřednictvím 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 následující text:

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

PI (π) – příklad

Ukázka PI používá statistickou metodu (kvazi-Monte Carlo) k odhadu hodnoty pí. Body se umístí náhodně do čtverce jednotek. Čtverec také obsahuje kruh. Pravděpodobnost, že body spadají do kruhu, je rovna oblasti kružnice, PI/4. Hodnota pí může být odhadnuta z hodnoty 4R. R je poměr počtu bodů, které jsou uvnitř kruhu, k celkovému počtu bodů, které jsou uvnitř čtverce. Čím větší je vzorek použitých bodů, tím lepší je odhad.

Ke spuštění této ukázky použijte následující příkaz. Tento příkaz k odhadu hodnoty pí používá 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 míra řazení (TB/minuta), které se dosahuje při řazení velkých objemů dat, obvykle minimálně 100 TB.

Tato ukázka používá mírné 10 GB dat, aby bylo možné je spustit relativně rychle. Využívá aplikace MapReduce vyvinuté Odemem O'Malleym a Arunemym. Tyto aplikace vyhrály roční srovnávací test pro obecné účely (Daytona) terabajtů v roce 2009 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 srovnávacím testem Sort Benchmark.

V této ukázce se používají tři sady MapReduce programů:

  • TeraGen: MapReduce, který generuje řádky dat k řazení

  • TeraSort: Vzorkuje vstupní data a pomocí MapReduce data seřadí do celkového pořadí.

    TeraSort je standardní MapReduce, s výjimkou vlastního děliče. Dělitel používá seřazený seznam N-1 vzorkovaných klíčů, které definují rozsah klíčů pro každé snížení. Konkrétně všechny klíče, jako je sample[i-1] <= key < sample[i], se odesílané ke snížení i. Tento rozdělovač zaručuje, že výstupy redukce i jsou menší než výstupy redukce i+1.

  • TeraValidate: MapReduce program, který ověří, že je výstup globálně seřazený.

    Ve výstupním adresáři vytvoří jednu mapu na soubor a každá mapa zajistí, že každý klíč bude menší nebo roven předchozímu. Funkce map generuje záznamy prvního a posledního klíče každého souboru. Funkce reduce zajišťuje, že první klíč souboru i je větší než poslední klíč souboru i-1. Všechny problémy jsou hlášeny jako výstup fáze redukce s klíči, které jsou mimo pořadí.

Pomocí následujících kroků můžete vygenerovat data, řadit a potom ověřit výstup:

  1. Vygenerování 10 GB dat, která se ukládají do výchozího úložiště clusteru HDInsight /example/data/10GB-sort-input v :

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapred.map.tasks=50 100000000 /example/data/10GB-sort-input
    

    Říká -Dmapred.map.tasks Hadoopu, kolik úkolů mapování se má pro tuto úlohu použít. Poslední dva parametry úlohu instruuje, aby vytvořila 10 GB dat a ukládal je v /example/data/10GB-sort-input .

  2. Data seřadíte pomocí následujícího příkazu:

    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
    

    Říká -Dmapred.reduce.tasks Hadoopu, kolik úkolů redukce se má pro úlohu použít. Poslední dva parametry jsou pouze vstupním a výstupním umístěním dat.

  3. Pomocí následujícího kódu ověřte data vygenerovaná řazením:

    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 týkající se použití Pig, Hive a MapReduce s HDInsight najdete v následujících tématech: