Mis on Hadoopis MapReduce? Archistruktuur ja diagramm

โšก Nutikas kokkuvรตte

MapReduce on Hadoopi programmeerimismudel, mis muudab suure andmestiku vรคikeseks tulemuseks, kรคivitades iga sisendjaotuse peal kaardifunktsiooni ja seejรคrel rรผhmitatud vahevรครคrtuste peal redutseerimisfunktsiooni.

  • ๐Ÿ”˜ Neli faasi: Iga tรถรถ toimib jagamisena, kaartping, segades ja vรคhendades, kusjuures vรตtme-vรครคrtuse paarid liiguvad iga etapi vahel.
  • โ˜‘๏ธ Tรถรถtatud nรคide: Kolmest tekstireast saab seitsme sรตna pikkune tekst, mis nรคitab tรคpselt, mida iga etapp annab.
  • โœ… Jagatud suurus: Iga sisendjaotuse kohta kรคivitatakse รผks kaardistamisรผlesanne ja jaotuse suurus vastab tavaliselt HDFS-ploki suurusele.
  • ๐Ÿงช Vaheandmed: Kaardi vรคljund kirjutatakse kohalikule kettale, mitte HDFS-ile, sest รผhekordsete andmete replikeerimine on raiskav.
  • ๐Ÿ› ๏ธ Koordineerimine: TรถรถkohtTracker ajastab tรถรถ ja รผlesandedTracKasutajad annavad edusammudest teada perioodiliste sรผdamelรถรถkide signaalide kaudu.
  • โš ๏ธ Versiooni mรคrkus: YARN asendas selle paari Hadoop 2.x-st pรคrit ResourceManageri, NodeManagerite ja tรถรถkohapรตhise ApplicationMasteriga.

Hadoopi MapReduce'i arhitektuuri nรคite abil selgitatud

Mis on Hadoopis MapReduce?

MapReduce on tarkvararaamistik ja programmeerimismudel, mida kasutatakse suurte andmemahtude tรถรถtlemiseks. MapReduce'i programmid tรถรถtavad kahes etapis, nimelt kaardistamises ja vรคhendamises. Kaardistamisรผlesanded tegelevad jagamise ja kaardistamisega.ping andmete kogust, samal ajal kui รผlesannete vรคhendamine segab ja vรคhendab andmeid.

hadoop on vรตimeline kรคivitama MapReduce'i programme, mis on kirjutatud erinevates keeltes: Java, Rubiin, Pythonja C++MapReduce'i programmid on oma olemuselt paralleelsed, seega on need vรคga kasulikud suuremahulise andmeanalรผรผsi tegemiseks, kasutades klastris mitut masinat.

Iga faasi sisendiks on vรตtme-vรครคrtuse paarid. Lisaks peab iga programmeerija mรครคrama kaks funktsiooni: kaardistamisfunktsiooni ja vรคhendamisefunktsiooni.

MapReduce ArchiBig Data'i struktuuri, mida on selgitatud nรคitega

Kogu protsess lรคbib neli teostusfaasi, nimelt jagamine, kaardistamineping, segamine ja vรคhendamine.

Nรผรผd selles MapReduce'i รตpetuses mรตistame seda MapReduce'i nรคite abil.

Oletame, et teil on MapReduce'i jaoks jรคrgmised sisendandmed: Big andmed programm:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

Allolev diagramm trackasutab neid kolme rida igas faasis, alates vasakul asuvatest sisendjaotustest kuni paremal asuvate viimaste sรตnade arvuni.

MapReduce'i arhitektuuri diagramm trackolme sisendrea jagamine ja kaardistamineping, segamine ja vรคhendamine

MapReduce'i รผlesande lรตplik vรคljund on

halb 1
klass 1
hea 1
hadoop 3
is 2
et 1
Tere tulemast! 1

Andmed lรคbivad suurandmetes jรคrgmised MapReduce'i etapid.

Sisendjaotused

Suurandmete MapReduce'i tรถรถ sisend jagatakse fikseeritud suurusega osadeks, mida nimetatakse sisendjaotusteks. Sisendijaotis on sisendi osa, mida รผks kaart kasutab.

kaartping

See on MapReduce'i programmi kรคivitamise kรตige esimene etapp. Selles etapis edastatakse iga jaotuse andmed kaardile.ping funktsioon vรคljundvรครคrtuste loomiseks. Meie nรคites on kaardi รผlesanneping etapp on loendada iga sรตna esinemiste arv sisendjaotustes (lisateavet sisendjaotuste kohta leiate allpool) ja koostada loend kujul .

Segamine

See etapp tarbib kaardi vรคljunditping etapp. Selle รผlesanne on koondada kaardilt asjakohased kirjed.ping faasi vรคljund. Meie nรคites on samad sรตnad koos vastava sagedusega kokku pandud.

Vรคhendamine

Selles etapis koondatakse segamisfaasi vรคljundvรครคrtused. See etapp รผhendab segamisfaasi vรครคrtused ja tagastab รผhe vรคljundvรครคrtuse. Lรผhidalt รถeldes vรตtab see etapp kokku kogu andmestiku.

Meie nรคites koondab see etapp segamisfaasi vรครคrtused, st arvutab iga sรตna esinemiste koguarvu.

MapReduce Archiรผksikasjalikult selgitatud teksti

Allolevad punktid selgitavad, kuidas jagamis-, kaardistamis- ja vรคhendamise รผlesandeid klastris tegelikult paigutatakse ja salvestatakse.

  • Iga jaotuse jaoks luuakse รผks kaardistamisรผlesanne, mis seejรคrel kรคivitab kaardistamisfunktsiooni iga jaotuse kirje jaoks.
  • Mitme jaotuse omamine on alati kasulik, sest jaotuse tรถรถtlemiseks kuluv aeg on lรผhike vรตrreldes kogu sisendi tรถรถtlemiseks kuluva ajaga. Kui jaotused on vรคiksemad, on tรถรถtlemine paremini koormust tasakaalustatud, kuna jaotusi tรถรถdeldakse paralleelselt.
  • Siiski pole ka soovitav, et jaotused oleksid liiga vรคikesed. Kui jaotused on liiga vรคikesed, hakkab jaotuste haldamise ja kaardiรผlesannete loomise รผldkulu domineerima kogu tรถรถ tรคitmisaja suhtes.
  • Enamiku tรถรถde puhul on parem teha jaotussuurus vรตrdseks elemendi suurusega. HDFS plokk, mille vaikevรครคrtus on alates Hadoop 2.x versioonist 128 MB (Hadoop 1.x versioonis oli see 64 MB) ja mida kontrollib dfs.blocksize vara.
  • Kaardistamisรผlesannete tรคitmise tulemusel kirjutatakse vรคljund vastava sรตlme kohalikule kettale, mitte HDFS-i.
  • Kohaliku ketta valimise pรตhjus HDFS-i asemel on vรคltida replikatsiooni, mis toimub HDFS-i salvestustoimingu ajal.
  • Kaardivรคljund on vahevรคljund, mida tรถรถdeldakse vรคhendamisรผlesannetega, et saada lรตppvรคljund.
  • Kui tรถรถ on lรตpetatud, vรตib kaardi vรคljundi รคra visata. Seega muutub selle HDFS-is koos replikatsiooniga salvestamine รผlemรครคraseks.
  • Sรตlme rikke korral kรคivitab Hadoop kaardi vรคljundi enne, kui redutseerimisรผlesanne รคra kasutab, kaardi รผlesande teises sรตlmes ja loob kaardi vรคljundi uuesti.
  • Reduktsiooniรผlesanded (redutseerimisรผlesanded) ei tรถรถta andmete lokaalsuse pรตhimรตttel. Iga kaardistusรผlesande vรคljund edastatakse reduktsiooniรผlesandele. Kaardistusvรคljund edastatakse masinasse, kus reduktsiooniรผlesanne tรถรถtab.
  • Sellel masinal liidetakse vรคljund ja edastatakse seejรคrel kasutaja mรครคratud vรคhendamise funktsioonile.
  • Erinevalt kaardi vรคljundist salvestatakse reduce'i vรคljund HDFS-i (esimene koopia salvestatakse kohalikku sรตlme ja teised koopiad salvestatakse riiulivรคlistele sรตlmedele). Seega reduce'i vรคljundi kirjutamine tarbib kรผll vรตrgu ribalaiust, kuid ainult sama palju kui tavaline HDFS-i kirjutamistorustik.

Kuidas MapReduce'i korraldus tรถรถtab?

Selles MapReduce'i รตpetuses รตpime, kuidas MapReduce tรถรถtab.

Hadoop jagab tรถรถ รผlesanneteks. รœlesandeid on kahte tรผรผpi:

  1. Kaardiรผlesanded (jaotused ja kaart)ping)
  2. รœlesannete vรคhendamine (รผlesannete jagamine, vรคhendamine)

Kogu tรคitmisprotsessi, st nii kaardistamis- kui ka vรคhendamiseรผlesannete tรคitmist, kontrollivad kahte tรผรผpi รผksused, mida nimetatakse:

  1. tรถรถTracker: tegutseb nagu meister ja vastutab esitatud tรถรถ tรคieliku tรคitmise eest.
  2. Mitme รผlesandeTrackerid: kรคituvad nagu orjad, igaรผks neist tรคidab osa tรถรถst.

Iga sรผsteemis tรคitmiseks esitatud tรถรถ kohta on รผks tรถรถTracker, mis asub NameNode'il ja seal on mitu Task'iTrackerid, mis asuvad DataNode'idel.

Mรคrge: tรถรถTracker ja รผlesanneTracker paar kuulub MapReduce'i versioonile 1 (Hadoop 1.x). Alates Hadoop 2.x-st jagab YARN need รผlesanded klastriรผlese ressursihalduri (ResourceManager), iga sรตlme sรตlmehalduri (NodeManager) ja iga tรถรถ kohta รผhe rakendushalduri (ApplicationMaster) vahel, kuigi kaardistamise, segamise ja vรคhendamise etapid ise jรครคvad samaks.

Allolev diagramm nรคitab, kuidas esitatud tรถรถรผlesanne jaotatakse รผlesanneteks ja tracked รผle kobara.

Diagramm, mis nรคitab tรถรถ jagamist kaardi- ja vรคhendamise รผlesanneteks tracIiobi pooltTracker ja รผlesanneTrackirss

  • Tรถรถ jaguneb mitmeks รผlesandeks, mis seejรคrel kรคivitatakse klastri mitmel andmesรตlmel.
  • See on tรถรถรผlesannete vastutus tracker koordineerib tegevust, ajastades รผlesandeid erinevatel andmesรตlmedel.
  • Seejรคrel hoolitseb รผksiku รผlesande tรคitmise eest รผlesanne tracker, mis asub igal tรถรถรผlesande osa tรคitval andmesรตlmel.
  • รœlesanne tractรถรถtaja รผlesanne on saata eduaruanne tรถรถle tracker.
  • Lisaks on รผlesanne tracker saadab perioodiliselt Jobile sรผdamelรถรถgi signaaliTracker, et teavitada seda sรผsteemi hetkeseisust.
  • Seega tรถรถ tracker hoiab track iga tรถรถ รผldise edenemise kohta. รœlesande ebaรตnnestumise korral tรถรถ tracker saab selle รผmber planeerida teise รผlesande jaoks tracker.

KKK

YARN tegi seda alates Hadoop 2.x-st. Klastriรผlene ressursihaldur tegeleb ajastamisega, igal sรตlmel tรถรถtab sรตlmehaldur ja iga tรถรถ kohta tรถรถtab รผks rakendushaldur. tracTรคidab oma รผlesandeid. Kaardi ja vรคhendamise etapid jรครคvad samaks.

Varasemate tรถรถde ajaloo pรตhjal treenitud mudelid ennustavad kรคitusaega, soovitavad jaotussuurusi ja reduktorite arvu ning tuvastavad nihke varakult. Samuti jรคlgivad nad loenduri vรครคrtusi, mรคrgistades ebatavaliselt aeglased vรตi ebaรตnnestunud tรถรถd enne kรคituse lรตppu.

Copilot saab tellingutega hรคsti hakkama: kaardistaja ja reduktori signatuurid, geneerilised koodid, import ja draiveri konfiguratsioonikรตned. Skeemiotsused, nรคiteks milline vรคli on rรผhm.ping vรตti, ikkagi on vaja arendajat, kes andmeid tunneb.

Levinud alguspunkt on veidi vรคiksem saadaolevate vรคhenduspesade arv, seega iga vรคhendus tรถรถtab รผhes laines. Liiga vรคhesed loovad pikki sabasid; liiga paljud toodavad palju pisikesi vรคljundfaile.

Kombinaator on valikuline mini-redutseerija, mis tรถรถtab kaardi vรคljundi pรตhjal enne vรตrgu lรคbimist. See vรคhendab juhuslikku liiklust jรคrsult, kuid seda saab kasutada ainult siis, kui redutseerimisoperatsioon on nii assotsiatiivne kui ka kommutatiivne.

Spark hoiab vahetulemusi mรคlus ja vรคljendab tรถรถd รผhe suunatud etappide graafina, samas kui MapReduce kirjutab vahevรคljundi faaside vahel kettale. Spark on seega iteratiivse tรถรถ jaoks palju kiirem.

Partitsioonija otsustab, milline reduktor saab iga vahevรตtme, rรคsides vaikimisi vรตtit reduktorite arvu moodulina. Kohandatud rรคsi kirjutatakse siis, kui see rรคsi jรคtab รผhe reduktori รผlekoormatuks.

Hadoop loob iga sisendjaotuse kohta รผhe kaardistamisรผlesande ja jaotus on pigem baitide vahemik kui terve fail. รœks suur fail annab palju jaotusi; paljud vรคikesed failid annavad pisikesi ja ebaefektiivseid kaardistamisรผlesandeid.

Vรตta see postitus kokku jรคrgmiselt: