03/28/2024

Începeți procesarea datelor cu Kafka și Spark

Prelucrarea datelor mari este una dintre cele mai complexe proceduri cu care se confruntă organizațiile. Procesul devine mai complicat atunci când aveți un volum mare de date în timp real.

În această postare, vom descoperi ce este procesarea datelor mari, cum se face și vom explora Apache Kafka și Spark – cele două dintre cele mai cunoscute instrumente de procesare a datelor!

Ce este prelucrarea datelor? Cum se face?

Prelucrarea datelor este definită ca orice operațiune sau set de operațiuni, efectuate sau nu prin intermediul unui proces automatizat. Poate fi considerată ca colectarea, ordonarea și organizarea informațiilor în conformitate cu o dispoziție logică și adecvată pentru interpretare.

Când un utilizator accesează o bază de date și obține rezultate pentru căutarea sa, procesarea datelor este cea care îi aduce rezultatele de care au nevoie. Informațiile extrase ca rezultat al căutării sunt rezultatul prelucrării datelor. De aceea, tehnologia informației își pune accentul existenței centrate pe prelucrarea datelor.

Prelucrarea tradițională a datelor a fost efectuată folosind un software simplu. Cu toate acestea, odată cu apariția Big Data, lucrurile s-au schimbat. Big Data se referă la informații al căror volum poate depăși o sută de terabytes și petabytes.

În plus, aceste informații sunt actualizate în mod regulat. Exemplele includ date care provin de la centre de contact, rețele sociale, date de tranzacționare la bursă etc. Astfel de date sunt uneori numite și flux de date – un flux constant, necontrolat de date. Caracteristica sa principală este că datele nu au limite definite, deci este imposibil de spus când începe sau se termină fluxul.

Datele sunt procesate pe măsură ce ajung la destinație. Unii autori o numesc procesare în timp real sau online. O abordare diferită este procesarea în bloc, în lot sau offline, în care blocurile de date sunt procesate în ferestre de timp de ore sau zile. Adesea, lotul este un proces care rulează noaptea, consolidând datele din ziua respectivă. Există cazuri de ferestre de timp de o săptămână sau chiar o lună care generează rapoarte învechite.

Având în vedere că cele mai bune platforme de procesare a Big Data prin streaming sunt surse deschise precum Kafka și Spark, aceste platforme permit utilizarea altora diferite și complementare. Aceasta înseamnă că, fiind open source, evoluează mai repede și folosesc mai multe instrumente. În acest fel, fluxurile de date sunt primite din alte locuri la o rată variabilă și fără întreruperi.

Acum, ne vom uita la două dintre cele mai cunoscute instrumente de procesare a datelor și le vom compara:

Apache Kafka

Apache Kafka este un sistem de mesagerie care creează aplicații de streaming cu un flux continuu de date. Creat inițial de LinkedIn, Kafka este bazat pe jurnal; un jurnal este o formă de bază de stocare, deoarece fiecare informație nouă este adăugată la sfârșitul fișierului.

  Cele mai bune carduri microSD din 2024

Kafka este una dintre cele mai bune soluții pentru big data, deoarece principala sa caracteristică este debitul ridicat. Cu Apache Kafka, este chiar posibilă transformarea procesării loturilor în timp real,

Apache Kafka este un sistem de mesagerie publish-subscribe în care o aplicație publică și o aplicație care se abonează primește mesaje. Timpul dintre publicarea și primirea mesajului poate fi de milisecunde, deci o soluție Kafka are o latență scăzută.

Munca lui Kafka

Arhitectura Apache Kafka cuprinde producători, consumatori și clusterul însuși. Producătorul este orice aplicație care publică mesaje către cluster. Consumatorul este orice aplicație care primește mesaje de la Kafka. Clusterul Kafka este un set de noduri care funcționează ca o singură instanță a serviciului de mesagerie.

Munca lui Kafka

Un cluster Kafka este format din mai mulți brokeri. Un broker este un server Kafka care primește mesaje de la producători și le scrie pe disc. Fiecare broker gestionează o listă de subiecte, iar fiecare subiect este împărțit în mai multe partiții.

După primirea mesajelor, brokerul le trimite consumatorilor înregistrați pentru fiecare subiect.

Setările Apache Kafka sunt gestionate de Apache Zookeeper, care stochează metadatele clusterului, cum ar fi locația partiției, lista de nume, lista de subiecte și nodurile disponibile. Astfel, Zookeeper menține sincronizarea între diferitele elemente ale clusterului.

Zookeeper este important deoarece Kafka este un sistem distribuit; adică scrierea și citirea se fac de mai mulți clienți simultan. Când există o defecțiune, Zookeeper-ul alege un înlocuitor și recuperează operațiunea.

Cazuri de utilizare

Kafka a devenit popular, mai ales pentru utilizarea sa ca instrument de mesagerie, dar versatilitatea sa depășește asta și poate fi folosit într-o varietate de scenarii, ca în exemplele de mai jos.

Mesaje

Forma asincronă de comunicare care decuplează părțile care comunică. În acest model, o parte trimite datele ca mesaj către Kafka, astfel încât o altă aplicație le consumă ulterior.

Urmărirea activității

Vă permite să stocați și să procesați date care urmăresc interacțiunea unui utilizator cu un site web, cum ar fi vizualizări de pagină, clicuri, introducerea datelor etc.; acest tip de activitate generează de obicei un volum mare de date.

Metrici

Implică agregarea datelor și statisticilor din mai multe surse pentru a genera un raport centralizat.

Agregarea jurnalelor

Agregează și stochează central fișierele jurnal care provin din alte sisteme.

Procesarea fluxului

Procesarea conductelor de date constă în mai multe etape, în care datele brute sunt consumate din subiecte și agregate, îmbogățite sau transformate în alte subiecte.

Pentru a susține aceste funcții, platforma oferă în esență trei API-uri:

  • Streams API: acționează ca un procesor de flux care consumă date dintr-un subiect, le transformă și le scrie în altul.
  • API Connectors: permite conectarea subiectelor la sistemele existente, cum ar fi bazele de date relaționale.
  • API-uri pentru producători și consumatori: permite aplicațiilor să publice și să consume date Kafka.

Pro

Replicat, partiționat și ordonat

Mesajele din Kafka sunt replicate pe partițiile din nodurile clusterului, în ordinea în care sosesc, pentru a asigura securitatea și viteza de livrare.

Transformarea datelor

Cu Apache Kafka, este chiar posibilă transformarea procesării loturilor în timp real folosind API-ul ETL streams batch.

Acces secvenţial la disc

Apache Kafka persistă mesajul pe disc și nu în memorie, deoarece se presupune că este mai rapid. De fapt, accesul la memorie este mai rapid în majoritatea situațiilor, mai ales când se ține cont de accesarea datelor care se află în locații aleatorii din memorie. Cu toate acestea, Kafka face acces secvenţial, iar în acest caz, discul este mai eficient.

  Cum să grupați imagini și forme în MS Word

Apache Spark

Apache Spark este un motor de calcul al datelor mari și un set de biblioteci pentru procesarea datelor paralele în clustere. Spark este o evoluție a Hadoop și a paradigmei de programare Map-Reduce. Poate fi de 100 de ori mai rapid datorită utilizării eficiente a memoriei care nu persistă datele pe discuri în timpul procesării.

Spark este organizat pe trei niveluri:

  • API-uri de nivel scăzut: acest nivel conține funcționalitatea de bază pentru a rula joburi și alte funcționalități cerute de celelalte componente. Alte funcții importante ale acestui nivel sunt gestionarea securității, a rețelei, a programării și a accesului logic la sistemele de fișiere HDFS, GlusterFS, Amazon S3 și altele.
  • API-uri structurate: nivelul API-uri structurate se ocupă de manipularea datelor prin DataSets sau DataFrames, care pot fi citite în formate precum Hive, Parquet, JSON și altele. Folosind SparkSQL (API care ne permite să scriem interogări în SQL), putem manipula datele așa cum ne dorim.
  • Nivel înalt: La cel mai înalt nivel, avem ecosistemul Spark cu diferite biblioteci, inclusiv Spark Streaming, Spark MLlib și Spark GraphX. Aceștia sunt responsabili pentru a se îngriji de ingerarea în flux și de procesele înconjurătoare, cum ar fi recuperarea în caz de accident, crearea și validarea modelelor clasice de învățare automată și gestionarea graficelor și algoritmilor.

Funcționarea Spark

Arhitectura unei aplicații Spark constă din trei părți principale:

Driver Program: este responsabil pentru orchestrarea execuției prelucrării datelor.

Cluster Manager: Este componenta responsabilă cu gestionarea diferitelor mașini dintr-un cluster. Este necesar doar dacă Spark rulează distribuit.

Workers Nodes: Acestea sunt mașinile care îndeplinesc sarcinile unui program. Dacă Spark este rulat local pe computer, acesta va juca un program de driver și un rol Workes. Acest mod de a rula Spark se numește Standalone.

Prezentare generală a clusterului

Codul Spark poate fi scris într-un număr de limbi diferite. Consola Spark, numită Spark Shell, este interactivă pentru învățarea și explorarea datelor.

Așa-numita aplicație Spark constă dintr-unul sau mai multe joburi, permițând suportul procesării datelor la scară largă.

Când vorbim despre execuție, Spark are două moduri:

  • Client: Driverul rulează direct pe client, care nu trece prin Resource Manager.
  • Cluster: Driver care rulează pe Application Master prin Resource Manager (În modul Cluster, dacă clientul se deconectează, aplicația va continua să ruleze).

Este necesar să utilizați corect Spark pentru ca serviciile legate, cum ar fi Managerul de resurse, să poată identifica nevoia fiecărei execuții, oferind cea mai bună performanță. Deci, depinde de dezvoltator să cunoască cea mai bună modalitate de a-și rula joburile Spark, structurând apelul efectuat, iar pentru aceasta, puteți structura și configura executanții Spark așa cum doriți.

Joburile Spark folosesc în principal memoria, așa că este obișnuit să ajustați valorile de configurare Spark pentru executanții nodurilor de lucru. În funcție de volumul de lucru Spark, este posibil să se determine că o anumită configurație Spark non-standard oferă execuții mai optime. În acest scop, pot fi efectuate teste de comparație între diferitele opțiuni de configurare disponibile și configurația implicită Spark în sine.

Cazuri de utilizare

Apache Spark ajută la procesarea unor cantități uriașe de date, fie în timp real, fie arhivate, structurate sau nestructurate. Următoarele sunt câteva dintre cazurile sale de utilizare populare.

Îmbogățirea datelor

Adesea, companiile folosesc o combinație de date istorice ale clienților cu date comportamentale în timp real. Spark poate ajuta la construirea unei conducte ETL continue pentru a converti datele de evenimente nestructurate în date structurate.

  Cele mai bune 7 instrumente online pentru cumpărătorii de mașini

Declanșează detectarea evenimentelor

Spark Streaming permite detectarea și răspunsul rapid la un comportament rar sau suspect care ar putea indica o potențială problemă sau fraudă.

Analiza complexă a datelor de sesiune

Folosind Spark Streaming, evenimentele legate de sesiunea utilizatorului, cum ar fi activitățile acestuia după conectarea la aplicație, pot fi grupate și analizate. Aceste informații pot fi, de asemenea, utilizate continuu pentru a actualiza modelele de învățare automată.

Pro

Prelucrare iterativă

Dacă sarcina este de a procesa datele în mod repetat, seturile de date distribuite (RDD) rezistente ale Spark permit operațiuni multiple de hărți în memorie fără a fi nevoie să scrieți rezultate intermediare pe disc.

Prelucrare grafică

Modelul de calcul al lui Spark cu GraphX ​​API este excelent pentru calcule iterative tipice procesării grafice.

Învățare automată

Spark are MLlib — o bibliotecă de învățare automată încorporată care are algoritmi gata pregătiți care rulează și în memorie.

Kafka vs Spark

Chiar dacă interesul oamenilor atât pentru Kafka, cât și pentru Spark a fost aproape similar, există unele diferențe majore între cele două; Hai să aruncăm o privire.

#1. Procesarea datelor

Kafka este un instrument de streaming și stocare de date în timp real responsabil cu transferul de date între aplicații, dar nu este suficient pentru a construi o soluție completă. Prin urmare, sunt necesare alte instrumente pentru sarcini pe care Kafka nu le face, cum ar fi Spark. Spark, pe de altă parte, este o platformă de procesare a datelor pe lot, care extrage date din subiectele Kafka și le transformă în scheme combinate.

#2. Gestionarea memoriei

Spark folosește seturi de date distribuite robuste (RDD) pentru gestionarea memoriei. În loc să încerce să proceseze seturi uriașe de date, le distribuie pe mai multe noduri dintr-un cluster. În schimb, Kafka utilizează acces secvenţial similar cu HDFS şi stochează datele într-o memorie tampon.

#3. Transformarea ETL

Atât Spark, cât și Kafka acceptă procesul de transformare ETL, care copiază înregistrările dintr-o bază de date în alta, de obicei de la o bază tranzacțională (OLTP) la o bază analitică (OLAP). Cu toate acestea, spre deosebire de Spark, care vine cu o capacitate încorporată pentru procesul ETL, Kafka se bazează pe Streams API pentru a-l susține.

#4. Persistența datelor

Utilizarea RRD de către Spark vă permite să stocați datele în mai multe locații pentru o utilizare ulterioară, în timp ce în Kafka, trebuie să definiți obiectele setului de date în configurație pentru a persista datele.

#5. Dificultate

Spark este o soluție completă și mai ușor de învățat datorită suportului pentru diverse limbaje de programare de nivel înalt. Kafka depinde de o serie de API-uri și module terțe, ceea ce poate face dificilă lucrarea cu acestea.

#6. Recuperare

Atât Spark, cât și Kafka oferă opțiuni de recuperare. Spark folosește RRD, care îi permite să salveze date în mod continuu, iar dacă există o defecțiune a clusterului, acesta poate fi recuperat.

Kafka replică în mod continuu datele în interiorul clusterului și replicarea între brokeri, ceea ce vă permite să treceți la diferiți brokeri dacă există o eșec.

Asemănări între Spark și Kafka

Apache SparkApache KafkaOpenSourceOpenSourceBuild Data Streaming ApplicationBuild Data Streaming ApplicationSupportă Stateful ProcessingSupporta Stateful ProcessingSupporta SQLSupporta SQLSimilitudini între Spark și Kafka

Cuvinte finale

Kafka și Spark sunt ambele instrumente open-source scrise în Scala și Java, care vă permit să construiți aplicații de streaming de date în timp real. Au mai multe lucruri în comun, inclusiv procesarea cu stare, suport pentru SQL și ETL. Kafka și Spark pot fi, de asemenea, folosite ca instrumente complementare pentru a ajuta la rezolvarea problemei complexității transferului de date între aplicații.

x