Udostępnij za pośrednictwem


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

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

Wymagania wstępne

Przykłady usługi 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 jest uwzględniony 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:

Przykład Opis
łączna liczba słów Zlicza wyrazy w plikach wejściowych.
agregacja historii słów Oblicza histogram słów w plikach wejściowych.
bbp Używa Bailey-Borwein-Plouffe do obliczania dokładnych cyfr liczby 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.
dołączyć Wykonuje połączenie na posortowanych, równomiernie podzielonych zestawach 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 za pomocą metody quasi-Monte Carlo.
randomtextwriter Zapisuje 10 GB losowych danych tekstowych na węzeł.
randomwriter Zapisuje 10 GB losowych danych na każdy węzeł.
secondarysort Definiuje sortowanie pomocnicze w fazie redukcji.
rodzaj Sortuje dane zapisane przez losowego zapisującego.
sudoku Rozwiązanie sudoku.
teragen Generowanie danych dla terasortu.
terasort Uruchom Terasort.
terawalidat Sprawdzanie wyników terasortu.
liczba słów Zlicza wyrazy w plikach wejściowych.
wordmean Zlicza średnią długość wyrazów w plikach wejściowych.
wordmedian Zlicza medianową długość wyrazów w plikach wejściowych.
wordstandarddeviation Zlicza odchylenie standardowe długości wyrazów w plikach wejściowych.

Uruchom przykład licznika słów

  1. Nawiązywanie połączenia z usługą HDInsight przy użyciu protokołu SSH. Zastąp CLUSTER nazwą swojego 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 to miejsce przechowywania danych wyjściowych (liczba wyrazów w dokumentach źródłowych).

  4. Użyj poniższych instrukcji, aby zliczyć wszystkie wyrazy w notatnikach Leonardo da Vinci, które są dostarczane jako przykładowe dane w ramach klastra:

    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 pliku /example/data/gutenberg/davinci.txt. 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 dokumentacji dotyczącej przykładu liczenia słów, można również określić wiele plików wejściowych. Na przykład 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 zlicza wyrazy zarówno w davinci.txt, jak 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. Wyświetla dane wyjściowe na konsoli. Dane wyjściowe będą podobne do następującego tekstu:

    zum     1
    zur     1
    zwanzig 1
    zweite  1
    

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

Przykład sudoku

Sudoku to łamigłówka logiczna składająca się z dziewięciu siatek 3x3. Niektóre komórki w siatce mają liczby, a inne są puste, a celem jest wypełnić puste komórki. 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 w następującym formacie:

  • Dziewięć wierszy i dziewięć 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. Przykład prawidłowo skonstruowanego klastra usługi HDInsight jest dostępny. Znajduje się w /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 kwadratu jednostkowym. Kwadrat zawiera również okrąg. Prawdopodobieństwo, że punkty mieszczą się w 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. Im większa próbka użytych punktów, tym lepsze jest oszacowanie.

Użyj następującego polecenia, aby uruchomić ten przykład. To polecenie używa 16 map, każda z 10 000 000 próbek, aby oszacować wartość 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. Dla odniesienia, pierwsze 10 miejsc dziesiętnych liczby pi to 3,1415926535.

Przykład 10-GB GraySort

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

W tym przykładzie jest używane skromne 10 GB danych, dzięki czemu można je stosunkowo szybko uruchomić. Używa aplikacji MapReduce opracowanych przez Owen O'Malley i Arun Murthy. Aplikacje te wygrały roczny test porównawczy sortowania terabajtów ("Daytona") w 2009 r., ze stawką 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ę testu porównawczego sortowania .

W tym przykładzie są używane trzy zestawy programów MapReduce:

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

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

    TeraSort jest standardowym sortowaniem MapReduce, poza niestandardowym partycjonatorem. Partycjonator używa posortowanej listy kluczy próbkowanych 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 liczby 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 gwarantuje, że każdy klucz jest mniejszy lub równy poprzedniemu. Funkcja mapy generuje rekordy pierwszych i ostatnich kluczy każdego pliku. Funkcja redukcji gwarantuje, że pierwszy klucz pliku i jest większy niż ostatni klucz pliku i-1. Wszelkie problemy są zgłaszane jako wynik fazy redukcji, z kluczami, które nie są w odpowiedniej 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 w lokalizacji /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 -Dmapred.map.tasks informuje platformę Hadoop, ile zadań mapy ma być użytych w tym zadaniu. Dwa ostatnie parametry instruują zadanie, aby utworzyć 10 GB danych i zapisać je w pliku /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 -Dmapred.reduce.tasks informuje Hadoop, ile zadań redukcji powinno być użytych w zadaniu. Dwa ostatnie parametry to tylko lokalizacje wejściowe i wyjściowe dla danych.

  3. Użyj następujących elementów, 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 uzyskać samouczki dotyczące używania technologii Pig, Hive i MapReduce z usługą HDInsight, zobacz następujące tematy: