Co je MapReduce v Hadoopu? ArchiTektura a diagram

โšก Chytrรฉ shrnutรญ

MapReduce je programovacรญ model Hadoopu, kterรฝ pล™evรกdรญ velkou datovou sadu na malรฝ vรฝsledek spuลกtฤ›nรญm funkce map nad kaลพdรฝm rozdฤ›lenรญm vstupu a nรกslednรฝm spuลกtฤ›nรญm funkce reduce nad seskupenรฝmi mezilehlรฝmi hodnotami.

  • ๐Ÿ”˜ ฤŒtyล™i fรกze: Kaลพdรก รบloha bฤ›ลพรญ jako rozdฤ›lenรญ, mapaping, promรญchรกvรกnรญ a redukce, pล™iฤemลพ pรกry klรญฤ-hodnota proudรญ mezi jednotlivรฝmi fรกzemi.
  • โ˜‘๏ธ Zpracovanรฝ pล™รญklad: Tล™i ล™รกdky textu se stanou sedmi slovy, coลพ pล™esnฤ› ukazuje, co kaลพdรก fรกze pล™ispรญvรก.
  • (Tj. Rozdฤ›lenรฉ velikosti: Na jedno rozdฤ›lenรญ vstupu se spustรญ jedna รบloha mapovรกnรญ a velikost rozdฤ›lenรญ obvykle odpovรญdรก velikosti bloku HDFS.
  • ๐Ÿงช Mezilehlรก data: Vรฝstup mapy se zapisuje na lokรกlnรญ disk, nikoli na HDFS, protoลพe replikace jednorรกzovรฝch dat je zbyteฤnรก.
  • ๐Ÿ› ๏ธ Koordinace: PrรกceTracker plรกnuje prรกci a รบkolyTracKerovรฉ hlรกsรญ pokrok prostล™ednictvรญm periodickรฝch signรกlลฏ srdeฤnรญho tepu.
  • โš ๏ธ Poznรกmka k verzi: YARN nahradil tuto dvojici objekty ResourceManager, NodeManager a ApplicationMaster pro kaลพdou รบlohu z Hadoopu 2.x.

Architektura MapReduce v Hadoopu vysvฤ›tlena na pล™รญkladu

Co je MapReduce v Hadoopu?

MapReduce je softwarovรฝ framework a programovacรญ model pouลพรญvanรฝ pro zpracovรกnรญ obrovskรฉho mnoลพstvรญ dat. Programy MapReduce fungujรญ ve dvou fรกzรญch, a to Map a Reduce. รšlohy Map se zabรฝvajรญ rozdฤ›lenรญm a mapovรกnรญmping dat, zatรญmco funkce Snรญลพenรญ poฤtu รบloh zamรญchรก a snรญลพรญ poฤet dat.

Hadoop je schopen spouลกtฤ›t programy MapReduce napsanรฉ v rลฏznรฝch jazycรญch: Java, Ruby, Python, a C++Programy MapReduce jsou paralelnรญ povahy, takลพe jsou velmi uลพiteฤnรฉ pro provรกdฤ›nรญ rozsรกhlรฉ analรฝzy dat s vyuลพitรญm vรญce poฤรญtaฤลฏ v clusteru.

Vstupem do kaลพdรฉ fรกze jsou pรกry klรญฤ-hodnota. Kromฤ› toho musรญ kaลพdรฝ programรกtor specifikovat dvฤ› funkce: funkci map a funkci reduce.

MapReduce Architecture v Big Data vysvฤ›tlenรก pomocรญ pล™รญkladu

Celรฝ proces prochรกzรญ ฤtyล™mi fรกzemi provรกdฤ›nรญ, a to rozdฤ›lenรญm, mapovรกnรญmping, mรญchรกnรญ a redukce.

V tomto tutoriรกlu o MapReduce si to nynรญ ukรกลพeme na pล™รญkladu MapReduce.

Uvaลพujte, ลพe mรกte pro MapReduce nรกsledujรญcรญ vstupnรญ data Big dat program:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

Nรญลพe uvedenรฝ diagram tracprochรกzรญ tฤ›mito tล™emi ล™รกdky kaลพdou fรกzรญ, od rozdฤ›lenรญ vstupu vlevo aลพ po koneฤnรฝ poฤet slov vpravo.

Schรฉma architektury MapReduce tracrozdฤ›lenรญ tล™รญ vstupnรญch ล™รกdkลฏ pomocรญ mapyping, mรญchรกnรญ a redukce

Koneฤnรฝm vรฝstupem รบlohy MapReduce je

ลกpatnรฝ 1
Tล™รญda 1
dobrรฝ 1
Hadoop 3
is 2
na 1
Onboarding 1

Data prochรกzejรญ nรกsledujรญcรญmi fรกzemi MapReduce ve velkรฝch datech.

Rozdฤ›lenรญ vstupลฏ

Vstup do รบlohy MapReduce v Big Data je rozdฤ›len na kusy pevnรฉ velikosti, kterรฉ se nazรฝvajรญ vstupnรญ rozdฤ›lenรญ. Vstupnรญ rozdฤ›lenรญ je ฤรกst vstupu, kterรก je spotล™ebovรกna jednou mapou.

Mapaping

Toto je รบplnฤ› prvnรญ fรกze provรกdฤ›nรญ programu MapReduce. V tรฉto fรกzi jsou data z kaลพdรฉho rozdฤ›lenรญ pล™edรกvรกna do mapy.ping funkce pro generovรกnรญ vรฝstupnรญch hodnot. V naลกem pล™รญkladu je รบlohou mapyping fรกze spoฤรญvรก ve spoฤรญtรกnรญ poฤtu vรฝskytลฏ kaลพdรฉho slova ze vstupnรญch rozdฤ›lenรญ (vรญce podrobnostรญ o vstupnรญch rozdฤ›lenรญch je uvedeno nรญลพe) a pล™รญpravฤ› seznamu ve tvaru .

Mรญchรกnรญ

Tato fรกze spotล™ebovรกvรก vรฝstup mapy.ping fรกze. Jejรญm รบkolem je konsolidovat relevantnรญ zรกznamy z mapyping fรกzovรฝ vรฝstup. V naลกem pล™รญkladu jsou stejnรก slova spojena dohromady spolu s jejich pล™รญsluลกnou frekvencรญ.

Sniลพovรกnรญ

V tรฉto fรกzi se agregujรญ vรฝstupnรญ hodnoty z fรกze Mรญchรกnรญ. Tato fรกze kombinuje hodnoty z fรกze Mรญchรกnรญ a vracรญ jednu vรฝstupnรญ hodnotu. Struฤnฤ› ล™eฤeno, tato fรกze shrnuje kompletnรญ datovou sadu.

V naลกem pล™รญkladu tato fรกze agreguje hodnoty z fรกze Mรญchรกnรญ, tj. vypoฤรญtรกvรก celkovรฝ poฤet vรฝskytลฏ kaลพdรฉho slova.

MapReduce Archipodrobnฤ› vysvฤ›tlenou

Nรญลพe uvedenรฉ body vysvฤ›tlujรญ, jak jsou รบlohy rozdฤ›lenรญ, mapovรกnรญ a reduce ve skuteฤnosti umisลฅovรกny a uklรกdรกny v rรกmci clusteru.

  • Pro kaลพdรฉ rozdฤ›lenรญ je vytvoล™ena jedna รบloha mapovรกnรญ, kterรก potรฉ provede funkci mapovรกnรญ pro kaลพdรฝ zรกznam v rozdฤ›lenรญ.
  • Vลพdy je vรฝhodnรฉ mรญt vรญce rozdฤ›lenรญ, protoลพe doba potล™ebnรก ke zpracovรกnรญ jednoho rozdฤ›lenรญ je malรก ve srovnรกnรญ s dobou potล™ebnou ke zpracovรกnรญ celรฉho vstupu. Kdyลพ jsou rozdฤ›lenรญ menลกรญ, zpracovรกnรญ je lรฉpe vyvรกลพenรฉ z hlediska zรกtฤ›ลพe, protoลพe se zpracovรกvajรญ paralelnฤ›.
  • Nenรญ vลกak ลพรกdoucรญ mรญt pล™รญliลก malรฉ rozdฤ›lenรญ. Pokud jsou rozdฤ›lenรญ pล™รญliลก malรก, reลพie sprรกvy rozdฤ›lenรญ a vytvรกล™enรญ mapovรฝch รบloh zaฤรญnรก dominovat celkovรฉ dobฤ› provรกdฤ›nรญ รบloh.
  • Pro vฤ›tลกinu รบloh je lepลกรญ nastavit velikost rozdฤ›lenรญ na stejnou velikost jako HDFS blok, kterรฝ je od verze Hadoop 2.x standardnฤ› nastaven na 128 MB (v verzi Hadoop 1.x to bylo 64 MB) a je ล™รญzen dfs.blocksize vlastnictvรญ.
  • Spuลกtฤ›nรญ รบloh mapovรกnรญ mรก za nรกsledek zรกpis vรฝstupu na lokรกlnรญ disk na pล™รญsluลกnรฉm uzlu, a nikoli do HDFS.
  • Dลฏvodem pro volbu lokรกlnรญho disku pล™ed HDFS je vyhnutรญ se replikaci, kterรก probรญhรก bฤ›hem operace รบloลพiลกtฤ› HDFS.
  • Mapovรฝ vรฝstup je mezivรฝstup, kterรฝ je zpracovรกn pomocรญ redukovanรฝch รบloh, aby se vytvoล™il koneฤnรฝ vรฝstup.
  • Po dokonฤenรญ รบlohy lze mapovรฝ vรฝstup zahodit. Takลพe uklรกdรกnรญ do HDFS s replikacรญ se stรกvรก pล™ehnanรฝm.
  • V pล™รญpadฤ› selhรกnรญ uzlu, neลพ je vรฝstup mapy spotล™ebovรกn รบlohou snรญลพenรญ, Hadoop znovu spustรญ รบlohu mapy na jinรฉm uzlu a znovu vytvoล™รญ mapovรฝ vรฝstup.
  • รšlohy typu Reduce nefungujรญ na principu lokality dat. Vรฝstup z kaลพdรฉ รบlohy mapovรกnรญ je pล™enesen do รบlohy typu Reduce. Vรฝstup z รบlohy mapovรกnรญ je pล™enesen na poฤรญtaฤ, kde รบloha typu Reduce bฤ›ลพรญ.
  • Na tomto stroji je vรฝstup slouฤen a potรฉ pล™edรกn do uลพivatelem definovanรฉ funkce snรญลพenรญ.
  • Na rozdรญl od vรฝstupu mapy je vรฝstup funkce reduce uloลพen v HDFS (prvnรญ replika je uloลพena na lokรกlnรญm uzlu a ostatnรญ repliky jsou uloลพeny na uzlech mimo racku). Zรกpis vรฝstupu funkce reduce tedy spotล™ebovรกvรก ลกรญล™ku pรกsma sรญtฤ›, ale pouze tolik, kolik spotล™ebuje bฤ›ลพnรฝ kanรกl zรกpisu HDFS.

Jak funguje MapReduce Organizes?

V tomto tutoriรกlu o MapReduce se nynรญ nauฤรญme, jak MapReduce funguje.

Hadoop rozdฤ›luje prรกci na รบkoly. Existujรญ dva typy รบkolลฏ:

  1. รškoly mapy (Rozdฤ›lenรญ a mapaping)
  2. Snรญลพenรญ poฤtu รบkolลฏ (promรญchรกvรกnรญ, redukce)

Celรฝ proces provรกdฤ›nรญ, tedy provรกdฤ›nรญ รบloh Map i Reduce, je ล™รญzen dvฤ›ma typy entit nazรฝvanรฝmi:

  1. PrรกceTracker: chovรก se jako mistr a je zodpovฤ›dnรฝ za kompletnรญ provedenรญ odeslanรฉ รบlohy.
  2. Vรญce รบkolลฏTrackerovรฉ: chovajรญ se jako otroci, kaลพdรฝ z nich vykonรกvรก ฤรกst prรกce.

Pro kaลพdou รบlohu odeslanou k provedenรญ v systรฉmu existuje jedna รบloha.Tracker, kterรฝ se nachรกzรญ na NameNode, a existuje nฤ›kolik รบlohTrackery, kterรฉ se nachรกzejรญ na datovรฝch uzlech (DataNodes).

Poznรกmka: PrรกceTracker a รบkolTracPรกr ker patล™รญ do MapReduce verze 1 (Hadoop 1.x). Od Hadoopu 2.x dรกle YARN rozdฤ›luje tyto รบkoly mezi clusterovรฝ ResourceManager, NodeManager na kaลพdรฉm uzlu a jeden ApplicationMaster na รบlohu, aฤkoli samotnรฉ fรกze mapovรกnรญ, shuffle a reduce zลฏstรกvajรญ nezmฤ›nฤ›ny.

Nรญลพe uvedenรฝ diagram ukazuje, jak je odeslanรก รบloha rozdฤ›lena do รบkolลฏ a tracลกรญล™eno napล™รญฤ klastrem.

Diagram znรกzorลˆujรญcรญ rozdฤ›lenรญ รบlohy na mapovacรญ a redukฤnรญ รบkoly tracpovฤ›ล™en JobemTracker a รบkolTractล™eลกeลˆ

  • รšloha je rozdฤ›lena do nฤ›kolika รบkolลฏ, kterรฉ jsou potรฉ spouลกtฤ›ny na vรญce datovรฝch uzlech v clusteru.
  • Je to zodpovฤ›dnost za prรกci tracker koordinovat aktivitu plรกnovรกnรญm รบloh tak, aby se spouลกtฤ›ly na rลฏznรฝch datovรฝch uzlech.
  • Provedenรญ jednotlivรฉho รบkolu je potรฉ zabezpeฤeno รบkolem tracker, kterรฝ se nachรกzรญ na kaลพdรฉm datovรฉm uzlu provรกdฤ›jรญcรญm ฤรกst รบlohy.
  • รškol tracKerovou odpovฤ›dnostรญ je zaslat zprรกvu o postupu prรกci. tracker.
  • Kromฤ› toho รบkol tracker pravidelnฤ› vysรญlรก Jobovi signรกl โ€žtep srdceโ€œ.Tracker, aby ho informoval o aktuรกlnรญm stavu systรฉmu.
  • Takลพe prรกce tracKer si udrลพuje track celkovรฉho postupu kaลพdรฉ รบlohy. V pล™รญpadฤ› selhรกnรญ รบlohy tracker to mลฏลพe pล™esunout na jinรฝ รบkol tracker.

Nejฤastฤ›jลกรญ dotazy

YARN to dฤ›lal od Hadoopu 2.x vรฝลกe. Plรกnovรกnรญ zajiลกลฅuje clusterovรฝ ResourceManager, na kaลพdรฉm uzlu bฤ›ลพรญ NodeManager a na kaลพdou รบlohu jeden ApplicationMaster. tracks svรฉ รบkoly. Fรกze mapovรกnรญ a reduce zลฏstรกvajรญ nezmฤ›nฤ›ny.

Modely trรฉnovanรฉ na historii minulรฝch รบloh pล™edpovรญdajรญ dobu bฤ›hu, doporuฤujรญ velikosti rozdฤ›lenรญ a poฤty reduktorลฏ a vฤas detekujรญ zkreslenรญ. Sledujรญ takรฉ hodnoty ฤรญtaฤลฏ a oznaฤujรญ neobvykle pomalรฉ nebo selhรกvajรญcรญ รบlohy pล™ed dokonฤenรญm bฤ›hu.

Copilot dobล™e zvlรกdรก scaffolding: signatury mapperลฏ a reducerลฏ, generiky, importy a volรกnรญ konfigurace ovladaฤลฏ. Rozhodnutรญ o schรฉmatu, napล™รญklad kterรฉ pole je skupina.ping klรญฤovรฉ, stรกle potล™ebujete vรฝvojรกล™e, kterรฝ znรก data.

Bฤ›ลพnรฝm vรฝchozรญm bodem je mรญrnฤ› menลกรญ poฤet dostupnรฝch redukฤnรญch slotลฏ, takลพe kaลพdรฝ reduktor bฤ›ลพรญ v jednรฉ vlnฤ›. Pล™รญliลก mรกlo reduktorลฏ vytvรกล™รญ dlouhรฉ ocasy; pล™รญliลก mnoho produkuje mnoho malรฝch vรฝstupnรญch souborลฏ.

Kombinรกtor je volitelnรฝ mini-reduktor, kterรฝ bฤ›ลพรญ na vรฝstupu mapy pล™edtรญm, neลพ projde sรญtรญ. Vรฝraznฤ› sniลพuje nรกhodnรฝ provoz, ale lze jej pouลพรญt pouze tehdy, kdyลพ je operace reduce asociativnรญ i komutativnรญ.

Spark Uchovรกvรก mezivรฝsledky v pamฤ›ti a vyjadล™uje รบlohu jako jednosmฤ›rnรฝ graf fรกzรญ, zatรญmco MapReduce zapisuje mezifรกzovรฝ vรฝstup na disk mezi fรกzemi. Spark je proto mnohem rychlejลกรญ pro iterativnรญ prรกci.

Partitioner rozhoduje, kterรฝ reduktor obdrลพรญ kterรฝ mezilehlรฝ klรญฤ, standardnฤ› hashuje klรญฤ modulo poฤtu reduktorลฏ. Vlastnรญ hash se zapรญลกe, kdyลพ tento hash pล™etรญลพรญ jeden reduktor.

Hadoop vytvรกล™รญ jednu mapovacรญ รบlohu pro kaลพdรฉ rozdฤ›lenรญ vstupu a rozdฤ›lenรญ je spรญลกe rozsah bajtลฏ neลพ celรฝ soubor. Jeden velkรฝ soubor vede k mnoha rozdฤ›lenรญm; mnoho malรฝch souborลฏ vede k drobnรฝm a neefektivnรญm mapovacรญm รบlohรกm.

Shrลˆte tento pล™รญspฤ›vek takto: