Mi az a MapReduce a Hadoopban? Archiszerkezet és diagram

⚡ Okos összefoglaló

A MapReduce egy Hadoop programozási modell, amely egy nagy adathalmazt kis eredményné alakít egy map függvény futtatásával minden bemeneti osztáson, majd egy reduce függvény futtatásával a csoportosított köztes értékeken.

  • 🔘 Négy fázis: Minden feladat felosztásként, térképként futping, keverés és redukálás, a kulcs-érték párok pedig az egyes szakaszok között áramlanak.
  • ☑️ Működő példa: Három sornyi szöveg hét szóból áll, pontosan megmutatva, hogy az egyes fázisok mit jelentenek.
  • Megosztott méretezés: Bemeneti felosztásonként egy leképezési feladat fut, és a felosztási méret általában megegyezik a HDFS blokkméretével.
  • 🧪 Köztes adatok: A térkép kimenete helyi lemezre íródik HDFS helyett, mivel az eldobható adatok replikálása pazarló.
  • 🇧🇷 Koordináció: ÁllásTracker ütemezi a munkát és a feladatokatTracA kerek periodikus szívverésjeleken keresztül jelentik a haladást.
  • ⚠️ Verzió megjegyzés: A YARN ezt a párost egy ResourceManagerrel, NodeManagerekkel és egy Hadoop 2.x-ből származó, job-onkénti ApplicationMasterrel helyettesítette.

A MapReduce architektúra Hadoopban egy példával elmagyarázva

Mi az a MapReduce a Hadoopban?

A MapReduce egy szoftver keretrendszer és programozási modell, amelyet hatalmas mennyiségű adat feldolgozására használnak. A MapReduce programok két fázisban működnek, nevezetesen a Map és a Reduce fázisban. A Map feladatok a felosztással és a térképezéssel foglalkoznak.ping az adatok mennyiségét, miközben a feladatok csökkentése keveri és csökkenti az adatokat.

Hadoop képes különféle nyelveken írt MapReduce programok futtatására: Java, Ruby, Pythonés C++A MapReduce programok természetüknél fogva párhuzamosak, így nagyon hasznosak nagyméretű adatelemzés elvégzéséhez a fürtben lévő több gép használatával.

Minden fázis bemenete kulcs-érték párok. Ezenkívül minden programozónak két függvényt kell megadnia: egy map függvényt és egy reduce függvényt.

MapReduce Archia Big Data-ban a példával magyarázott szerkezet

A teljes folyamat négy végrehajtási fázison megy keresztül, nevezetesen: felosztás, térképezésping, keverés és csökkentése.

Ebben a MapReduce oktatóanyagban most egy MapReduce példával nézzük meg a használatát.

Tegyük fel, hogy a következő bemeneti adatokkal rendelkezel a MapReduce-hoz: Big adatok program:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

Az alábbi ábra tracezt a három sort minden fázison keresztül végigjátssza, a bal oldali bemeneti felosztásoktól a jobb oldali utolsó szószámig.

MapReduce architektúra diagram trachárom bemeneti sor felosztásával, leképezésévelping, keverés és redukálás

A MapReduce feladat végső kimenete az

rossz 1
Osztály 1
1
Hadoop 3
is 2
nak nek 1
Onboarding, integráció 1

Az adatok a MapReduce következő fázisain mennek keresztül a Big Data-ban.

Bemeneti felosztások

Egy Big Data MapReduce feladat bemenete fix méretű darabokra, úgynevezett bemeneti felosztásokra van osztva. A bemeneti felosztás a bemenet egy olyan része, amelyet egyetlen map használ fel.

Térképping

Ez a MapReduce program végrehajtásának legelső fázisa. Ebben a fázisban az egyes szakaszokban lévő adatok átadódnak egy map-nek.ping függvény kimeneti értékek előállításához. Példánkban a térkép feladataping A fázis az, hogy megszámoljuk az egyes szavak előfordulásainak számát a bemeneti felosztásokból (a bemeneti felosztásokról további részletek alább találhatók), és elkészítjük a következő formátumú listát: .

Keverés

Ez a fázis felhasználja a Térkép kimenetét.ping fázis. Feladata a releváns rekordok összesítése a Térképről.ping fáziskimenet. Példánkban ugyanazok a szavak vannak egymás mellé helyezve a hozzájuk tartozó gyakorisággal együtt.

csökkentő

Ebben a fázisban a keverési fázisból származó kimeneti értékek összesítésre kerülnek. Ez a fázis egyesíti a keverési fázis értékeit, és egyetlen kimeneti értéket ad vissza. Röviden, ez a fázis összegzi a teljes adathalmazt.

Példánkban ez a fázis összesíti a keverési fázisból származó értékeket, azaz kiszámítja az egyes szavak teljes előfordulását.

MapReduce Architecture részletesen kifejtve

Az alábbi pontok elmagyarázzák, hogyan helyezkednek el és tárolódnak a felosztások, a feladatok leképezése és a feladatok csökkentése a fürtön belül.

  • Minden felosztáshoz létrejön egy leképezési feladat, amely ezután végrehajtja a leképezési függvényt a felosztásban lévő minden rekordhoz.
  • Mindig előnyös több felosztást használni, mivel egy felosztás feldolgozásához szükséges idő rövidebb a teljes bemenet feldolgozásához képest. Ha a felosztások kisebbek, a feldolgozás jobban elosztott terhelésű, mivel a felosztások párhuzamosan kerülnek feldolgozásra.
  • Azonban az sem kívánatos, hogy túl kicsi felosztások legyenek. Ha a felosztások túl kicsik, a felosztások kezelésének és a térképfeladatok létrehozásának többletterhelése kezdi uralni a teljes feladatvégrehajtási időt.
  • A legtöbb feladatnál jobb, ha a felosztási méretet egy … méretével megegyezőre állítjuk be. HDFS blokk, amely a Hadoop 2.x verziótól kezdődően alapértelmezés szerint 128 MB-ra van beállítva (a Hadoop 1.x verzióban 64 MB volt), és amelyet a dfs.blocksize ingatlan.
  • A map feladatok végrehajtása a kimenet írását a megfelelő csomóponton lévő helyi lemezre, és nem a HDFS-be eredményezi.
  • A helyi lemez HDFS helyetti választásának oka az, hogy elkerüljük a HDFS tárolási művelet során bekövetkező replikációt.
  • A térképkimenet egy köztes kimenet, amelyet redukciós feladatokkal dolgoznak fel a végső kimenet létrehozása érdekében.
  • A munka befejezése után a térképkimenet kidobható. Így HDFS-ben való tárolása replikációval túlzásba esik.
  • Csomóponthiba esetén, mielőtt a leképezési kimenetet felhasználná a redukciós feladat, a Hadoop újrafutja a leképezési feladatot egy másik csomóponton, és újra létrehozza a leképezési kimenetet.
  • A Reduce taskok nem az adatlokalitás elvén működnek. Minden map task kimenete a reduce taskba kerül. A map kimenete átkerül arra a gépre, amelyen a reduce task fut.
  • Ezen a gépen a kimenetet egyesíti, majd átadja a felhasználó által meghatározott csökkentő funkciónak.
  • A map kimenettel ellentétben a reduce kimenet HDFS-ben tárolódik (az első replika a helyi csomóponton, a többi replika pedig racken kívüli csomópontokon tárolódik). Tehát a reduce kimenet írása hálózati sávszélességet fogyaszt, de csak annyit, mint egy normál HDFS írási folyamat.

Hogyan működik a MapReduce Organizes?

Ebben a MapReduce oktatóanyagban most megtudjuk, hogyan működik a MapReduce.

A Hadoop a feladatokat feladatokra osztja. Kétféle feladat létezik:

  1. Térképfeladatok (Részek és Térképping)
  2. Feladatok csökkentése (keverés, csökkentése)

A teljes végrehajtási folyamatot, azaz mind a Map, mind a Reduce feladatok végrehajtását, kétféle entitás vezérli, az úgynevezett:

  1. MunkaTracker: mesterként viselkedik, és felelős a beküldött munkafolyamat teljes végrehajtásáért.
  2. Több feladatTrackers: rabszolgaként viselkednek, mindegyikük elvégzi a munka egy részét.

Minden végrehajtásra beküldött feladathoz tartozik egy a rendszerben végrehajtandó feladat.Tracker, amely a NameNode-on található, és több Task is vanTraca DataNode-okon található ker-ek.

Jegyzet: a MunkaTracker és FeladatTracA ker pár a MapReduce 1-es verziójához tartozik (Hadoop 1.x). A Hadoop 2.x-től kezdődően a YARN ezeket a feladatokat egy klaszterszintű ResourceManager, minden csomóponton található NodeManager és jobonként egy ApplicationMaster között osztja fel, bár maguk a leképezési, keverési és csökkentési fázisok változatlanok maradnak.

Az alábbi ábra azt mutatja, hogyan bontható fel egy beküldött munka feladataira és tracátrepült a fürtön.

Diagram, amely egy feladatot térképre és csökkentési feladatokra oszt traca Munka által bánvaTracker és FeladatTraccseresznye

  • Egy feladatot több feladatra osztanak, amelyeket aztán egy fürt több adatcsomópontján futtatnak.
  • Ez a munkakör felelőssége tracker a tevékenység koordinálására a feladatok különböző adatcsomópontokon történő futtatásának ütemezésével.
  • Egy adott feladat végrehajtását ezután a feladat felügyeli. tracker, amely a feladat részét végrehajtó minden adatcsomóponton található.
  • A feladat tracA ker felelőssége, hogy elküldje a haladásról szóló jelentést a munkának. tracker.
  • Ezenkívül a feladat tracA ker periodikusan „szívverés” jelet küld a JobnakTracker, hogy értesítse a rendszer aktuális állapotáról.
  • Így a munka tracker tartja track az egyes feladatok teljes előrehaladásáról. Feladathiba esetén a feladat tracA ker átütemezheti egy másik feladatra tracker.

GYIK

A YARN a Hadoop 2.x-től kezdve ezt tette. Egy klaszterszintű ResourceManager kezeli az ütemezést, minden csomóponton fut egy NodeManager, és feladatonként egy ApplicationMaster. tracks feladatait. A térképezés és a csökkentés fázisai változatlanok.

A korábbi feladatok előzményein alapuló modellek megjósolják a futási időt, javaslatot tesznek a felosztási méretekre és a redukálók számára, valamint korán észlelik az eltérést. Emellett figyelik a számlálók értékeit, és a futás befejezése előtt jelzik a szokatlanul lassú vagy sikertelen feladatokat.

A Copilot jól kezeli az állványozást: a leképező és reduktor aláírásokat, a generikus kódokat, az importálásokat és az illesztőprogram-konfigurációs hívásokat. Sémadöntések, például, hogy melyik mező a csoport.ping kulcs, továbbra is kell egy fejlesztő, aki ismeri az adatokat.

Egy gyakori kiindulópont, hogy a rendelkezésre álló csökkentési helyek száma valamivel kevesebb, így minden csökkentő egyetlen hullámban fut. Túl kevés hoz létre hosszú farkakat; túl sok sok apró kimeneti fájlt hoz létre.

A kombináló egy opcionális mini reduktor, amely a térkép kimenetén fut, mielőtt az áthaladna a hálózaton. Jelentősen csökkenti a véletlenszerű forgalmat, de csak akkor használható, ha a reduce művelet asszociatív és kommutatív is.

Spark A köztes eredményeket a memóriában tárolja, és a feladatokat egyetlen irányított, szakaszokból álló gráfként fejezi ki, míg a MapReduce a fázisok között lemezre írja a köztes kimenetet. Spark ezért sokkal gyorsabb az iteratív munka.

A particionáló dönti el, hogy melyik reduktor kapja meg az egyes köztes kulcsokat, alapértelmezés szerint a kulcsot a reduktorok száma alapján hashelve. Egyéni kód kerül írásra, ha a hash egyetlen reduktort túlterhel.

A Hadoop bemeneti felosztásonként egy leképezési feladatot hoz létre, és a felosztás egy bájttartományt jelent, nem pedig egy egész fájlt. Egy nagy fájl sok felosztást eredményez; sok kis fájl apró, nem hatékony leképezési feladatokat eredményez.

Foglald össze ezt a bejegyzést a következőképpen: