Hadoop este un cadru open source, bazat pe Java, utilizat pentru stocarea și procesarea datelor mari. Datele sunt stocate pe servere ieftine de mărfuri care rulează sub formă de clustere. Sistemul său de fișiere distribuit permite procesarea simultană și toleranța la erori. Dezvoltat de Doug Cutting și Michael J. Cafarella, Hadoop utilizează modelul de programare MapReduce pentru stocarea și recuperarea mai rapidă a datelor din nodurile sale. Cadrul este gestionat de Apache Software Foundation și este licențiat sub licența Apache 2.0.
De ani de zile, în timp ce puterea de procesare a serverelor de aplicații a crescut de mai multe ori, bazele de date au rămas în urmă din cauza capacității și vitezei lor limitate. Cu toate acestea, astăzi, pe măsură ce multe aplicații generează date de mari dimensiuni care trebuie procesate, Hadoop joacă un rol semnificativ în a oferi o schimbare atât de necesară lumii bazelor de date.
Descărcați acum Hadoop and Data Lakes.
Citește acum
Din punct de vedere al afacerilor, de asemenea, există beneficii directe și indirecte. Prin utilizarea tehnologiei open-source pe servere necostisitoare care se află în cea mai mare parte în cloud (și, uneori, la fața locului), organizațiile realizează economii semnificative de costuri.
În plus, capacitatea de a colecta date masive și cunoștințele derivate din prelucrarea acestor date au ca rezultat decizii de afaceri mai bune în lumea reală – cum ar fi capacitatea de a se concentra pe segmentul de consumatori potrivit, de a elimina sau de a remedia procesele eronate, de a optimiza operațiunile din podea, de a oferi rezultate de căutare relevante, de a efectua analize predictive și așa mai departe.
- Cum Hadoop îmbunătățește bazele de date tradiționale
- Capacitate: Hadoop stochează volume mari de date.
- Viteză: Hadoop stochează și recuperează datele mai rapid.
- 5 beneficii ale Hadoop pentru Big Data
- Ecosistemul Hadoop: Componente de bază
- HDFS: Întreținerea sistemului de fișiere distribuit
- YARN: Yet Another Resource Negotiator
- MapReduce
- Ecosistemul Hadoop: Componente suplimentare
- Hive: Depozitarea datelor
- Pig: Reduce MapReduce Functions
- Hive versus Pig
- Flume: Big Data Ingestion
- Sqoop: Ingestia de date pentru baze de date relaționale
- Zookeeper: Coordonarea aplicațiilor distribuite
- Kafka: Transferuri de date mai rapide
- Bază: Bază de date non-relațională
- Provocări ale Hadoop
- Curba de învățare abruptă
- Diferite seturi de date necesită abordări diferite
- Limitații ale MapReduce
- Securitatea datelor
- Hadoop vs Apache Spark
- Un viitor cu multe posibilități
Cum Hadoop îmbunătățește bazele de date tradiționale
Hadoop rezolvă două provocări cheie ale bazelor de date tradiționale:
Capacitate: Hadoop stochează volume mari de date.
Prin utilizarea unui sistem de fișiere distribuit numit HDFS (Hadoop Distributed File System), datele sunt împărțite în bucăți și salvate în clustere de servere de bază. Deoarece aceste servere commodity sunt construite cu configurații hardware simple, acestea sunt economice și ușor de scalat pe măsură ce datele cresc.
Viteză: Hadoop stochează și recuperează datele mai rapid.
Hadoop utilizează modelul de programare funcțională MapReduce pentru a efectua procesarea paralelă a seturilor de date. Astfel, atunci când o interogare este trimisă la baza de date, în loc să trateze datele în mod secvențial, sarcinile sunt împărțite și executate concomitent pe serverele distribuite. În cele din urmă, rezultatul tuturor sarcinilor este colaționat și trimis înapoi la aplicație, îmbunătățind drastic viteza de procesare.
5 beneficii ale Hadoop pentru Big Data
Pentru big data și analiză, Hadoop este un salvator de vieți. Datele colectate despre oameni, procese, obiecte, instrumente etc. sunt utile doar atunci când apar modele semnificative care, la rândul lor, duc la decizii mai bune. Hadoop ajută la depășirea provocării reprezentate de vastitatea datelor mari:
- Reziliență – Datele stocate în orice nod sunt, de asemenea, replicate în alte noduri ale clusterului. Acest lucru asigură toleranța la erori. Dacă un nod se defectează, există întotdeauna o copie de rezervă a datelor disponibile în cluster.
- Scalabilitate – Spre deosebire de sistemele tradiționale care au o limitare în ceea ce privește stocarea datelor, Hadoop este scalabil, deoarece funcționează într-un mediu distribuit. Pe măsură ce apare necesitatea, configurația poate fi extinsă cu ușurință pentru a include mai multe servere care pot stoca până la mai mulți petabyte de date.
- Costuri reduse – Deoarece Hadoop este un cadru open-source, fără a fi necesară procurarea unei licențe, costurile sunt semnificativ mai mici în comparație cu sistemele de baze de date relaționale. De asemenea, utilizarea de hardware de bază ieftin lucrează în favoarea sa pentru a menține soluția economică.
- Viteză – Sistemul de fișiere distribuit Hadoop, procesarea concurentă și modelul MapReduce permit rularea interogărilor complexe în câteva secunde.
- Diversitatea datelor – HDFS are capacitatea de a stoca diferite formate de date, cum ar fi cele nestructurate (de exemplu, videoclipuri), semistructurate (de exemplu, fișiere XML) și structurate. În timpul stocării datelor, nu este necesară validarea în raport cu o schemă predefinită. Mai degrabă, datele pot fi descărcate în orice format. Ulterior, atunci când sunt recuperate, datele sunt analizate și încadrate în orice schemă, după cum este necesar. Acest lucru oferă flexibilitatea de a obține informații diferite folosind aceleași date.
Descărcați Raportul O’Reilly: Moving Hadoop to the Cloud acum.
Citește acum
Ecosistemul Hadoop: Componente de bază
Hadoop nu este doar o aplicație, ci mai degrabă o platformă cu diverse componente integrale care permit stocarea și procesarea distribuită a datelor. Aceste componente formează împreună ecosistemul Hadoop.
Câteva dintre acestea sunt componente de bază, care formează fundația cadrului, în timp ce altele sunt componente suplimentare care aduc funcționalități adiționale în lumea Hadoop.
Componentele de bază ale Hadoop sunt:
HDFS: Întreținerea sistemului de fișiere distribuit
HDFS este pilonul Hadoop care întreține sistemul de fișiere distribuit. Acesta face posibilă stocarea și replicarea datelor pe mai multe servere.
HDFS are un NameNode și un DataNode. DataNodes sunt serverele de bază unde sunt stocate efectiv datele. NameNode, pe de altă parte, conține metadate cu informații despre datele stocate în diferitele noduri. Aplicația interacționează doar cu NameNode, care comunică cu nodurile de date, după cum este necesar.
YARN: Yet Another Resource Negotiator
YARN este acronimul de la Yet Another Resource Negotiator. Acesta gestionează și programează resursele și decide ce trebuie să se întâmple în fiecare nod de date. Nodul principal central care gestionează toate cererile de procesare se numește Resource Manager. Managerul de resurse interacționează cu managerii de noduri; fiecare nod de date sclav are propriul manager de noduri pentru a executa sarcini.
MapReduce
MapReduce este un model de programare care a fost folosit pentru prima dată de Google pentru indexarea operațiunilor sale de căutare. Este logica utilizată pentru a împărți datele în seturi mai mici. Funcționează pe baza a două funcții – Map() și Reduce() – care analizează datele într-un mod rapid și eficient.
În primul rând, funcția Map grupează, filtrează și sortează mai multe seturi de date în paralel pentru a produce tupluri (perechi cheie, valoare). Apoi, funcția Reduce agregă datele din aceste tuple pentru a produce rezultatul dorit.
Ecosistemul Hadoop: Componente suplimentare
Cele de mai jos sunt câteva componente suplimentare care sunt utilizate pe scară largă în ecosistemul Hadoop.
Hive: Depozitarea datelor
Hive este un sistem de depozitare a datelor care ajută la interogarea seturilor mari de date din HDFS. Înainte de Hive, dezvoltatorii se confruntau cu provocarea de a crea sarcini complexe MapReduce pentru a interoga datele Hadoop. Hive utilizează HQL (Hive Query Language), care seamănă cu sintaxa SQL. Deoarece majoritatea dezvoltatorilor provin din domeniul SQL, Hive este mai ușor de asimilat.
Avantajul Hive este că un driver JDBC/ODBC acționează ca o interfață între aplicație și HDFS. Acesta expune sistemul de fișiere Hadoop sub formă de tabele, convertește HQL în sarcini MapReduce și viceversa. Astfel, în timp ce dezvoltatorii și administratorii de baze de date obțin avantajul procesării pe loturi a unor seturi mari de date, ei pot folosi interogări simple și familiare pentru a realiza acest lucru. Dezvoltat inițial de echipa Facebook, Hive este acum o tehnologie open source.
Pig: Reduce MapReduce Functions
Pig, dezvoltat inițial de Yahoo!, este similar cu Hive prin faptul că elimină necesitatea de a crea funcții MapReduce pentru a interoga HDFS. Similar cu HQL, limbajul utilizat – aici, numit „Pig Latin” – este mai apropiat de SQL. „Pig Latin” este un strat de limbaj de flux de date de nivel înalt deasupra MapReduce.
Pig are, de asemenea, un mediu de execuție care se interfațează cu HDFS. Scripturile în limbaje precum Java sau Python pot fi, de asemenea, încorporate în Pig.
Hive versus Pig
Deși Pig și Hive au funcții similare, unul poate fi mai eficient decât celălalt în diferite scenarii.
Pig este util în etapa de pregătire a datelor, deoarece poate efectua cu ușurință îmbinări și interogări complexe. De asemenea, funcționează bine cu diferite formate de date, inclusiv semi-structurate și nestructurate. Pig Latin este mai apropiat de SQL, dar, de asemenea, diferă suficient de mult de SQL pentru a avea o curbă de învățare.
Hive, cu toate acestea, funcționează bine cu date structurate și, prin urmare, este mai eficient în timpul depozitării de date. Este folosit în partea de server a clusterului.
Cercetătorii și programatorii tind să folosească Pig în partea de client a unui cluster, în timp ce utilizatorii de business intelligence, cum ar fi analiștii de date, consideră că Hive este cel mai potrivit.
Flume: Big Data Ingestion
Flume este un instrument de ingestie de date mari care acționează ca un serviciu de curierat între mai multe surse de date și HDFS. Acesta colectează, agregă și trimite cantități uriașe de date în flux continuu (de exemplu, fișiere jurnal, evenimente) generate de aplicații precum site-urile de social media, aplicațiile IoT și portalurile de comerț electronic în HDFS.
Flume este bogat în caracteristici, acesta:
- Are o arhitectură distribuită.
- Asigură un transfer de date fiabil.
- Este tolerant la erori.
- Are flexibilitatea de a colecta date în loturi sau în timp real.
- Poate fi scalat pe orizontală pentru a gestiona mai mult trafic, după cum este necesar.
Sursele de date comunică cu agenții Flume – fiecare agent are o sursă, un canal și un chiuveta. Sursa colectează datele de la expeditor, canalul stochează temporar datele și, în cele din urmă, chiuveta transferă datele la destinație, care este un server Hadoop.
Sqoop: Ingestia de date pentru baze de date relaționale
Sqoop („SQL”, pentru Hadoop) este un alt instrument de ingestie de date, ca și Flume. În timp ce Flume lucrează cu date nestructurate sau semistructurate, Sqoop este utilizat pentru a exporta date din și a importa date în baze de date relaționale. Deoarece majoritatea datelor de întreprindere sunt stocate în baze de date relaționale, Sqoop este utilizat pentru a importa aceste date în Hadoop pentru a fi examinate de analiști.
Administratorii și dezvoltatorii de baze de date pot utiliza o interfață simplă de linie de comandă pentru a exporta și importa date. Sqoop convertește aceste comenzi în format MapReduce și le trimite către HDFS folosind YARN. Sqoop este, de asemenea, tolerant la erori și efectuează operații simultane ca Flume.
Zookeeper: Coordonarea aplicațiilor distribuite
Zookeeper este un serviciu care coordonează aplicațiile distribuite. În cadrul Hadoop, acesta acționează ca un instrument de administrare cu un registru centralizat care are informații despre clusterul de servere distribuite pe care îl gestionează. Unele dintre funcțiile sale cheie sunt:
- Menținerea informațiilor de configurare (starea partajată a datelor de configurare)
- Serviciul de denumire (atribuirea numelui fiecărui server)
- Serviciul de sincronizare (gestionează blocajele, condițiile de cursă și inconsecvența datelor)
- Elegerea liderului (alege un lider printre servere prin consens)
Clusterul de servere pe care rulează serviciul Zookeeper se numește un „ansamblu”. Ansamblul alege un lider în rândul grupului, iar restul se comportă ca adepți. Toate operațiile de scriere din partea clienților trebuie să fie direcționate prin lider, în timp ce operațiile de citire pot merge direct la orice server.
Zookeeper oferă o fiabilitate și o reziliență ridicată prin sincronizare sigură împotriva eșecurilor, atomicitate și serializare a mesajelor.
Kafka: Transferuri de date mai rapide
Kafka este un sistem de mesagerie distribuită de publicare-subscriere care este adesea utilizat cu Hadoop pentru transferuri de date mai rapide. Un cluster Kafka este format dintr-un grup de servere care acționează ca un intermediar între producători și consumatori.
În contextul big data, un exemplu de producător ar putea fi un senzor care colectează date despre temperatură pentru a le retransmite către server. Consumatorii sunt serverele Hadoop. Producătorii publică mesajele pe un subiect, iar consumatorii extrag mesajele prin ascultarea subiectului.
Un singur subiect poate fi împărțit în continuare în partiții. Toate mesajele cu aceeași cheie ajung la o anumită partiție. Un consumator poate asculta una sau mai multe partiții.
Prin gruparea mesajelor sub o singură cheie și obținerea unui consumator care să se adreseze unor partiții specifice, mai mulți consumatori pot asculta același subiect în același timp. Astfel, un subiect este paralelizat, crescând debitul sistemului. Kafka este adoptat pe scară largă pentru viteza, scalabilitatea și replicarea sa robustă.
Bază: Bază de date non-relațională
HBase este o bază de date non-relațională, orientată pe coloane, care se află deasupra HDFS. Una dintre provocările cu HDFS este că poate face doar procesare pe loturi. Astfel, pentru interogări interactive simple, datele trebuie totuși procesate în loturi, ceea ce duce la o latență ridicată.
HBase rezolvă această provocare permițând interogări pentru rânduri unice în tabele uriașe cu o latență redusă. Realizează acest lucru prin utilizarea internă a tabelelor hash. Este modelat după modelul Google BigTable, care ajută la accesarea Google File System (GFS).
HBase este scalabil, are suport pentru eșecuri atunci când un nod cade și este bun cu date nestructurate, precum și semi-structurate. Prin urmare, este ideal pentru interogarea depozitelor de date mari în scopuri analitice.
Descărcați Raportul O’Reilly: Moving Hadoop to the Cloud acum.
Citește acum
Provocări ale Hadoop
Deși Hadoop a fost considerat pe scară largă ca fiind un facilitator cheie al big data, există încă unele provocări care trebuie luate în considerare. Aceste provocări provin din natura ecosistemului său complex și din necesitatea unor cunoștințe tehnice avansate pentru a îndeplini funcțiile Hadoop. Cu toate acestea, cu o platformă și instrumente de integrare adecvate, complexitatea este redusă semnificativ și, prin urmare, facilitează și lucrul cu acesta.
Curba de învățare abruptă
Pentru a interoga sistemul de fișiere Hadoop, programatorii trebuie să scrie funcții MapReduce în Java. Acest lucru nu este simplu și implică o curbă de învățare abruptă. De asemenea, există prea multe componente care alcătuiesc ecosistemul și este nevoie de timp pentru a se familiariza cu ele.
Diferite seturi de date necesită abordări diferite
Nu există o soluție „unică pentru toți” în Hadoop. Majoritatea componentelor suplimentare discutate mai sus au fost construite ca răspuns la o lacună care trebuia rezolvată.
De exemplu, Hive și Pig oferă o modalitate mai simplă de interogare a seturilor de date. În plus, instrumentele de ingerare a datelor, cum ar fi Flume și Sqoop, ajută la colectarea datelor din mai multe surse. Există, de asemenea, numeroase alte componente și este nevoie de experiență pentru a face alegerea potrivită.
Limitații ale MapReduce
MapReduce este un model de programare excelent pentru procesarea pe loturi a seturilor mari de date. Cu toate acestea, are limitările sale.
Abordarea sa intensivă de fișiere, cu citiri și scrieri multiple, nu este potrivită pentru analiza datelor în timp real, interactivă sau pentru sarcini iterative. Pentru astfel de operațiuni, MapReduce nu este suficient de eficient și duce la latențe ridicate. (Există soluții de rezolvare a acestei probleme. Apache este o alternativă care umple golul lui MapReduce.)
Securitatea datelor
Pe măsură ce datele mari sunt mutate în cloud, datele sensibile sunt descărcate în serverele Hadoop, ceea ce creează necesitatea de a asigura securitatea datelor. Ecosistemul vast are atât de multe instrumente încât este important să ne asigurăm că fiecare instrument are drepturile de acces corecte la date. Trebuie să existe o autentificare adecvată, o aprovizionare, o criptare a datelor și un audit frecvent. Hadoop are capacitatea de a aborda această provocare, dar este o chestiune de a avea expertiza necesară și de a fi meticulos în execuție.
Deși mulți giganți din domeniul tehnologiei au folosit componentele Hadoop discutate aici, acesta este încă relativ nou în industrie. Cele mai multe provocări derivă din această născocire, dar o platformă robustă de integrare a datelor mari le poate rezolva sau ușura pe toate.
Hadoop vs Apache Spark
Modelul MapReduce, în ciuda numeroaselor sale avantaje, nu este eficient pentru interogări interactive și procesarea datelor în timp real, deoarece se bazează pe scrieri pe disc între fiecare etapă de procesare.
Spark este un motor de procesare a datelor care rezolvă această provocare prin utilizarea stocării datelor în memorie. Deși a început ca un subproiect al Hadoop, are propria sa tehnologie de cluster.
De multe ori, Spark este utilizat pe lângă HDFS pentru a valorifica doar aspectul de stocare al Hadoop. Pentru algoritmul de procesare, folosește propriile biblioteci care acceptă interogări SQL, streaming, învățare automată și grafice.
Specialiștii în domeniul datelor folosesc Spark pe scară largă pentru viteza sa fulminantă și pentru API-urile sale elegante și bogate în caracteristici care facilitează lucrul cu seturi mari de date.
În timp ce Spark poate părea să aibă un avantaj față de Hadoop, ambele pot funcționa în tandem. În funcție de cerințe și de tipul de seturi de date, Hadoop și Spark se completează reciproc. Spark nu are un sistem de fișiere propriu, așa că trebuie să depindă de HDFS, sau de alte soluții de acest tip, pentru stocare.
Reala comparație este de fapt între logica de procesare a Spark și modelul MapReduce. Atunci când memoria RAM este o constrângere și pentru lucrările de noapte, MapReduce se potrivește foarte bine. Cu toate acestea, pentru fluxul de date, pentru accesarea bibliotecilor de învățare automată și pentru operațiuni rapide în timp real, Spark este alegerea ideală.
Un viitor cu multe posibilități
În doar un deceniu, Hadoop și-a făcut simțită prezența într-un mod remarcabil în industria de calcul. Acest lucru se datorează faptului că, în sfârșit, a făcut ca posibilitatea de analiză a datelor să devină reală. De la analiza vizitelor pe site la detectarea fraudelor și până la aplicațiile bancare, aplicațiile sale sunt diverse.
Cu Talend Open Studio for Big Data este ușor să vă integrați configurația Hadoop în orice arhitectură de date. Talend oferă mai mulți conectori de date încorporați decât orice altă soluție de gestionare a datelor, permițându-vă să construiți fluxuri de date fără întreruperi între Hadoop și orice format de fișier important (CSV, XML, Excel etc.), sistem de baze de date (Oracle, SQL Server, MySQL etc.), aplicație de întreprindere împachetată (SAP, SugarCRM etc.) și chiar servicii de date în cloud precum Salesforce și Force.com.
.