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.
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.
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.blocksizevlastnictvรญ. - 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ลฏ:
- รkoly mapy (Rozdฤlenรญ a mapaping)
- 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:
- PrรกceTracker: chovรก se jako mistr a je zodpovฤdnรฝ za kompletnรญ provedenรญ odeslanรฉ รบlohy.
- 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.
- ร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.


