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
Egy Apache Hadoop-fürt a HDInsighton. Lásd: A HDInsight használatának első lépései Linux rendszeren.
Egy SSH-ügyfél. További információért lásd: Csatlakozás a HDInsighthoz (Apache Hadoop) SSH-val.
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
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
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.
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.
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á.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 4R
becsü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'Malley
Arun Murthy
MapReduce 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ési+1
kimenete.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:
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
: .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.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: