ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 53
Abonament PDF

Procesarea fluxului de date în lumea Big Data

Adela Mureșan
Senior Big Data Developer @ VE Interactive



PROGRAMARE


Trăim într-o lume guvernată de date care cresc exponențial cu fiecare an. Nu e de mirare faptul că auzim tot mai des despre "tehnologii Big Data". Dacă la început, ecosistemul Big Data a fost doar o colecție de unelte menite să ne ajute să gestionam volumul de date, acum, trebuie să ia în considerare și problema vitezei.

Cum totul se întâmplă așa de repede în jurul nostru și deciziile bazate pe date sunt luate pe loc, procesarea evenimentelor în timp real începe să dețină un rol central în lumea Big Data.

Articolul vizează câteva opțiuni de creare a unui astfel de sistem, capabile de a colecta și de a procesa fluxul de date în timp real.

Prezentare generală a unui sistem de procesare a datelor în timp real

În primul rând, trebuie să stabilim exact ce înseamnă procesarea în timp real. Procesarea în timp real este un termen folosit pentru un sistem care preia date și face ceva semnificativ cu ele, într-un interval de timp fix și scurt. Când vorbim despre timp real, uneori ne referim și la procesare în timp aproape real. Ce înseamnă aceasta? Definiția indică o mică întârziere între timpul când a avut loc acțiunea și când e tratată. Această mică întârziere este uneori în termeni de milisecunde sau secunde care în cele mai multe cazuri poate fi considerată instant. Această viteză mare este ceea ce definește sistemele de procesare în timp real.

Pentru ca tot sistemul să funcționeze, trebuie să existe trei etape bine definite: crearea datelor, colectarea și procesarea.

Ce date sunt colectate? Totul. Suntem înconjurați de dispozitive conectate care trimit date la un sistem care le preia și întreprinde acțiuni inteligente sau pur și simplu creează niște rapoarte ca să înțeleagă mai bine tot sistemul. Din 2013 încoace, mai multe date au fost create decât în întreaga istorie a omenirii [1]. De la click-uri, la acțiunea utilizatorilor pe un site, la mașina, trasee GPS la comportamentul animalelor și la senzorii orașelor și nu doar, datele sunt colectate. Diverse companii au realizat valoarea datelor și au decis să le capteze.

Ce presupune procesarea în timp real? După ce datele sunt colectate prin intermediul unor instrumente de colectare a datelor, acestea sunt ulterior folosite pentru analiza. De multe ori, procesarea trebuie să se întâmple rapid astfel ca sistemul să reacționeze la schimbarea condițiilor. Acestea sunt necesare pentru optimizări în cadrul site-urilor, afișarea reclamelor, detectarea fraudelor, monitorizarea sistemelor și multe altele.

Reacția rapidă la fluxul de date nu este fezabilă cu bazele de date tradiționale. Din fericire, există multe framework-uri optimizate pentru timp real sau aproape real, bazate pe capacitățile oferite de Hadoop și ecosistemul Hadoop.

Colectarea datelor

Acțiunile utilizatorilor și datele de la senzori sunt colectate și adesea sunt trimise direct la un server sau la un sistem cu o coadă de mesaje. Datele pot fi trimise în timp real sau colectate în grupuri.

Figura 1- Colectarea datelor

Cu fluxul de date, fiecare eveniment este capturat în momentul în care este produs de către clientul sursă. În modul de colectare în grupuri, datele sunt stocate și trimise ca loturi mici conținând toate evenimentele care au avut loc în intervalul respectiv de timp.

Există două opțiuni de a procura datele: clientul poate avea incorporat o bucată de cod care trimite evenimentele sau clientul loghează în mod pasiv evenimentele și sistemul de procesare identifică datele noi, urmând ca apoi, folosind instrumente de colectare să preia informațiile noi.

Mai multe instrumente de colectare facilitează procesul. Câteva dintre acestea sunt:

Apache NiFi

Apache NiFi este un proiect care atrage tot mai multă atenție în lumea Hadoop. Este un instrument multilateral care ne poate ajuta la colectarea datelor și la manipularea lor, folosind diverse surse de date. Este o resursă excelentă pentru colectarea fluxului de date în timp real, pentru filtrarea lor la nevoie și de asemenea poate funcționa ca un mesager și trimite datele la locurile dorite.

Figura 2 - Un exemplu de flux NiFi folosind diverse procesoare

NiFi poate fi instalat în multe moduri, de la dispozitive foarte simple cu conectare la internet până la un cluster de mașini, în cazul unor sarcini mai complexe sau care necesită mai multe resurse. După instalare, va oferi o interfață web unde utilizatorul poate defini o serie de pași.

Fiecare pas este deservit de ceea ce NiFi numește "processors". Exista peste 180 astfel de processors care sunt ușor de configurat pentru a capta, a transforma și a transmite date. Pe scurt, NiFi a fost proiectat pentru a automatiza fluxul de date, fie că citește informații folosind HTTP, accesează fișiere expuse prin FTP, tweeturi în timp real și multe altele, urmând ca apoi să le parseze, să le transforme și să salveze datele.

Apache Flume

Flume este un alt proiect susținut de Apache care este proiectat pentru colectarea eficientă și mutarea unui volum mare de date. Bazat pe arhitectura fluxului de date continuu, este un candidat potrivit pentru colectarea datelor în timp real.

Apache Kafka

În topul instrumentelor folosite pentru a realiza un sistem de procesare în timp real este Apache Kafka. Kafka a fost proiectat a fi o platformă distribuită pentru fluxul de date, care funcționează ca un agent ce gestionează o coadă de mesaje. Kafka oferă un management "high-throughput, low-latency" pentru feedul de date. Ne permite să stocăm într-un fel tolerant la erori și să procesăm datele pe măsură ce se întâmplă.

Figura 3- Sistemul Kafka

Kafka oferă mulți producători cât și consumatori pentru fluxul de date. Posibilitatea abonării la evenimentele în timp real fac Kafka un candidat potrivit pentru un pipeline cu latență mică.

Instrumente de procesare

În ultimii ani, procesarea în timp real a preluat un rol central în ținutul Big Data. Mai multe platforme puternice și open-source au fost create pentru a facilita aceasta. Trei dintre cele mai notabile platforme sunt Apache Storm, Apache Spark cu Spark Streaming și Apache Flink.

Apache Storm

Apache Storm a devenit un proiect de top Apache în septembrie 2014. Storm este proiectat pentru a gestiona datele în timp real cât mai bine posibil. Arhitectura sa este bazată pe conectarea de spout-uri pentru flux de intrare și bolturi pentru procesare și output. Spouts și bots împreună formează ceea ce este numit o topologie.

O dată ce o topologie este pornită, spouturile aduc datele în sistem și le predă la bolturi. Această arhitectură face Storm adecvat pentru procesarea fluxului de date. Există multe spouturi de intrare pentru diverse surse de la Apache Kafka, Twitter Streaming API și multe altele sau ne putem defini propriul spout.

Spark Streaming

Apache Spark a fost creat de Matei Zaharia, născut în România. În timpul studiilor de doctorat, la UC Berkeley a început proiectul Spark. Ulterior, a donat codul la Apache Software Foundation, care a menținut Spark de atunci. De la release-ul inițial în 2014 ca un proiect de top Apache, Spark a evoluat constant, cu mai mult de 1000 contribuitori la proiectul său open-source.

Unul dintre beneficiile oferite de Spark este numărul de module diferite pe care le are:

Spark Streaming, similar cu Storm a fost proiectat pentru o scalabilitate masivă și oferă mijloacele de procesare în timp real a unui volum mare de date.

Diferența principală dintre Spark si Storm este dată de faptul că Storm reacționează imediat la o schimbare de date, în timp ce modelul Spark folosește noțiunea de procesare micro-batch. Aceasta înseamna că procesează evenimentele în timp aproape real. În loc să proceseze fluxul de date, câte un element pe rând, Spark acceptă datele în paralel și le stochează în memoria nodurilor din clusterul Spark. Procesarea are loc pe micro-batch-uri, într-o fereastră de timp cum este definită în configurările din jobul de Spark.

Ce să alegem: Spark sau Storm?

Dacă începem un proiect despre care știm că va trata doar fluxul de date în timp real al evenimentelor și latența este foarte importantă, varianta mai potrivită ar fi Storm.

Pe de altă parte, dacă avem deja un cluster Hadoop sau Mesos și proiectul este mai complex, implicând și machine learning, query-uri SQL sau procesare de grafuri, atunci Spark ar fi mai convenabil. De asemenea, pentru Spark, echipa ar putea avea deja experiența procesărilor batch folosind Spark Core. Spark Streaming este foarte similar cu Spark Core, având aceleași concepte de RDD(Resilient Distributed Datasets) din Spark, singura diferența dintre un job de streaming și unul de batch este inițializarea, în timp ce toate celelalte concepte rămân la fel.

Apache Flink

Apache Flink este un alt framework de procesare Big Data, care a început și el ca un proiect de cercetare. În iunie 2015, Flink a avut prima lansare ca un proiect Apache de top. În ultimele luni, a început să capteze atenția multor programatori Big Data.

În timp ce Spark gestionează datele în micro-batch-uri, Flink este proiectat să proceseze fluxul de date în timp real. Motorul de execuție Flink este similar cu cel al Stormului pentru procesarea fluxului de date, dar oferă și posibilitatea procesării cu ușurință în mod batch, o funcționalitate care lipsește din Storm.

Dezavantajul la Flink este faptul că fiind mai recent, este încă în consolidare și nu are deocamdată aceeași rată de adopție ca și Spark sau Storm. Totuși este un instrument cu potențial de a evolua foarte mult.

Concluzii

Volumul de date crește rapid și cererea pentru procesarea fluxului de date în timp real crește de asemenea. Există multe instrumente puternice plătite sau open-source, frameworkuri și platforme care țin cont de această nevoie. Toate progresează constant, facilitând dezvoltarea de sisteme de procesare în timp real. Putem prezice o adopție largă a acestor tehnologii de către multe companii care intră în lumea Big Data.

Referințe:

http://www.forbes.com/sites/bernardmarr/2015/09/30/big-data-20-mind-boggling-facts-everyone-must-read/\#7077a96a6c1d

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects