Futtassa a HDInsightban található MapReduce-példákat

Ismerje meg, hogyan futtathatja az Apache Hadoop on HDInsight MapReduce-példáit.

Előfeltételek

A MapReduce példái

A minták a HDInsight-fürtön találhatók a következő helyen: /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar. Ezeknek a mintáknak a forráskódja a KÖVETKEZŐ HDInsight-fürtben található: /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples.

Az archívum a következő mintákat tartalmazza:

Sample Leírás
aggregatewordcount Megszámolja a bemeneti fájlokban lévő szavakat.
aggregátumszó Kiszámítja a bemeneti fájlokban lévő szavak hisztogramját.
bbp Bailey-Borwein-Plouffe használatával számítja ki a Pi pontos számjegyeit.
dbcount Megszámolja az adatbázisban tárolt lapmegtekintés-naplókat.
distbbp BBP-típusú képletet használ a Pi pontos bitjeinek kiszámításához.
Grep Megszámlálja egy regex egyezését a bemenetben.
csatlakozás Rendezve, egyenlően particionált adathalmazokon keresztül hajt végre illesztést.
multifilewc Több fájlból származó szavakat számlál meg.
pentomino Csempefektetési program a pentomino-problémák megoldásához.
Pi A Pi becslése kvázi Monte Carlo-módszerrel.
randomtextwriter Csomópontonként 10 GB véletlenszerű szöveges adatot ír.
randomwriter Csomópontonként 10 GB véletlenszerű adatot ír.
secondarysort Másodlagos rendezést határoz meg a csökkentési fázishoz.
Rendezés A véletlenszerű író által írt adatok rendezése.
Sudoku Egy sudoku solver.
teragen Adatok létrehozása a terasorthoz.
terasort Futtassa a terasort.
teravalidate A terasort eredményeinek ellenőrzése.
wordcount Megszámolja a bemeneti fájlokban lévő szavakat.
wordmean Megszámolja a bemeneti fájlokban lévő szavak átlagos hosszát.
wordmedian Megszámolja a bemeneti fájlokban lévő szavak mediánhosszát.
wordstandarddeviation Megszámolja a bemeneti fájlokban lévő szavak hosszának szórását.

Futtassa a példaszót

  1. Csatlakozzon a HDInsighthoz SSH használatával. Cserélje le CLUSTER a elemet a fürt nevére, majd írja be a következő parancsot:

    ssh sshuser@CLUSTER-ssh.azurehdinsight.net
    
  2. Az SSH-munkamenetben a következő paranccsal listázhatja a mintákat:

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

    Ez a parancs létrehozza a dokumentum előző szakaszából származó mintalistát.

  3. Az alábbi paranccsal kérhet segítséget egy adott mintához. Ebben az esetben a szószámminta :

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

    A következő üzenet érkezik:

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

    Ez az üzenet azt jelzi, hogy több bemeneti útvonalat is megadhat a forrásdokumentumokhoz. A végső elérési út a kimenet (a forrásdokumentumokban lévő szavak száma) tárolása.

  4. Az alábbiak segítségével megszámolhatja a Leonardo da Vinci jegyzetfüzeteiben szereplő összes szót, amelyek mintaadatokként vannak megadva a fürthöz:

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

    A feladat bemenetét a rendszer a következőből olvassa be: /example/data/gutenberg/davinci.txt. A példa kimenete a következő helyen található: /example/data/davinciwordcount. Mindkét elérési út a fürt alapértelmezett tárolójában található, nem a helyi fájlrendszerben.

    Megjegyzés

    Ahogy a wordcount-minta súgójában is szerepel, több bemeneti fájlt is megadhat. Például a 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 szavakat davinci.txt és ulysses.txt is megszámolná.

  5. A feladat befejezése után a következő paranccsal tekintheti meg a kimenetet:

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

    Ez a parancs összefűzi a feladat által létrehozott összes kimeneti fájlt. Megjeleníti a konzol kimenetét. A kimenet az alábbi szöveghez hasonló:

    zum     1
    zur     1
    zwanzig 1
    zweite  1
    

    Minden sor egy szót jelöl, és azt, hogy hányszor fordult elő a bemeneti adatokban.

A Sudoku-példa

A Sudoku egy logikai puzzle, amely kilenc 3x3 rácsból áll. A rács egyes cellái számokból állnak, míg mások üresek, a cél pedig az üres cellák megoldása. Az előző hivatkozás több információt tartalmaz a rejtvényről, de a minta célja az üres cellák megoldása. A bemenetnek tehát a következő formátumú fájlnak kell lennie:

  • Kilenc sornyi kilenc oszlopból
  • Minden oszlop tartalmazhat számot vagy ? (amely üres cellát jelöl)
  • A cellákat szóköz választja el egymástól

Van egy bizonyos módja annak, hogy hozzon létre Sudoku rejtvények; oszlopban vagy sorban lévő szám nem ismételhető meg. Van egy példa a HDInsight-fürtre, amely megfelelően van felépítve. A következő helyen található /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta , és a következő szöveget tartalmazza:

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

A példában szereplő probléma Sudoku-példán keresztüli futtatásához használja a következő parancsot:

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

Az eredmények az alábbi szöveghez hasonlóan jelennek meg:

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

Példa Pi (π)

A pi minta statisztikai (quasi-Monte Carlo) módszerrel becsüli meg a pi értékét. A pontok véletlenszerűen kerülnek egy egység négyzetébe. A négyzet egy kört is tartalmaz. Annak valószínűsége, hogy a pontok a körön belül esnek, egyenlő a kör területével( pi/4). A pi értéke a értékéből 4Rbecsülhető meg. R a körön belüli pontok számának és a négyzeten belüli pontok teljes számának aránya. Minél nagyobb a felhasznált pontok mintája, annál jobb a becslés.

A minta futtatásához használja az alábbi parancsot. Ez a parancs 16 térképet és 10 000 000 mintát használ a pi értékének becsléséhez:

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

A parancs által visszaadott érték a 3.14159150000000000000 értékhez hasonló. Hivatkozások esetén a pi első 10 tizedesjegye 3,1415926535.

10 GB-os GraySort-példa

A GraySort egy benchmark-rendezés. A metrika az a rendezési sebesség (TB/perc), amely nagy mennyiségű adat rendezésekor érhető el, általában legalább 100 TB.

Ez a minta szerény, 10 GB-os adatot használ, így viszonylag gyorsan futtatható. A és által fejlesztett Owen O'MalleyArun MurthyMapReduce alkalmazásokat használja. Ezek az alkalmazások 2009-ben nyerték el az éves általános célú ("Daytona") terabyte rendezési teljesítményt, amelynek sebessége 0,578 TB/perc (100 TB 173 perc alatt). További információ erről és más rendezési teljesítménytesztekről: A teljesítményteszt rendezése webhely.

Ez a minta a MapReduce-programok három készletét használja:

  • TeraGen: Egy MapReduce-program, amely sorokat hoz létre a rendezéshez

  • TeraSort: A bemeneti adatok mintái, és a MapReduce használatával rendezi az adatokat teljes sorrendbe

    A TeraSort egy szabványos MapReduce-rendezés, kivéve egy egyéni particionálót. A particionáló az N-1 mintakulcsok rendezett listáját használja, amelyek meghatározzák az egyes csökkentések kulcstartományát. Különösen az összes olyan kulcs, mint a minta[i-1] <= kulcsminta < [i] küldése az i csökkentéséhez. Ez a particionáló garantálja, hogy a csökkentés i kimenete mind kisebb, mint a csökkentés i+1kimenete.

  • TeraValidate: Egy MapReduce-program, amely ellenőrzi, hogy a kimenet globálisan rendezve van-e

    Fájlonként egy térképet hoz létre a kimeneti könyvtárban, és minden leképezés biztosítja, hogy minden kulcs kisebb vagy egyenlő legyen az előzőnél. A térképfüggvény az egyes fájlok első és utolsó kulcsának rekordjait hozza létre. A csökkentési függvény biztosítja, hogy az i fájl első kulcsa nagyobb legyen, mint az i-1 fájl utolsó kulcsa. A problémákat a rendszer a csökkentési fázis kimeneteként jelenti, és a kulcsok nem megfelelőek.

Az alábbi lépésekkel hozhat létre adatokat, rendezheti és érvényesítheti a kimenetet:

  1. Hozzon létre 10 GB adatot, amelyet a HDInsight-fürt alapértelmezett tárolójában tárol a következő helyen /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
    

    A -Dmapred.map.tasks parancs azt jelzi a Hadoopnak, hogy hány leképezési feladatot használjon ehhez a feladathoz. Az utolsó két paraméter arra utasítja a feladatot, hogy hozzon létre 10 GB adatot, és tárolja a következő helyen /example/data/10GB-sort-input: .

  2. Az adatok rendezéséhez használja az alábbi parancsot:

    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
    

    A -Dmapred.reduce.tasks parancs azt jelzi a Hadoopnak, hogy hány csökkentési tevékenységet kell használnia a feladathoz. Az utolsó két paraméter csak az adatok bemeneti és kimeneti helye.

  3. A rendezés által létrehozott adatok ellenőrzéséhez használja az alábbiakat:

    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
    

Következő lépések

Ebből a cikkből megtanulta, hogyan futtathatja a Linux-alapú HDInsight-fürtökben található mintákat. A Pig, a Hive és a MapReduce HDInsighttal való használatáról az alábbi témakörökben talál oktatóanyagokat: