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
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 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
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
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 polega na tym, że dane wyjściowe (liczba wyrazów w dokumentach źródłowych) są przechowywane.
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.txt
pliku . 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.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 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 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:
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
.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.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: