Udostępnij za pośrednictwem


Uruchamianie przykładów usługi MapReduce zawartych w usłudze HDInsight

Dowiedz się, jak uruchamiać przykłady mapReduce zawarte w usłudze Apache Hadoop w usłudze HDInsight.

Wymagania wstępne

Przykłady mapReduce

Przykłady znajdują się w klastrze usługi HDInsight pod adresem /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar. Kod źródłowy tych przykładów znajduje się w klastrze usługi HDInsight pod adresem /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples.

W tym archiwum znajdują się następujące przykłady:

Sample Opis
aggregatewordcount Zlicza wyrazy w plikach wejściowych.
agregwordhist Oblicza histogram słów w plikach wejściowych.
bbp Używa Bailey-Borwein-Plouffe do obliczenia dokładnych cyfr Pi.
dbcount Zlicza dzienniki widoku strony przechowywane w bazie danych.
distbbp Używa formuły typu BBP do obliczania dokładnych bitów pi.
grep Zlicza dopasowania wyrażenia regularnego w danych wejściowych.
join Wykonuje sprzężenia posortowane, podobnie partycjonowane zestawy danych.
multifilewc Zlicza wyrazy z kilku plików.
pentomino Program układania kafelków w celu znalezienia rozwiązań problemów z pentomino.
Pi Szacuje Pi przy użyciu metody quasi-Monte Carlo.
randomtextwriter Zapisuje 10 GB losowych danych tekstowych na węzeł.
randomwriter Zapisuje 10 GB danych losowych na węzeł.
secondarysort Definiuje sortowanie pomocnicze do fazy redukcji.
sort Sortuje dane zapisywane przez losowy moduł zapisywania.
Sudoku Sudoku solver.
teragen Generowanie danych dla terasorty.
terasort Uruchom terasortę.
terawalidat Sprawdzanie wyników terasort.
Wordcount Zlicza wyrazy w plikach wejściowych.
wordmean Zlicza średnią długość wyrazów w plikach wejściowych.
wordmedian Zlicza medianę wyrazów w plikach wejściowych.
wordstandarddeviation Zlicza odchylenie standardowe długości wyrazów w plikach wejściowych.

Uruchamianie przykładu konta wyrazów

  1. Nawiązywanie połączenia z usługą HDInsight przy użyciu protokołu SSH. Zastąp CLUSTER ciąg nazwą klastra, a następnie wprowadź następujące polecenie:

    ssh sshuser@CLUSTER-ssh.azurehdinsight.net
    
  2. W sesji SSH użyj następującego polecenia, aby wyświetlić listę przykładów:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
    

    To polecenie generuje listę przykładów z poprzedniej sekcji tego dokumentu.

  3. Użyj następującego polecenia, aby uzyskać pomoc dotyczącą konkretnego przykładu. W tym przypadku przykład wordcount :

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount
    

    Zostanie wyświetlony następujący komunikat:

    Usage: wordcount <in> [<in>...] <out>
    

    Ten komunikat wskazuje, że można podać kilka ścieżek wejściowych dla dokumentów źródłowych. Ostatnia ścieżka polega na tym, że dane wyjściowe (liczba wyrazów w dokumentach źródłowych) są przechowywane.

  4. Użyj następujących elementów, aby zliczyć wszystkie wyrazy w notesach Leonardo da Vinci, które są dostarczane jako przykładowe dane z klastrem:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/davinciwordcount
    

    Dane wejściowe dla tego zadania są odczytywane z /example/data/gutenberg/davinci.txtpliku . Dane wyjściowe dla tego przykładu są przechowywane w pliku /example/data/davinciwordcount. Obie ścieżki znajdują się w domyślnym magazynie klastra, a nie w lokalnym systemie plików.

    Uwaga

    Jak wspomniano w pomocy dla przykładu wordcount, można również określić wiele plików wejściowych. Na przykład zlicza 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 wyrazy w davinci.txt i ulysses.txt.

  5. Po zakończeniu zadania użyj następującego polecenia, aby wyświetlić dane wyjściowe:

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

    To polecenie łączy wszystkie pliki wyjściowe utworzone przez zadanie. Spowoduje to wyświetlenie danych wyjściowych w konsoli programu . Dane wyjściowe będą podobne do następującego tekstu:

    zum     1
    zur     1
    zwanzig 1
    zweite  1
    

    Każdy wiersz reprezentuje słowo i ile razy wystąpiło w danych wejściowych.

Przykład Sudoku

Sudoku to logika układanki składającej się z dziewięciu 3x3 siatki. Niektóre komórki w siatce mają liczby, a inne są puste, a celem jest rozwiązanie dla pustych komórek. Poprzedni link zawiera więcej informacji na temat zagadki, ale celem tego przykładu jest rozwiązanie dla pustych komórek. Dlatego dane wejściowe powinny być plikiem, który jest w następującym formacie:

  • Dziewięć wierszy dziewięciu kolumn
  • Każda kolumna może zawierać liczbę lub ? (co wskazuje pustą komórkę)
  • Komórki są oddzielone spacją

Istnieje pewien sposób na konstruowanie układanek Sudoku; Nie można powtórzyć liczby w kolumnie lub wierszu. Istnieje przykład prawidłowo skonstruowanego klastra usługi HDInsight. Znajduje się w lokalizacji /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta i zawiera następujący tekst:

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

Aby uruchomić ten przykładowy problem za pomocą przykładu Sudoku, użyj następującego polecenia:

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

Wyniki są podobne do następującego tekstu:

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

Przykład pi (π)

Próbka pi używa metody statystycznej (quasi-Monte Carlo) do oszacowania wartości pi. Punkty są umieszczane losowo w kwadracie jednostkowym. Kwadrat zawiera również okrąg. Prawdopodobieństwo, że punkty należą do okręgu, są równe obszarowi okręgu, pi/4. Wartość pi można oszacować na podstawie wartości 4R. R to stosunek liczby punktów znajdujących się wewnątrz okręgu do całkowitej liczby punktów znajdujących się w obrębie kwadratu. Większa próbka używanych punktów, tym lepiej jest oszacować.

Użyj następującego polecenia, aby uruchomić ten przykład. To polecenie używa 16 map z 10 000 000 próbek każdy do oszacowania wartości pi:

yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 16 10000000

Wartość zwrócona przez to polecenie jest podobna do 3.1415915500000000000000000. W przypadku odwołań pierwsze 10 miejsc dziesiętnych pi to 3,1415926535.

Przykład 10 GB graySort

GraySort to sortowanie testów porównawczych. Metryka to szybkość sortowania (TB/minuta), która jest osiągana podczas sortowania dużych ilości danych, zwykle co najmniej 100 TB.

W tym przykładzie jest używane skromne 10 GB danych, dzięki czemu można je stosunkowo szybko uruchomić. Używa ona aplikacji MapReduce opracowanych przez Owen O'Malley firmę i Arun Murthy. W 2009 r. aplikacje te wygrały roczny test porównawczy sortowania terabajtów ("Daytona") z szybkością 0,578 TB/min (100 TB w 173 minutach). Aby uzyskać więcej informacji na temat tego i innych testów porównawczych sortowania, zobacz witrynę sortuj test porównawczy .

W tym przykładzie użyto trzech zestawów programów MapReduce:

  • TeraGen: program MapReduce, który generuje wiersze danych do sortowania

  • TeraSort: próbkuje dane wejściowe i używa usługi MapReduce do sortowania danych w łącznej kolejności

    TeraSort jest standardowym sortowaniem MapReduce, z wyjątkiem niestandardowego partycjonatora. Partycjonator używa posortowanej listy przykładowych kluczy N-1, które definiują zakres kluczy dla każdej redukcji. W szczególności wszystkie klucze, takie jak próbka[i-1] <= próbka klucza < [i] są wysyłane w celu zmniejszenia i. Ten partycjonator gwarantuje, że dane wyjściowe redukcji i są mniejsze niż dane wyjściowe redukcji i+1.

  • TeraValidate: program MapReduce, który sprawdza, czy dane wyjściowe są sortowane globalnie

    Tworzy jedną mapę na plik w katalogu wyjściowym, a każda mapa zapewnia, że każdy klucz jest mniejszy lub równy poprzedniemu. Funkcja mapowania generuje rekordy pierwszych i ostatnich kluczy każdego pliku. Funkcja redukcji zapewnia, że pierwszy klucz pliku i jest większy niż ostatni klucz pliku i-1. Wszelkie problemy są zgłaszane jako dane wyjściowe fazy redukcji z kluczami, które są poza kolejnością.

Wykonaj następujące kroki, aby wygenerować dane, posortować, a następnie zweryfikować dane wyjściowe:

  1. Wygeneruj 10 GB danych przechowywanych w domyślnym magazynie klastra usługi HDInsight pod adresem /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
    

    Polecenie informuje platformę -Dmapred.map.tasks Hadoop, ile zadań mapowania ma być używanych dla tego zadania. Dwa ostatnie parametry instruują zadanie, aby utworzyć 10 GB danych i zapisać je w lokalizacji /example/data/10GB-sort-input.

  2. Użyj następującego polecenia, aby posortować dane:

    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
    

    Polecenie informuje usługę -Dmapred.reduce.tasks Hadoop o tylu zadaniach redukcji, które mają być używane dla zadania. Dwa ostatnie parametry to tylko lokalizacje wejściowe i wyjściowe dla danych.

  3. Użyj następujących informacji, aby zweryfikować dane wygenerowane przez sortowanie:

    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
    

Następne kroki

W tym artykule przedstawiono sposób uruchamiania przykładów zawartych w klastrach usługi HDInsight opartych na systemie Linux. Aby zapoznać się z samouczkami dotyczącymi używania technologii Pig, Hive i MapReduce z usługą HDInsight, zobacz następujące tematy: