Un ghid introductiv pentru MapReduce în Big Data

MapReduce oferă o modalitate eficientă, mai rapidă și rentabilă de a crea aplicații.

Acest model utilizează concepte avansate, cum ar fi procesarea paralelă, localitatea datelor etc., pentru a oferi o mulțime de beneficii programatorilor și organizațiilor.

Dar există atât de multe modele și cadre de programare disponibile pe piață încât devine dificil de ales.

Și când vine vorba de Big Data, nu poți alege orice. Trebuie să alegeți astfel de tehnologii care pot gestiona cantități mari de date.

MapReduce este o soluție excelentă pentru asta.

În acest articol, voi discuta ce este MapReduce cu adevărat și cum poate fi benefic.

Să începem!

Ce este MapReduce?

MapReduce este un model de programare sau un cadru software din cadrul Apache Hadoop. Este folosit pentru crearea de aplicații capabile să proceseze date masive în paralel pe mii de noduri (numite clustere sau grile) cu toleranță la erori și fiabilitate.

Această prelucrare a datelor are loc pe o bază de date sau pe un sistem de fișiere în care sunt stocate datele. MapReduce poate funcționa cu un sistem de fișiere Hadoop (HDFS) pentru a accesa și gestiona volume mari de date.

Acest cadru a fost introdus în 2004 de Google și este popularizat de Apache Hadoop. Este un strat sau un motor de procesare în Hadoop care rulează programe MapReduce dezvoltate în diferite limbi, inclusiv Java, C++, Python și Ruby.

Programele MapReduce din cloud computing rulează în paralel, astfel, potrivite pentru efectuarea analizei datelor la scară largă.

MapReduce are ca scop împărțirea unei sarcini în sarcini mai mici, multiple, folosind funcțiile „hartă” și „reducere”. Acesta va mapa fiecare sarcină și apoi o va reduce la mai multe sarcini echivalente, ceea ce are ca rezultat o putere de procesare mai mică și o suprasarcină în rețeaua de cluster.

Exemplu: Să presupunem că pregătiți o masă pentru o casă plină de oaspeți. Deci, dacă încercați să pregătiți toate felurile de mâncare și să faceți singur toate procesele, va deveni agitat și va consuma mult timp.

Dar să presupunem că implicați unii dintre prietenii sau colegii (nu oaspeții) să vă ajute să pregătiți masa, distribuind diferite procese unei alte persoane care poate îndeplini sarcinile simultan. În acest caz, vei pregăti masa mai rapid și mai ușor, cât timp oaspeții tăi sunt încă în casă.

MapReduce funcționează în mod similar cu sarcini distribuite și procesare paralelă pentru a permite un mod mai rapid și mai ușor de a finaliza o anumită sarcină.

Apache Hadoop permite programatorilor să utilizeze MapReduce pentru a executa modele pe seturi mari de date distribuite și pentru a folosi tehnici avansate de învățare automată și statistică pentru a găsi modele, a face predicții, a identifica corelații și multe altele.

Caracteristicile MapReduce

Unele dintre principalele caracteristici ale MapReduce sunt:

  • Interfață cu utilizatorul: veți obține o interfață cu utilizatorul intuitivă care oferă detalii rezonabile cu privire la fiecare aspect al cadrului. Vă va ajuta să configurați, să aplicați și să vă reglați sarcinile fără probleme.

  • Sarcină utilă: Aplicațiile utilizează interfețele Mapper și Reducer pentru a activa harta și a reduce funcțiile. Mapper mapează perechile cheie-valoare introduse la perechile cheie-valoare intermediare. Reductorul este utilizat pentru a reduce perechile cheie-valoare intermediare care partajează o cheie cu alte valori mai mici. Îndeplinește trei funcții – sortare, amestecare și reducere.
  • Partitioner: controlează împărțirea tastelor intermediare de ieșire a hărții.
  • Reporter: este o funcție pentru a raporta progresul, a actualiza contoarele și a seta mesaje de stare.
  • Contoare: reprezintă contoare globale pe care le definește o aplicație MapReduce.
  • OutputCollector: Această funcție colectează date de ieșire de la Mapper sau Reducer în loc de ieșiri intermediare.
  • RecordWriter: scrie datele de ieșire sau perechile cheie-valoare în fișierul de ieșire.
  • DistributedCache: distribuie eficient fișiere mai mari, numai pentru citire, care sunt specifice aplicației.
  • Comprimarea datelor: Scriitorul aplicației poate comprima atât ieșirile jobului, cât și ieșirile intermediare ale hărților.
  • Omiterea înregistrărilor proaste: puteți sări peste mai multe înregistrări proaste în timp ce procesați intrările hărții. Această caracteristică poate fi controlată prin clasa – SkipBadRecords.
  • Depanare: veți avea opțiunea de a rula scripturi definite de utilizator și de a activa depanarea. Dacă o sarcină din MapReduce eșuează, puteți rula scriptul de depanare și puteți găsi problemele.
  Calea către textul receptiv elegant

Arhitectura MapReduce

Să înțelegem arhitectura MapReduce mergând mai adânc în componentele sale:

  • Job: Un job în MapReduce este sarcina reală pe care clientul MapReduce dorește să o îndeplinească. Acesta cuprinde mai multe sarcini mai mici care se combină pentru a forma sarcina finală.
  • Job History Server: Este un proces demon pentru a stoca și salva toate datele istorice despre o aplicație sau sarcină, cum ar fi jurnalele generate după sau înainte de executarea unui job.
  • Client: Un client (program sau API) aduce un job la MapReduce pentru execuție sau procesare. În MapReduce, unul sau mai mulți clienți pot trimite continuu joburi către MapReduce Manager pentru procesare.
  • MapReduce Master: un MapReduce Master împarte o lucrare în mai multe părți mai mici, asigurându-se că sarcinile progresează simultan.
  • Părți de muncă: Lucrările secundare sau părțile de muncă sunt obținute prin împărțirea locului de muncă principal. Ele sunt lucrate și combinate în cele din urmă pentru a crea sarcina finală.
  • Date de intrare: este setul de date transmis către MapReduce pentru procesarea sarcinilor.
  • Date de ieșire: este rezultatul final obținut odată ce sarcina este procesată.

Deci, ceea ce se întâmplă cu adevărat în această arhitectură este că clientul trimite un job către MapReduce Master, care îl împarte în părți mai mici, egale. Acest lucru permite ca jobul să fie procesat mai rapid, deoarece sarcinile mai mici necesită mai puțin timp pentru a fi procesate în loc de sarcinile mai mari.

Cu toate acestea, asigurați-vă că sarcinile nu sunt împărțite în sarcini prea mici, deoarece, dacă faceți asta, este posibil să fiți nevoit să faceți față unei cheltuieli mai mari de gestionare a diviziunilor și să pierdeți timp semnificativ cu asta.

În continuare, părțile de lucru sunt puse la dispoziție pentru a continua cu sarcinile Hartă și Reducere. În plus, sarcinile Map și Reduce au un program adecvat bazat pe cazul de utilizare la care lucrează echipa. Programatorul dezvoltă codul bazat pe logică pentru a îndeplini cerințele.

După aceasta, datele de intrare sunt transmise la Sarcina Hartă, astfel încât Harta să poată genera rapid rezultatul ca o pereche cheie-valoare. În loc să stocați aceste date pe HDFS, un disc local este folosit pentru a stoca datele pentru a elimina șansa de replicare.

Odată ce sarcina este finalizată, puteți arunca rezultatul. Prin urmare, replicarea va deveni exagerată atunci când stocați rezultatul pe HDFS. Ieșirea fiecărei sarcini de hartă va fi transmisă sarcinii de reducere, iar rezultatul hărții va fi furnizată mașinii care execută sarcina de reducere.

Apoi, rezultatul va fi fuzionat și trecut la funcția de reducere definită de utilizator. În cele din urmă, ieșirea redusă va fi stocată pe un HDFS.

Mai mult, procesul poate avea mai multe sarcini Map and Reduce pentru prelucrarea datelor în funcție de obiectivul final. Algoritmii Map și Reduce sunt optimizați pentru a menține la minimum complexitatea timpului sau spațiului.

Deoarece MapReduce implică în primul rând sarcinile Map și Reduce, este pertinent să înțelegeți mai multe despre acestea. Deci, să discutăm despre fazele MapReduce pentru a ne face o idee clară despre aceste subiecte.

Fazele MapReduce

Hartă

Datele de intrare sunt mapate în perechile de ieșire sau cheie-valoare în această fază. Aici, cheia se poate referi la id-ul unei adrese, în timp ce valoarea poate fi valoarea reală a acelei adrese.

  „Coduri de cheat” de la AndaSeat: un eveniment cu durată limitată

Există doar una, dar două sarcini în această fază – împărțiri și cartografiere. Divizarea înseamnă subpărțile sau părțile jobului împărțite de jobul principal. Acestea se mai numesc și împărțiri de intrare. Deci, o divizare de intrare poate fi numită o bucată de intrare consumată de o hartă.

În continuare, are loc sarcina de cartografiere. Este considerată prima fază în timpul executării unui program de reducere a hărții. Aici, datele conținute în fiecare împărțire vor fi transmise unei funcții de hartă pentru a procesa și a genera rezultatul.

Funcția – Map() se execută în depozitul de memorie pe perechile cheie-valoare de intrare, generând o pereche cheie-valoare intermediară. Această nouă pereche cheie-valoare va funcționa ca intrare care va fi transmisă funcției Reduce() sau Reducer.

Reduce

Perechile cheie-valoare intermediare obținute în faza de mapare funcționează ca intrare pentru funcția Reduce sau Reducer. Similar fazei de cartografiere, sunt implicate două sarcini – amestecarea și reducerea.

Deci, perechile cheie-valoare obținute sunt sortate și amestecate pentru a fi alimentate la Reducer. Apoi, Reducer-ul grupează sau agregează datele în funcție de perechea cheie-valoare pe baza algoritmului de reducere pe care l-a scris dezvoltatorul.

Aici, valorile din faza de amestecare sunt combinate pentru a returna o valoare de ieșire. Această fază rezumă întregul set de date.

Acum, procesul complet de executare a sarcinilor Map and Reduce este controlat de unele entități. Acestea sunt:

  • Job Tracker: Cu cuvinte simple, un job tracker acționează ca un maestru care este responsabil pentru executarea completă a unui job trimis. Instrumentul de urmărire a joburilor gestionează toate joburile și resursele dintr-un cluster. În plus, instrumentul de urmărire a joburilor programează fiecare hartă adăugată în Task Tracker care rulează pe un anumit nod de date.
  • Instrumente de urmărire a sarcinilor multiple: Cu cuvinte simple, instrumentele de urmărire a sarcinilor multiple lucrează ca sclavi care îndeplinesc sarcina urmând instrucțiunile Job Tracker. Un instrument de urmărire a sarcinilor este implementat pe fiecare nod separat din cluster care execută sarcinile Map și Reduce.

Funcționează deoarece un job va fi împărțit în mai multe sarcini care vor rula pe diferite noduri de date dintr-un cluster. Job Tracker este responsabil pentru coordonarea sarcinii prin programarea sarcinilor și rularea lor pe mai multe noduri de date. Apoi, Task Tracker care se află pe fiecare nod de date execută părți ale sarcinii și are grijă de fiecare sarcină.

În plus, instrumentele de urmărire a sarcinilor trimit rapoarte de progres către instrumentul de urmărire a locurilor de muncă. De asemenea, Task Tracker trimite periodic un semnal de „bătăi inimii” către Job Tracker și îi notifică despre starea sistemului. În cazul oricărui eșec, un instrument de urmărire a sarcinilor este capabil să reprogrameze jobul pe un alt instrument de urmărire a sarcinilor.

Faza de ieșire: când ajungeți la această fază, veți avea perechile cheie-valoare finale generate din Reducer. Puteți folosi un formatator de ieșire pentru a traduce perechile cheie-valoare și pentru a le scrie într-un fișier cu ajutorul unui scriitor de înregistrări.

De ce să folosiți MapReduce?

Iată câteva dintre beneficiile MapReduce, explicând motivele pentru care trebuie să îl utilizați în aplicațiile dvs. de date mari:

Procesare paralelă

Puteți împărți o lucrare în diferite noduri în care fiecare nod se ocupă simultan de o parte a acestei sarcini în MapReduce. Deci, împărțirea sarcinilor mai mari în altele mai mici scade complexitatea. De asemenea, deoarece sarcini diferite rulează în paralel în mașini diferite în loc de o singură mașină, este nevoie de mult mai puțin timp pentru a procesa datele.

Localitatea datelor

În MapReduce, puteți muta unitatea de procesare la date, nu invers.

În mod tradițional, datele au fost aduse la unitatea de procesare pentru prelucrare. Cu toate acestea, odată cu creșterea rapidă a datelor, acest proces a început să prezinte multe provocări. Unele dintre ele au fost costuri mai mari, consumă mai mult timp, încarcărea nodului principal, defecțiuni frecvente și performanță redusă a rețelei.

  Cum să devii un OSCP [Full Guide]

Dar MapReduce ajută la depășirea acestor probleme urmând o abordare inversă – aducând o unitate de procesare a datelor. În acest fel, datele sunt distribuite între diferite noduri unde fiecare nod poate procesa o parte din datele stocate.

Ca rezultat, oferă rentabilitate și reduce timpul de procesare, deoarece fiecare nod funcționează în paralel cu partea de date corespunzătoare. În plus, deoarece fiecare nod procesează o parte din aceste date, niciun nod nu va fi supraîncărcat.

Securitate

Modelul MapReduce oferă o securitate mai mare. Vă ajută să vă protejați aplicația împotriva datelor neautorizate, sporind în același timp securitatea clusterului.

Scalabilitate și flexibilitate

MapReduce este un cadru extrem de scalabil. Vă permite să rulați aplicații de pe mai multe mașini, folosind date cu mii de terabytes. De asemenea, oferă flexibilitatea procesării datelor care pot fi structurate, semi-structurate sau nestructurate și de orice format sau dimensiune.

Simplitate

Puteți scrie programe MapReduce în orice limbaj de programare precum Java, R, Perl, Python și multe altele. Prin urmare, este ușor pentru oricine să învețe și să scrie programe, asigurându-se în același timp că cerințele de procesare a datelor sunt îndeplinite.

Cazuri de utilizare a MapReduce

  • Indexarea textului integral: MapReduce este utilizat pentru a efectua indexarea textului integral. Mapper-ul său poate mapa fiecare cuvânt sau frază într-un singur document. Și Reducetorul este folosit pentru a scrie toate elementele mapate într-un index.
  • Calcularea Pagerank: Google folosește MapReduce pentru a calcula Pagerank.
  • Analiză jurnal: MapReduce poate analiza fișiere jurnal. Poate împărți un fișier jurnal mare în diferite părți sau poate împărți în timp ce mapper-ul caută pagini web accesate.

O pereche cheie-valoare va fi transmisă reductorului dacă o pagină web este identificată în jurnal. Aici, pagina web va fi cheia, iar indexul „1” este valoarea. După ce a furnizat o pereche cheie-valoare către Reducer, diverse pagini web vor fi agregate. Rezultatul final este numărul total de accesări pentru fiecare pagină web.

  • Reverse Web-Link Graph: cadrul găsește, de asemenea, utilizare în Reverse Web-Link Graph. Aici, Map() furnizează URL-ul țintă și sursa și primește intrare de la sursă sau pagina web.

Apoi, Reduce() adună lista fiecărei adrese URL sursă asociată cu adresa URL țintă. În cele din urmă, scoate sursele și ținta.

  • Numărarea cuvintelor: MapReduce este folosit pentru a număra de câte ori apare un cuvânt într-un anumit document.
  • Încălzirea globală: organizațiile, guvernele și companiile pot folosi MapReduce pentru a rezolva problemele legate de încălzirea globală.

De exemplu, poate doriți să știți despre nivelul crescut de temperatură al oceanului din cauza încălzirii globale. Pentru aceasta, puteți aduna mii de date de pe tot globul. Datele pot fi temperatură ridicată, temperatură scăzută, latitudine, longitudine, dată, oră etc. Acest lucru va necesita mai multe hărți și va reduce sarcinile pentru a calcula rezultatul folosind MapReduce.

  • Teste de medicamente: în mod tradițional, oamenii de știință și matematicienii au lucrat împreună pentru a formula un nou medicament care poate lupta împotriva unei boli. Cu diseminarea algoritmilor și MapReduce, departamentele IT din organizații pot aborda cu ușurință problemele care au fost tratate doar de Supercomputers, Ph.D. oameni de știință, etc. Acum, puteți inspecta eficacitatea unui medicament pentru un grup de pacienți.
  • Alte aplicații: MapReduce poate procesa chiar și date la scară mare care altfel nu se pot încadra într-o bază de date relațională. De asemenea, utilizează instrumente de știință a datelor și permite rularea acestora pe seturi de date diferite, distribuite, ceea ce anterior era posibil doar pe un singur computer.

Ca rezultat al robusteței și simplității MapReduce, acesta găsește aplicații în domeniul militar, afacerilor, științei etc.

Concluzie

MapReduce se poate dovedi a fi o descoperire în tehnologie. Nu este doar un proces mai rapid și mai simplu, ci și cost-eficient și mai puțin consumator de timp. Având în vedere avantajele sale și utilizarea în creștere, este probabil ca acesta să fie martor la o adoptare mai mare în industrii și organizații.

De asemenea, puteți explora unele dintre cele mai bune resurse pentru a învăța Big Data și Hadoop.