Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak uruchamiać przykłady usługi MapReduce zawarte w usłudze Apache Hadoop w usłudze HDInsight.
Wymagania wstępne
Klaster Apache Hadoop w usłudze HDInsight. Zobacz Wprowadzenie do usługi HDInsight w systemie Linux.
Klient SSH. Aby uzyskać więcej informacji, zobacz Łączenie się z usługą HDInsight (Apache Hadoop) przy użyciu protokołu SSH.
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
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
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.
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).
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.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 redukcjii+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:
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
.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.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: