Mi az a csatlakozás a Mapreduce-ban?
A Mapreduce Join műveletet két nagy adatkészlet egyesítésére használják. Ehhez a folyamathoz azonban sok kódot kell írni a tényleges csatlakozási művelet végrehajtásához. Két adatkészlet összekapcsolása az egyes adatkészletek méretének összehasonlításával kezdődik. Ha az egyik adatkészlet kisebb, mint a másik adatkészlet, akkor kisebb adatkészlet kerül elosztásra a fürt minden adatcsomópontjára.
Miután elosztották a MapReduce-ban egy csatlakozást, a Mapper vagy a Reducer a kisebb adatkészletet használja a nagy adathalmazból származó rekordok keresésének megkeresésére, majd ezeket a rekordokat egyesítve alkotja a kimeneti rekordokat.
Ebben az oktatóanyagban megtanulja-
- Mi az a csatlakozás a MapReduce-ban?
- A csatlakozás típusai
- Két adatkészlet összekapcsolása: MapReduce példa
- Mi az a számláló a MapReduce-ban?
- A MapReduce számlálók típusai
- Pultok
A csatlakozás típusai
A tényleges csatlakozás helyétől függően a Hadoop-ban történt csatlakozásokat
1. Térképoldali összekapcsolás - Amikor az összekapcsolást a térképező végzi, akkor térképoldali összekapcsolásnak hívják. Ennél a típusnál az összekapcsolást azelőtt hajtják végre, hogy a térképfunkció ténylegesen felemésztené az adatokat. Kötelező, hogy az egyes térképek bemenete partíció formájában legyen, és rendezett sorrendben legyen. Emellett ugyanannyi partíciónak kell lennie, és a csatlakozási kulcs szerint kell rendezni.
2. Redukciós oldalsó csatlakozás - Ha az összekötést a reduktor végzi, akkor redukciós oldali csatlakozásnak hívják. Ebben a csatlakozásban nincs szükség strukturált (vagy particionált) adatkészletre.
Itt a térképoldali feldolgozás mindkét táblázat csatlakozási kulcsát és megfelelő sorrendjét bocsátja ki. Ennek a feldolgozásnak az eredményeként az összes azonos csatlakozási kulccsal rendelkező sorrend ugyanabba a szűkítőbe esik, amely aztán ugyanazzal a csatlakozási kulccsal egyesíti a rekordokat.
A Hadoop-ban történő csatlakozások teljes folyamatát az alábbi ábra szemlélteti.
Két adatkészlet összekapcsolása: MapReduce példa
Két adatsor van két különböző fájlban (az alább látható). A Key Dept_ID azonos mindkét fájlban. A cél a MapReduce Join használata ezeknek a fájloknak az egyesítéséhez
Bemenet: A bemeneti adatkészlet egy txt fájl, a DeptName.txt és a DepStrength.txt
Töltse le a bemeneti fájlokat innen
Győződjön meg arról, hogy telepítette a Hadoop programot. Mielőtt elkezdené a tényleges MapReduce Join példa folyamatát, változtassa meg a felhasználót „hduser” -re (a Hadoop konfiguráció közben használt azonosítót válthat a Hadoop konfiguráció során használt felhasználói azonosítóra).
su - hduser_
1. lépés: Másolja a zip fájlt a kívánt helyre
2. lépés: Tömörítse ki a ZIP fájlt
sudo tar -xvf MapReduceJoin.tar.gz
3. lépés: Lépjen a MapReduceJoin / könyvtárba
cd MapReduceJoin/
4. lépés: Indítsa el a Hadoop alkalmazást
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
5. lépés: A DeptStrength.txt és a DeptName.txt a MapReduce Join példa programhoz használt bemeneti fájlok.
Ezeket a fájlokat át kell másolni a HDFS-be az alábbi parancsok használatával:
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /
6. lépés: Futtassa a programot az alábbi parancs segítségével:
$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin
7. lépés: A végrehajtás után a kimeneti fájl (neve „part-00000”) a HDFS / output_mapreducejoin könyvtárában lesz tárolva
Az eredmények a parancssori felület használatával láthatók
$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000
Az eredmények egy webes felületen keresztül is megtekinthetők
Most válassza a "Tallózás a fájlrendszerben" lehetőséget, és navigáljon a upto / output_mapreducejoin elemre
Nyissa meg az r-00000 részt
Az eredmények láthatók
MEGJEGYZÉS: Kérjük, vegye figyelembe, hogy a program következő futtatása előtt törölnie kell a kimeneti könyvtárat / output_mapreducejoin
$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin
Alternatív megoldásként a kimeneti könyvtár másik nevét kell használni.
Mi az a számláló a MapReduce-ban?
A MapReduce számlálója egy olyan mechanizmus, amelyet a MapReduce munkákkal és eseményekkel kapcsolatos statisztikai információk gyűjtésére és mérésére használnak. A számlálók nyomon követik a különféle munkastatisztikákat a MapReduce-ban, a műveletek számának és a művelet előrehaladásának függvényében. A számlálókat a probléma diagnosztizálására használják a MapReduce alkalmazásban.
A Hadoop számlálók hasonlóak ahhoz, mint ha naplóüzenetet helyezünk a térkép kódjába vagy kicsinyítjük. Ezek az információk hasznosak lehetnek a MapReduce feladatfeldolgozás problémájának diagnosztizálásához.
Ezeket a Hadoop számlálókat általában egy program határozza meg (térkép vagy kicsinyítés), és a végrehajtás során növekszik, amikor egy adott esemény (az adott számlálóra jellemző) bekövetkezik. A Hadoop számlálók nagyon jó alkalmazása az érvényes és érvénytelen rekordok nyomon követése egy bemeneti adatkészletből.
A MapReduce számlálók típusai
Alapvetően kétféle MapReduce számláló létezik
- Hadoop beépített számlálók: Vannak beépített Hadoop számlálók, amelyek munkánként léteznek. Az alábbiakban beépített számlálócsoportok találhatók
- MapReduce Task Counters - Feladatspecifikus információkat (például a bemeneti rekordok számát) gyűjt a végrehajtási ideje alatt.
- FileSystem számlálók - információkat gyűjt, például egy feladat által olvasott vagy írt bájtok számát
- FileInputFormat Counters - Számos bájt információt gyűjt a FileInputFormat segítségével
- FileOutputFormat számlálók - A FileOutputFormat segítségével írt bájtok számát gyűjti
- Job Counters - Ezeket a számlálókat a JobTracker használja. Az általuk gyűjtött statisztikák tartalmazzák például a munkához indított feladatok számát.
- Felhasználó által definiált számlálók
A beépített számlálók mellett a felhasználó meghatározhatja saját számlálóit a programozási nyelvek által biztosított hasonló funkciók felhasználásával. Például a Java-ban az „enum” -ot használják a felhasználó által meghatározott számlálók meghatározására.
Pultok
Példa MapClass számlálókkal a hiányzó és érvénytelen értékek számának megszámolására. Az oktatóanyagban használt bemeneti adatfájl A bemeneti adatkészletünk egy CSV fájl, a SalesJan2009.csv
public static class MapClassextends MapReduceBaseimplements Mapper{static enum SalesCounters { MISSING, INVALID };public void map ( LongWritable key, Text value,OutputCollector output,Reporter reporter) throws IOException{//Input string is split using ',' and stored in 'fields' arrayString fields[] = value.toString().split(",", -20);//Value at 4th index is country. It is stored in 'country' variableString country = fields[4];//Value at 8th index is sales data. It is stored in 'sales' variableString sales = fields[8];if (country.length() == 0) {reporter.incrCounter(SalesCounters.MISSING, 1);} else if (sales.startsWith("\"")) {reporter.incrCounter(SalesCounters.INVALID, 1);} else {output.collect(new Text(country), new Text(sales + ",1"));}}}
A fenti kódrészlet a számlálók példáját mutatja be a Hadoop Map Reduce alkalmazásban.
Itt a SalesCounters az „enum” használatával definiált számláló . A hiányzó és érvénytelen bemeneti rekordok számlálására szolgál .
Ha a kódrészletben az „ország” mező nulla hosszúságú, akkor az értéke hiányzik, ezért a megfelelő SalesCounters.MISSING számláló növekszik.
Ezután, ha az "értékesítés" mező "" -nel kezdődik, akkor a rekord érvénytelen. Ezt a SalesCounters.INVALID számláló növekménye jelzi .