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
Cluster Apache Hadoop v HDInsight. viz Začínáme se službou HDInsight v systému Linux.
Klient SSH. Další informace najdete v tématu Připojení ke službě HDInsight (Apache Hadoop) pomocí SSH.
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
Připojení do HDInsight pomocí SSH. Nahraďte
CLUSTERnázvem vašeho clusteru a potom zadejte následující příkaz:ssh sshuser@CLUSTER-ssh.azurehdinsight.netZ 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.jarTento příkaz vygeneruje seznam ukázek z předchozí části tohoto dokumentu.
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 wordcountZobrazí 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).
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/davinciwordcountVstup 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/twowordcountby bylo třeba spočítat slova v davinci.txt i ulysses.txt.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 1Kaž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:
Vygenerování 10 GB dat, která se ukládají do výchozího úložiště clusteru HDInsight
/example/data/10GB-sort-inputv :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.tasksHadoopu, 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.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.tasksHadoopu, 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.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: