Kör MapReduce-exemplen som ingår i HDInsight
Lär dig hur du kör MapReduce-exempel som ingår i Apache Hadoop på HDInsight.
Förutsättningar
Ett Apache Hadoop-kluster i HDInsight. Se Kom igång med HDInsight på Linux.
En SSH-klient. Mer information finns i Ansluta till HDInsight (Apache Hadoop) med hjälp av SSH.
MapReduce-exemplen
Exemplen finns i HDInsight-klustret på /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar . Källkoden för dessa exempel ingår i HDInsight-klustret på /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples .
Följande exempel finns i det här arkivet:
| Exempel | Beskrivning |
|---|---|
| aggregatewordcount | Räknar orden i indatafilerna. |
| aggregatewordhist | Beräknar histogrammet för orden i indatafilerna. |
| Bbp | Använder Bailey-Borwein-Plouffe för att beräkna exakta siffror för Pi. |
| dbcount | Räknar sidvisningsloggarna som lagras i en databas. |
| distbbp | Använder en BBP-typformel för att beräkna exakta bitar pi. |
| Grep | Räknar matchningarna för ett regex i indata. |
| join | Utför en koppling över sorterade, lika partitionerade datauppsättningar. |
| multifilewc | Räknar ord från flera filer. |
| pentomino | Panelkartläggningsprogram för att hitta lösningar på pentomino-problem. |
| Pi | Beräknar Pi med en kvasi-Monte Carlo-metod. |
| randomtextwriter | Skriver 10 GB slumpmässiga textdata per nod. |
| randomwriter | Skriver 10 GB slumpmässiga data per nod. |
| secondarysort | Definierar en sekundär sortering till reduce-fasen. |
| sortera | Sorterar de data som skrivits av den slumpmässiga skrivaren. |
| Sudoku | En sudoku-lösare. |
| teragen | Generera data för terasort. |
| terasort | Kör terasort. |
| teravalidate | Kontrollera resultatet av terasort. |
| wordcount | Räknar orden i indatafilerna. |
| wordmean | Räknar den genomsnittliga längden på orden i indatafilerna. |
| wordmedian | Räknar medianlängden för orden i indatafilerna. |
| wordstandarddeviation | Räknar standardavvikelsen för längden på orden i indatafilerna. |
Kör wordcount-exemplet
Anslut till HDInsight med SSH. Ersätt
CLUSTERmed namnet på klustret och ange sedan följande kommando:ssh sshuser@CLUSTER-ssh.azurehdinsight.netFrån SSH-sessionen använder du följande kommando för att lista exemplen:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jarDet här kommandot genererar listan med exempel från föregående avsnitt i det här dokumentet.
Använd följande kommando för att få hjälp med ett specifikt exempel. I det här fallet är wordcount-exemplet:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcountDu får följande meddelande:
Usage: wordcount <in> [<in>...] <out>Det här meddelandet anger att du kan ange flera indatasökvägar för källdokumenten. Den sista sökvägen är den plats där utdata (antal ord i källdokumenten) lagras.
Använd följande om du vill räkna alla ord i Notebooks ofString da Count, som tillhandahålls som exempeldata med ditt kluster:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/davinciwordcountIndata för det här jobbet läses från
/example/data/gutenberg/davinci.txt. Utdata för det här exemplet lagras i/example/data/davinciwordcount. Båda sökvägarna finns i standardlagringsplatsen för klustret, inte i det lokala filsystemet.Anteckning
Som anges i hjälpen för wordcount-exemplet kan du också ange flera indatafiler. Till exempel
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/twowordcountskulle räkna ord i både davinci.txt och ulysses.txt.När jobbet har slutförts använder du följande kommando för att visa utdata:
hdfs dfs -cat /example/data/davinciwordcount/*Det här kommandot sammanfogar alla utdatafiler som skapas av jobbet. Utdata visas i konsolen. De utdata som genereras liknar följande text:
zum 1 zur 1 zwanzig 1 zweite 1Varje rad representerar ett ord och hur många gånger det inträffade i indata.
Sudoku-exemplet
Sudoku är en logiksnabb som består av nio 3x3-rutnät. Vissa celler i rutnätet har siffror, medan andra är tomma och målet är att lösa de tomma cellerna. Föregående länk innehåller mer information om spelet, men syftet med det här exemplet är att lösa de tomma cellerna. Därför bör våra indata vara en fil som har följande format:
- Nio rader med nio kolumner
- Varje kolumn kan innehålla antingen ett tal
?eller (vilket anger en tom cell) - Celler avgränsas med ett blanksteg
Det finns ett visst sätt att konstruera Sudoku-åtgärder. du kan inte upprepa ett tal i en kolumn eller rad. Det finns ett exempel på HDInsight-klustret som är korrekt konstruerat. Den finns på /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta och innehåller följande 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
Om du vill köra det här exempelproblemet via Sudoku-exemplet använder du följande kommando:
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
Resultatet ser ut ungefär så här:
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-exempel (π)
Pi-exemplet använder en statistisk metod (kvasi-Monte Carlo) för att uppskatta värdet för pi. Punkter placeras slumpmässigt i en enhet i kvadrat. Kvadraten innehåller också en cirkel. Sannolikheten att punkterna faller inom cirkeln är lika med arean för cirkeln, pi/4. Värdet för pi kan beräknas från värdet 4R. R är förhållandet mellan antalet punkter i cirkeln och det totala antalet punkter som finns inom kvadraten. Ju större urval av punkter som används, desto bättre är uppskattningen.
Använd följande kommando för att köra det här exemplet. Det här kommandot använder 16 kartor med 10 000 000 exempel vardera för att uppskatta värdet för pi:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 16 10000000
Värdet som returneras av det här kommandot liknar 3.141591550000000000000. För referenser är de första 10 decimalerna av pi 3,1415926535.
10 GB GraySort-exempel
GraySort är en benchmark-sortering. Måttet är den sorteringsfrekvens (TB/minut) som uppnås när stora mängder data sorteras, vanligtvis minst 100 TB.
I det här exemplet används en liten mängd 10 GB data så att de kan köras relativt snabbt. Den använder MapReduce-program som utvecklats avUkt O'Malley och Arun Murthy. Dessa program vann det årliga sorteringstestet för generell användning ("Daytona") terabyte 2009, med en frekvens på 0,578 TB/min (100 TB på 173 minuter). Mer information om detta och andra sorteringstestvärden finns på webbplatsen Sort Benchmark (Sortera benchmark).
Det här exemplet använder tre uppsättningar MapReduce-program:
TeraGen: Ett MapReduce-program som genererar rader med data som ska sorteras
TeraSort: Exempel på indata och använder MapReduce för att sortera data i en total ordning
TeraSort är en vanlig MapReduce-sortering, förutom en anpassad partitionerare. Partitioneraren använder en sorterad lista med N-1-sampelnycklar som definierar nyckelintervallet för varje reduce. I synnerhet skickas alla nycklar som exempel[i-1] <= key < sample[i] för att minska i. Den här partitioneraren garanterar att utdata för reduce i är mindre än utdata för reduce i+1.
TeraValidate: Ett MapReduce-program som validerar att utdata sorteras globalt
Den skapar en karta per fil i utdatakatalogen, och varje mappning säkerställer att varje nyckel är mindre än eller lika med den föregående. Map-funktionen genererar poster för de första och sista nycklarna i varje fil. Reduce-funktionen ser till att den första nyckeln i filen i är större än den sista nyckeln i filen i-1. Eventuella problem rapporteras som utdata från reduce-fasen med de nycklar som är i fel ordning.
Använd följande steg för att generera data, sortera och verifiera sedan utdata:
Generera 10 GB data som lagras till HDInsight-klustrets standardlagring på
/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-Dmapred.map.taskstalar om för Hadoop hur många map-uppgifter som ska användas för det här jobbet. De sista två parametrarna instruerar jobbet att skapa 10 GB data och lagra dem på/example/data/10GB-sort-input.Använd följande kommando för att sortera data:
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-Dmapred.reduce.taskstalar om för Hadoop hur många reduce-uppgifter som ska användas för jobbet. De sista två parametrarna är bara indata- och utdataplatserna för data.Använd följande för att verifiera de data som genereras av sorteringen:
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
Nästa steg
I den här artikeln har du lärt dig hur du kör exemplen som ingår i Linux-baserade HDInsight-kluster. Självstudier om hur du använder Pig, Hive och MapReduce med HDInsight finns i följande avsnitt: