Hadoop MapReduce Csatlakozás & Számláló a példával

Tartalomjegyzék:

Anonim

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.

Csatlakozások típusai a Hadoop MapReduce-ban

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

1. fájl
2. fájl

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

    1. 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.
    2. 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 .