De MapReduce-voorbeelden uitvoeren die zijn opgenomen in HDInsight

Meer informatie over het uitvoeren van de MapReduce-voorbeelden die zijn opgenomen in Apache Hadoop in HDInsight.

Vereisten

De MapReduce-voorbeelden

De voorbeelden bevinden zich in het HDInsight-cluster op /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar . De broncode voor deze voorbeelden is opgenomen in het HDInsight-cluster op /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples .

De volgende voorbeelden zijn opgenomen in dit archief:

Voorbeeld Beschrijving
aggregatewordcount Telt de woorden in de invoerbestanden.
aggregatewordhist Berekent het histogram van de woorden in de invoerbestanden.
bbp Maakt gebruik van Bailey-Borwein-Moetuffe om exacte cijfers van Pi te berekenen.
dbcount Telt de pageview-logboeken die zijn opgeslagen in een database.
distbbp Maakt gebruik van een BBP-type formule om exacte bits van Pi te berekenen.
Grep Telt de overeenkomsten van een regex in de invoer.
join Voert een join uit over gesorteerde, even gepartitiefde gegevenssets.
multifilewc Telt woorden uit verschillende bestanden.
pentomino Programma voor het opstomen van tegels om oplossingen te vinden voor pentomino-problemen.
Pi Schat Pi met behulp van een quasi-Monte Carlo-methode.
randomtextwriter Schrijft 10 GB willekeurige tekstgegevens per knooppunt.
randomwriter Schrijft 10 GB willekeurige gegevens per knooppunt.
secondarysort Hiermee definieert u een secundaire sort voor de reduce-fase.
sorteren Sorteert de gegevens die zijn geschreven door de willekeurige schrijver.
Sudoku Een probleemoploser voor afgeschafte auto's.
teragen Genereer gegevens voor de terasort.
terasort Voer de terasort uit.
teravalidate Resultaten van terasort controleren.
wordcount Telt de woorden in de invoerbestanden.
wordmean Telt de gemiddelde lengte van de woorden in de invoerbestanden.
wordmedian Telt de mediaanlengte van de woorden in de invoerbestanden.
wordstandarddeviation Telt de standaardafwijking van de lengte van de woorden in de invoerbestanden.

Het wordcount-voorbeeld uitvoeren

  1. Verbinding maken naar HDInsight met behulp van SSH. Vervang CLUSTER door de naam van uw cluster en voer de volgende opdracht in:

    ssh sshuser@CLUSTER-ssh.azurehdinsight.net
    
  2. Gebruik vanuit de SSH-sessie de volgende opdracht om de voorbeelden weer te geven:

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

    Met deze opdracht wordt de lijst met voorbeelden uit de vorige sectie van dit document gegenereerd.

  3. Gebruik de volgende opdracht om hulp te krijgen bij een specifiek voorbeeld. In dit geval is dit het voorbeeld van een wordcount:

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

    U ontvangt het volgende bericht:

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

    Dit bericht geeft aan dat u verschillende invoerpaden voor de brondocumenten kunt verstrekken. Het laatste pad is waar de uitvoer (het aantal woorden in de brondocumenten) wordt opgeslagen.

  4. Gebruik het volgende om alle woorden te tellen in de Notebooks of Wilt da Hado, die als voorbeeldgegevens bij uw cluster worden geleverd:

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

    De invoer voor deze taak wordt gelezen uit /example/data/gutenberg/davinci.txt . De uitvoer voor dit voorbeeld wordt opgeslagen in /example/data/davinciwordcount . Beide paden bevinden zich in de standaardopslag voor het cluster, niet in het lokale bestandssysteem.

    Notitie

    Zoals vermeld in de Help voor het wordcount-voorbeeld, kunt u ook meerdere invoerbestanden opgeven. Telt bijvoorbeeld 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 woorden in zowel davinci.txt als ulysses.txt.

  5. Zodra de taak is voltooid, gebruikt u de volgende opdracht om de uitvoer weer te geven:

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

    Met deze opdracht worden alle uitvoerbestanden die door de taak worden geproduceerd, samengebracht. De uitvoer wordt weergegeven in de console. De uitvoer lijkt op het volgende:

    zum     1
    zur     1
    zwanzig 1
    zweite  1
    

    Elke regel vertegenwoordigt een woord en hoe vaak het heeft plaatsgevonden in de invoergegevens.

Het Voorbeeld van De Moetoku

Hebtoku is een logische logica die bestaat uit negen 3x3-rasters. Sommige cellen in het raster hebben getallen, terwijl andere leeg zijn en het doel is om de lege cellen op te lossen. De vorige koppeling heeft meer informatie over de problemen, maar het doel van dit voorbeeld is om op te lossen voor de lege cellen. De invoer moet dus een bestand zijn met de volgende indeling:

  • Negen rijen met negen kolommen
  • Elke kolom kan een getal of ? bevatten (wat een lege cel aangeeft)
  • Cellen worden gescheiden door een spatie

Er is een bepaalde manier om Hebtoku-voorspelingen te maken; U kunt een getal in een kolom of rij niet herhalen. Er is een voorbeeld op het HDInsight-cluster dat correct is samengesteld. Deze bevindt zich in /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta en bevat de volgende 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

Gebruik de volgende opdracht om dit voorbeeldprobleem uit te voeren via het Voorbeeld van Deoku:

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

De resultaten lijken op de volgende tekst:

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-voorbeeld (π)

In het pi-voorbeeld wordt een statistische methode (quasi-Monte Carlo) gebruikt om de waarde van pi te schatten. Punten worden willekeurig geplaatst in een eenheids vierkant. Het vierkant bevat ook een cirkel. De kans dat de punten binnen de cirkel vallen, is gelijk aan het gebied van de cirkel, pi/4. De waarde van pi kan worden geschat op de waarde van 4R. R is de verhouding tussen het aantal punten in de cirkel en het totale aantal punten binnen het vierkant. Hoe groter het aantal gebruikte punten, hoe beter de schatting is.

Gebruik de volgende opdracht om dit voorbeeld uit te voeren. Deze opdracht maakt gebruik van 16 kaarten met 10.000.000 voorbeelden elk om de waarde van pi te schatten:

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

De waarde die door deze opdracht wordt geretourneerd, is vergelijkbaar met 3,1415915500000000000. Voor verwijzingen zijn de eerste 10 decimalen pi 3,1415926535.

Voorbeeld van 10 GB GraySort

GraySort is een benchmark-sort. De metrische gegevens zijn de sorteersnelheid (TB/minuut) die wordt bereikt tijdens het sorteren van grote hoeveelheden gegevens, meestal een minimum van 100 TB.

In dit voorbeeld wordt een voorzichtige 10 GB aan gegevens gebruikt, zodat deze relatief snel kunnen worden uitgevoerd. Het maakt gebruik van de MapReduce-toepassingen die zijn ontwikkeld door Moet O'Malley en Arun Murthy. Deze toepassingen hebben in 2009 de jaarlijkse benchmark voor algemeen gebruik ('Terabytes'-sorteren) gewonnen met een snelheid van 0,578 TB/min (100 TB in 173 minuten). Zie de site Sorteerbenchmark voor meer informatie over deze en andere sorteerbenchmarks.

In dit voorbeeld worden drie sets MapReduce-programma's gebruikt:

  • TeraGen: een MapReduce-programma dat rijen met gegevens genereert om te sorteren

  • TeraSort: hier worden de invoergegevens verzameld en wordt MapReduce gebruikt om de gegevens in een totale volgorde te sorteren

    TeraSort is een standaard MapReduce-sort, met uitzondering van een aangepaste partitioner. De partitioner maakt gebruik van een gesorteerde lijst met N-1-voorbeeldsleutels die het sleutelbereik voor elke vermindering definiëren. In het bijzonder worden alle sleutels, zoals het voorbeeld [i-1] <= sleutel < voorbeeld[i] verzonden om i te verminderen. Deze partitioner garandeert dat de uitvoer van reduce i allemaal kleiner is dan de uitvoer van reduce i+1.

  • TeraValidate: een MapReduce-programma dat valideert dat de uitvoer globaal is gesorteerd

    Er wordt één kaart per bestand gemaakt in de uitvoermap en elke kaart zorgt ervoor dat elke sleutel kleiner is dan of gelijk is aan de vorige. De kaartfunctie genereert records van de eerste en laatste sleutels van elk bestand. De reduce-functie zorgt ervoor dat de eerste sleutel van bestand i groter is dan de laatste sleutel van bestand i-1. Eventuele problemen worden gerapporteerd als uitvoer van de reduce-fase, met de sleutels die niet in de orde zijn.

Gebruik de volgende stappen om gegevens te genereren, te sorteren en vervolgens de uitvoer te valideren:

  1. Genereer 10 GB aan gegevens, die worden opgeslagen in de standaardopslag van het HDInsight-cluster op /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
    

    De -Dmapred.map.tasks vertelt Hadoop hoeveel maptaken er voor deze job moeten worden gebruikt. De laatste twee parameters geven de taak de opdracht om 10 GB aan gegevens te maken en op te slaan op /example/data/10GB-sort-input .

  2. Gebruik de volgende opdracht om de gegevens te sorteren:

    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
    

    De -Dmapred.reduce.tasks vertelt Hadoop hoeveel verminderingstaken voor de job moeten worden gebruikt. De laatste twee parameters zijn alleen de invoer- en uitvoerlocaties voor gegevens.

  3. Gebruik het volgende om de gegevens te valideren die door de sortering zijn gegenereerd:

    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
    

Volgende stappen

In dit artikel hebt u geleerd hoe u de voorbeelden kunt uitvoeren die zijn opgenomen in de HDInsight-clusters op basis van Linux. Zie de volgende onderwerpen voor zelfstudies over het gebruik van Pig, Hive en MapReduce met HDInsight: