Mikä on MapReduce Hadoopissa? Archirakenne ja kaavio

⚡ Älykäs yhteenveto

MapReduce on Hadoop-ohjelmointimalli, joka muuttaa suuren tietojoukon pieneksi tulokseksi suorittamalla map-funktion jokaiselle syötejaolle ja sitten reduce-funktion ryhmitellyille väliarvoille.

  • 🔘 Neljä vaihetta: Jokainen työ suoritetaan jakamisena, karttaping, sekoittaen ja vähentäen, avain-arvo-parien virratessa kunkin vaiheen välillä.
  • ☑️ Toimiva esimerkki: Kolmesta tekstirivistä tulee seitsemän sanaa, jotka osoittavat tarkalleen, mitä kukin vaihe tuo tullessaan.
  • Jaettu koko: Yksi kartoitustehtävä suoritetaan syötejakoa kohden, ja jaon koko vastaa normaalisti HDFS-lohkon kokoa.
  • 🧪 Välitiedot: Karttatuloste kirjoitetaan paikalliselle levylle HDFS:n sijaan, koska kertakäyttödatan replikointi on turhaa.
  • 🛠️ Koordinaatio: TyöTracker aikatauluttaa työt ja tehtävätTracKerit raportoivat edistymisestä säännöllisten sykesignaalien avulla.
  • ⚠️ Versiohuomautus: YARN korvasi kyseisen parin Hadoop 2.x:n ResourceManagerilla, NodeManagereilla ja työkohtaisella ApplicationMasterilla.

MapReduce-arkkitehtuuri Hadoopissa selitettynä esimerkin avulla

Mikä on MapReduce Hadoopissa?

MapReduce on ohjelmistokehys ja ohjelmointimalli, jota käytetään suurten tietomäärien käsittelyyn. MapReduce-ohjelmat toimivat kahdessa vaiheessa: Map ja Reduce. Map-tehtävät käsittelevät jakamista ja Map-toimintoa.ping dataa samalla kun Vähennä tehtäviä sekoittaa ja vähentää dataa.

Hadoop pystyy ajamaan MapReduce-ohjelmia, jotka on kirjoitettu useilla eri kielillä: Java, Ruby, Pythonja C++MapReduce-ohjelmat ovat luonteeltaan rinnakkaisia, joten ne ovat erittäin hyödyllisiä laajamittaisen data-analyysin suorittamiseen useilla klusterin koneilla.

Kunkin vaiheen syötteenä ovat avain-arvo-parit. Lisäksi jokaisen ohjelmoijan on määriteltävä kaksi funktiota: map-funktio ja reduce-funktio.

MapReduce ArchiBig Datan rakenne, joka on selitetty esimerkillä

Koko prosessi käy läpi neljä vaihetta: jakamisen, kartoituksenping, sekoittaminen ja vähentäminen.

Tässä MapReduce-opetusohjelmassa tarkastellaan sitä MapReduce-esimerkin avulla.

Oletetaan, että sinulla on seuraavat syöttötiedot MapReduce-sovellukseesi: Big Data ohjelmoida:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

Alla oleva kaavio trackäy läpi nuo kolme riviä jokaisessa vaiheessa vasemmalla olevista syöttöjaoista oikealla oleviin viimeisiin sanamääriin.

MapReduce-arkkitehtuurikaavio trackolmen syöterivin jakaminen ja mappaaminenping, sekoittaen ja vähentäen

MapReduce-tehtävän lopullinen tulos on

huono 1
luokka 1
hyvä 1
Hadoop 3
is 2
että 1
Tervetuloa 1

Data käy läpi seuraavat MapReducen vaiheet Big Datassa.

Syöttöjaot

MapReduce-työn syöte Big Datassa jaetaan kiinteän kokoisiin osiin, joita kutsutaan syöteosuuksiksi. Syöteosuus on osa syötteestä, jonka yksi kartta käyttää.

karttaping

Tämä on MapReduce-ohjelman suorituksen ensimmäinen vaihe. Tässä vaiheessa jokaisen jaon tiedot välitetään kartalle.ping funktio tuottaa lähtöarvoja. Esimerkissämme kartan tehtäväping vaihe on laskea kunkin sanan esiintymien lukumäärä syöteosuuksista (lisätietoja syöteosuuksista annetaan alla) ja laatia luettelo muodossa .

sekoitus

Tämä vaihe kuluttaa kartan tuotoksenping vaihe. Sen tehtävänä on yhdistää asiaankuuluvat tietueet kartaltaping vaihelähtö. Esimerkissämme samat sanat on yhdistetty toisiinsa vastaavien taajuuksien kanssa.

Vähentäminen

Tässä vaiheessa sekoitusvaiheen tuotosarvot yhdistetään. Tämä vaihe yhdistää sekoitusvaiheen arvot ja palauttaa yhden tuotosarvon. Lyhyesti sanottuna tämä vaihe tiivistää koko tietojoukon.

Esimerkissämme tämä vaihe kokoaa yhteen sekoitusvaiheen arvot eli laskee kunkin sanan kokonaisesiintymismäärän.

MapReduce Archikuvataan yksityiskohtaisesti

Alla olevat kohdat selittävät, miten jako-, kartoitus- ja vähennystehtävät itse asiassa sijoitetaan ja tallennetaan klusteriin.

  • Jokaiselle jaolle luodaan yksi karttatehtävä, joka sitten suorittaa karttafunktion jokaiselle jaon tietueelle.
  • Useiden osien käsittely on aina hyödyllistä, koska yhden osituksen käsittelyyn kuluva aika on lyhyt verrattuna koko syötteen käsittelyyn kuluvaan aikaan. Kun ositukset ovat pienempiä, käsittely on paremmin kuormituksen tasapainossa, koska ositukset käsitellään rinnakkain.
  • Liian pieniä jakoja ei kuitenkaan kannata käyttää. Kun jakoja on liian vähän, niiden hallintaan ja karttatehtävien luomiseen kuluva työmäärä alkaa hallita työn kokonaissuoritusaikaa.
  • Useimmissa töissä on parempi tehdä jakokooksi yhtä suuri kuin HDFS lohko, jonka oletusarvo on 128 Mt Hadoop 2.x:stä eteenpäin (se oli 64 Mt Hadoop 1.x:ssä) ja jota ohjaa dfs.blocksize omaisuutta.
  • Kartoitustehtävien suorittaminen johtaa tulosteen kirjoittamiseen paikalliselle levylle kyseisessä solmussa, eikä HDFS:ään.
  • Syy paikallisen levyn valitsemiseen HDFS:n sijaan on välttää HDFS-tallennusoperaation aikana tapahtuva replikointi.
  • Karttatulos on välituloste, joka käsitellään vähennystehtävillä lopullisen tuotoksen tuottamiseksi.
  • Kun työ on valmis, karttatuloste voidaan heittää pois. Joten sen tallentaminen HDFS:ään replikoinnin kanssa tulee ylivoimaiseksi.
  • Jos solmu epäonnistuu, ennen kuin vähennystehtävä kuluttaa karttatulosteen, Hadoop suorittaa karttatehtävän uudelleen toisessa solmussa ja luo karttatulosteen uudelleen.
  • Reduce-tehtävät eivät toimi datan lokaaliuden käsitteen pohjalta. Jokaisen map-tehtävän tuloste syötetään reduce-tehtävään. Kartoituksen tuloste siirretään koneelle, jossa reduce-tehtävä on käynnissä.
  • Tässä koneessa tulos yhdistetään ja siirretään sitten käyttäjän määrittämälle vähennystoiminnolle.
  • Toisin kuin map-tuloste, reduce-tuloste tallennetaan HDFS:ään (ensimmäinen replika tallennetaan paikalliselle solmulle ja muut replikat tallennetaan telineestä riippumattomille solmuille). Joten reduce-tulosteen kirjoittaminen kuluttaa verkon kaistanleveyttä, mutta vain yhtä paljon kuin normaali HDFS-kirjoitusputki kuluttaa.

Miten MapReduce Organisaatiot toimivat?

Tässä MapReduce-opetusohjelmassa opimme, miten MapReduce toimii.

Hadoop jakaa työn tehtäviin. Tehtäviä on kahdenlaisia:

  1. Karttatehtävät (jaot ja karttaping)
  2. Vähennä tehtäviä (sekoitus, vähentäminen)

Koko suoritusprosessia, eli sekä Map- että Reduce-tehtävien suorittamista, ohjaavat kahden tyyppiset yksiköt, joita kutsutaan:

  1. JobTracker: toimii kuin mestari ja vastaa lähetetyn työn täydellisestä suorittamisesta.
  2. Useita tehtäviäTrackers: toimivat kuin orjat, joista jokainen suorittaa osan työstä.

Jokaista järjestelmään suoritettavaksi lähetettyä työtä kohden on yksi JobTracker, joka sijaitsee NameNode-solmussa, ja tehtäviä on useitaTrackerit, jotka sijaitsevat DataNode-solmuissa.

Huomautus: TyöTracker ja tehtäväTracker-pari kuuluu MapReduce-versioon 1 (Hadoop 1.x). Hadoop 2.x:stä eteenpäin YARN jakaa nämä tehtävät klusterinlaajuisen ResourceManagerin, jokaisen solmun NodeManagerin ja yhden ApplicationMasterin kesken työtä kohden, vaikka itse kartoitus-, sekoitus- ja vähennysvaiheet pysyvät muuttumattomina.

Alla oleva kaavio näyttää, miten lähetetty työ jaetaan tehtäviin ja tracked poikki klusterin.

Kaavio, joka näyttää työn jaon kartta- ja vähennystehtäviin tracJobin kedTracker ja tehtäväTracKERS

  • Työ jaetaan useisiin tehtäviin, jotka sitten suoritetaan useissa klusterin datasolmuissa.
  • Se on työn vastuulla tracker koordinoi toimintaa ajoittamalla tehtäviä suoritettavaksi eri datasolmuissa.
  • Yksittäisen tehtävän suorittamisesta huolehtii sitten tehtävä tracker, joka sijaitsee jokaisella työn osaa suorittavalla datasolmulla.
  • Tehtävä tracTyöntekijän vastuulla on lähettää edistymisraportti työpaikalle. tracker.
  • Lisäksi tehtävä tracker lähettää säännöllisesti "sydämenlyönti"-signaalin JobilleTracker ilmoittaakseen sille järjestelmän nykytilasta.
  • Näin ollen työ tracker pitää track kunkin työn yleisestä edistymisestä. Tehtävän epäonnistuessa työ tracker voi ajoittaa sen uudelleen toiselle tehtävälle tracker.

UKK

YARN teki niin Hadoop 2.x:stä alkaen. Klusterinlaajuinen ResourceManager hoitaa aikataulutuksen, NodeManager toimii jokaisella solmulla ja yksi ApplicationMaster toimii työtä kohden. tracsuorittaa tehtävänsä. Kartoitus- ja vähennysvaiheet pysyvät muuttumattomina.

Aiempien työtehtävien historian perusteella koulutetut mallit ennustavat suoritusajan, suosittelevat jakokokoja ja vähennyslaskijoiden määriä sekä havaitsevat vinouman varhaisessa vaiheessa. Ne myös seuraavat laskurien arvoja ja merkitsevät epätavallisen hitaat tai epäonnistuneet työt ennen ajon päättymistä.

Copilot hoitaa scaffolding-työt hyvin: mapper- ja reduktoriallekirjoitukset, geneeriset koodit, tuonnit ja ajurikonfiguraatiokutsut. Schema-päätökset, kuten mikä kenttä on ryhmäping avain, tarvitaan silti kehittäjä, joka tuntee datan.

Yleinen lähtökohta on, että käytettävissä olevien vähennyspaikkojen määrä on hieman pienempi, joten jokainen vähennystoiminto suoritetaan yhdessä aallossa. Liian harvat luovat pitkiä häntiä; liian monet tuottavat monia pieniä tulostiedostoja.

Yhdistäjä on valinnainen mini-pelkistin, joka suorittaa karttatulosteen ennen kuin se ylittää verkon. Se leikkaa satunnaista liikennettä jyrkästi, mutta sitä voidaan käyttää vain silloin, kun pelkistysoperaatio on sekä assosiatiivinen että kommutatiivinen.

Spark pitää välitulokset muistissa ja ilmaisee työn yhtenä suunnattuna vaiheiden graafina, kun taas MapReduce kirjoittaa välitulosteen levylle vaiheiden välillä. Spark on siksi paljon nopeampi iteratiivisessa työssä.

Osiointitoiminto päättää, mikä reduktori vastaanottaa kunkin väliavaimen, ja oletusarvoisesti hajauttaa avaimen reduktorien lukumäärän mukaan. Mukautettu hajautus kirjoittaa, kun tämä hajautus jättää yhden reduktorin ylikuormitetuksi.

Hadoop luo yhden kartoitustehtävän syötejakoa kohden, ja jako on tavualue eikä kokonainen tiedosto. Yksi suuri tiedosto tuottaa useita jakoja; monet pienet tiedostot tuottavat pieniä ja tehottomia kartoitustehtäviä.

Tiivistä tämä viesti seuraavasti: