Tutorial de streaming Apache Spark pentru începători: lucru, arhitectură și caracteristici

Publicat: 2020-02-27

În prezent, trăim într-o lume în care o cantitate mare de date este generată în fiecare secundă într-un ritm rapid. Aceste date pot oferi rezultate semnificative și utile dacă sunt analizate cu acuratețe. De asemenea, poate oferi soluții multor industrii la momentul potrivit.

Acestea sunt foarte utile în industrii precum serviciile de călătorie, comerțul cu amănuntul, mass-media, finanțele și îngrijirea sănătății. Multe alte companii de top au adoptat Analiza datelor, cum ar fi Urmărirea interacțiunii clienților cu diferite tipuri de produse realizate de Amazon pe platforma sa sau Spectatorii care primesc recomandări personalizate în timp real, care sunt furnizate de Netflix.

Poate fi folosit de orice companie care folosește o cantitate mare de date și o pot analiza în beneficiul lor pentru a îmbunătăți procesul general din afacerea lor și pentru a crește satisfacția clienților și experiența utilizatorului. Experiențele mai bune ale utilizatorilor și satisfacția clienților oferă beneficii organizației, pe termen lung, pentru a extinde afacerea și a obține profit.

Cuprins

Ce este Streaming-ul?

Fluxul de date este o metodă prin care informațiile sunt transferate ca flux continuu și constant. Pe măsură ce internetul crește, tehnologiile de streaming cresc și ele.

Ce este Spark Streaming?

Când datele sosesc continuu într-o secvență de nelegat, atunci se numește flux de date. Datele de intrare circulă în mod constant și sunt împărțite prin streaming. Prelucrarea ulterioară a datelor se face după ce acestea sunt împărțite în unități discrete. Analiza datelor și procesarea datelor la latență scăzută se numește procesare flux.

În 2013, Apache Spark a fost adăugat cu Spark Streaming. Există multe surse din care se poate produce ingerarea de date, cum ar fi socketurile TCP, Amazon Kinesis, Apache Flume și Kafka. Cu ajutorul unor algoritmi sofisticați, se realizează prelucrarea datelor. O funcție de nivel înalt, cum ar fi fereastră, unire, reducere și hartă sunt utilizate pentru a exprima procesarea. Tablourile de bord live, bazele de date și sistemele de fișiere sunt utilizate pentru a împinge datele procesate către sistemele de fișiere.

Funcționarea Stream

Următoarele sunt lucrările interne. Spark streaming împarte fluxurile de date de intrare în direct în loturi. Spark Engine este utilizat pentru a procesa aceste loturi pentru a genera, ca rezultat, loturi de flux finale.

Datele din flux sunt împărțite în loturi mici și sunt reprezentate de Apache Spark Discretized Stream (Spark DStream). Spark RDD-urile sunt folosite pentru a construi DStream-uri, iar aceasta este abstractizarea datelor de bază a Spark. Orice componente ale Apache Spark, cum ar fi Spark SQL și Spark MLib, pot fi integrate cu ușurință cu Spark Streaming fără probleme.

Spark Streaming ajută la scalarea fluxurilor de date live. Este una dintre extensiile API-ului de bază Spark. De asemenea, permite procesarea fluxului tolerant la erori și debit-ul mare. Utilizarea Spark Streaming efectuează procesarea și transmiterea în timp real a datelor în direct. Principalele companii de top din lume folosesc serviciul Spark Streaming, cum ar fi Pinterest, Netflix și Uber.

Spark Streaming oferă, de asemenea, o analiză a datelor în timp real. Prelucrarea în direct și rapidă a datelor se realizează pe platforma unică a Spark Streaming.

Citiți și Arhitectura Apache Spark

De ce Spark Streaming?

Spark Streaming poate fi folosit pentru a transmite date în timp real din diferite surse, cum ar fi Facebook, Bursa de Valori și Sisteme geografice, și pentru a efectua analize puternice pentru a încuraja companiile.

Există cinci aspecte semnificative ale Spark Streaming care îl fac atât de unic și sunt:

1. Integrare

Bibliotecile avansate precum procesarea graficelor, învățarea automată și SQL pot fi ușor integrate cu acestea.

2. Combinație

Datele care sunt transmise în flux pot fi realizate împreună cu interogări interactive și, de asemenea, cu seturi de date statice.

3. Echilibrarea sarcinii

Spark Streaming are o echilibrare perfectă a sarcinii, ceea ce îl face foarte special.

4. Utilizarea resurselor

Spark Streaming utilizează resursa disponibilă într-un mod foarte optim.

5. Recuperare din rătăciți și eșecuri

Spark Streaming se poate recupera rapid de la orice fel de eșecuri sau abateri.

Nevoia de streaming în Apache Spark

Modelul operator continuu este utilizat în timpul proiectării sistemului pentru procesarea fluxurilor în mod tradițional pentru a procesa datele. Funcționarea sistemului este după cum urmează:

  1. Sursele de date sunt folosite pentru a transmite datele în flux. Diferitele tipuri de surse de date sunt dispozitivul IoT, datele de telemetrie ale sistemului, jurnalele live și multe altele. Aceste date în flux sunt ingerate în sisteme de ingerare de date, cum ar fi Amazon Kinesis, Apache Kafka și multe altele.
  2. Pe un cluster, procesarea paralelă se face asupra datelor.
  3. Pentru a trece rezultatele sunt folosite sisteme din aval precum Kafka, Cassandra, HBase.

Un set de noduri de lucru rulează niște operatori continui. Procesarea înregistrărilor datelor transmise în flux se face pe rând. Documentele sunt apoi înaintate următorilor operatori din conductă.

Operatorii sursă sunt obișnuiți să primească date de la sistemele de asimilare. Operatorii de chiuvetă sunt obișnuiți să dea rezultate sistemului din aval.

Unii operatori sunt continui. Acestea sunt un model natural și simplu. Când vine vorba de analiza datelor complexe în timp real, care se realizează la scară largă, arhitectura tradițională se confruntă cu unele provocări în lumea modernă și acestea sunt:

Recuperare rapidă a eșecului

În sistemele actuale, defecțiunile sunt rapid însoțite și acomodate de recuperarea informațiilor pierdute prin calcularea informațiilor lipsă în noduri paralele. Astfel, face recuperarea și mai rapidă în comparație cu sistemele tradiționale.

Echilibrarea greutății

Load Balancer ajută la alocarea resurselor și a datelor între noduri într-un mod mai eficient, astfel încât nicio resursă să nu aștepte sau să nu facă nimic, dar datele sunt distribuite uniform în toate nodurile.

Unificarea sarcinilor de lucru interactive, lot și streaming

De asemenea, se poate interacționa cu datele de streaming făcând interogări la datele de streaming. Poate fi combinat și cu seturi de date statice. Nu se pot face interogări ad-hoc folosind operatori noi, deoarece nu este conceput pentru operatori continui. Interogările interactive, în flux și în loturi pot fi combinate folosind un singur motor.

Interogări SQL și analize cu ML

Dezvoltarea sistemelor cu comandă comună pentru baze de date a făcut viața dezvoltatorului ușor de lucrat în colaborare cu alte sisteme. Comunitatea acceptă pe scară largă interogări SQL. În cazul în care sistemul oferă module și biblioteci pentru învățarea automată care pot fi utilizate în scopuri analitice avansate.

Prezentare generală a fluxului Spark

Spark Streaming utilizează un set de RDD-uri care sunt folosite pentru a procesa datele în timp real. Prin urmare, Spark Streaming este, în general, utilizat în mod obișnuit pentru tratarea fluxului de date în timp real. Spark Streaming oferă procesare cu toleranță la erori și cu un randament ridicat al fluxurilor de date în direct. Este o caracteristică suplimentară care vine cu API-ul de bază spark.

Funcții de streaming Spark

  1. Analiza afacerii : Cu utilizarea Spark Streaming, se poate afla și comportamentul publicului. Aceste învățări pot fi utilizate ulterior în luarea deciziilor în afaceri.
  2. Integrare: Procesarea în timp real și în lot este integrată cu Spark
  3. Toleranță la defecțiuni – Abilitatea unică a Spark este că se poate recupera eficient din defecțiune.
  4. Viteză: Latența scăzută este obținută de Spark
  5. Scalare: Nodurile pot fi scalate cu ușurință până la sute de către Spark.

Elementele fundamentale ale streamingului Spark

1. Contextul de streaming

În Spark, fluxul de date este consumat și gestionat de Streaming Context. Acesta creează un obiect al receptorului care este produs prin înregistrarea unui flux de intrare. Prin urmare, principala funcționalitate Spark devine un punct de intrare critic în sistem, deoarece oferă multe contexte care oferă un flux de lucru implicit pentru diferite surse precum Akka Actor, Twitter și ZeroMQ.

Citiți: Rolul Apache Spark în Big Data și de ce este unic

Un obiect de context spark reprezintă conexiunea cu un cluster spark. Acolo unde obiectul Spark Streaming este creat de un obiect StreamingContext, acumulatorii, RDD-urile și variabilele de difuzare pot fi create și un obiect SparkContex.

2. Puncte de control, variabile de difuzare și acumulatori

Puncte de control

Checkpoint funcționează similar cu Checkpoints, care stochează starea sistemelor la fel ca în jocuri. Unde, în acest caz, punctele de control ajută la reducerea pierderii de resurse și face sistemul mai rezistent la defecțiunea sistemului. O metodologie a punctului de control este o modalitate mai bună de a urmări și de a salva stările sistemului, astfel încât, în momentul recuperării, acesta să poată fi retras cu ușurință.

Variabile de difuzare

În loc să furnizeze copia completă a sarcinilor nodurilor din rețea, prinde întotdeauna o variabilă numai în citire care este responsabilă pentru recunoașterea nodurilor diferitelor sarcini prezente și, astfel, reducerea costurilor de transfer și de calcul de către nodurile individuale. Deci poate oferi un set de intrări semnificativ mai eficient. De asemenea, folosește algoritmi avansați pentru a distribui variabila de difuzare către diferite noduri din rețea; astfel, costul de comunicare este redus.

Acumulatoare

Acumulatorii sunt variabile care pot fi personalizate pentru diferite scopuri. Dar există și acumulatori deja definiți, cum ar fi acumulatorii de contor și sumă. Există, de asemenea, acumulatori de urmărire care țin evidența fiecărui nod, iar unele funcții suplimentare pot fi adăugate în el. Acumulatoarele numerice acceptă multe funcții digitale care sunt, de asemenea, acceptate de Spark. La cererea utilizatorului, pot fi create acumulatoare personalizate.

DStream

DStream înseamnă Stream discret. Spark Streaming oferă abstracția necesară, care se numește Discretized Stream (DStream). DStream este o dată care se transmite continuu. Dintr-o sursă de date, DStream este primit. Poate fi obținut și dintr-un flux de date procesate. Transformarea fluxului de intrare generează flux de date procesate.

După un interval specificat, datele sunt conținute într-un RDD. Seria nesfârșită de RDD reprezintă un DStream.

Memorarea în cache

Dezvoltatorii pot folosi DStream pentru a stoca în memoria cache datele fluxului. Acest lucru este util dacă datele sunt calculate de mai multe ori în DStream. Poate fi realizat prin utilizarea metodei persist() pe un DStream.

Dublarea datelor se face pentru a asigura siguranța de a avea un sistem rezistent care poate rezista și defecțiuni în sistem, având astfel capacitatea de a tolera defecte în sistem (cum ar fi Kafka, Sockets, Flume etc.)

Spark Streaming Avantaj și arhitectură

Procesarea unui flux de date la un moment dat poate fi greoaie uneori; prin urmare, Spark Streaming discretizează datele în subloturi mici, care sunt ușor de gestionat. Acest lucru se datorează faptului că lucrătorii Spark primesc tampon de date în paralel acceptate de receptorul Spark Streaming. Și, prin urmare, întregul sistem rulează loturile în paralel și apoi acumulează rezultatele finale. Apoi, aceste sarcini scurte sunt procesate în loturi de motorul Spark, iar rezultatele sunt furnizate altor sisteme.

În arhitectura Spark Streaming, calculul nu este alocat static și încărcat la un nod, ci se bazează pe localitatea datelor și disponibilitatea resurselor. Astfel, se reduce timpul de încărcare în comparație cu sistemele tradiționale anterioare. Prin urmare, utilizarea principiului localității datelor, este, de asemenea, mai ușor pentru detectarea defecțiunilor și recuperarea acesteia.

Nodurile de date din Spark sunt de obicei reprezentate de RDD, care este Resilient Distribution Dataset.

Obiectivele Spark Streaming

Următoarele sunt obiectivele atinse de arhitectura Spark.

1. Echilibrare dinamică a sarcinii

Aceasta este una dintre caracteristicile esențiale ale Spark Streaming, în care fluxurile de date sunt alocate dinamic de echilibrator de încărcare, care este responsabil pentru alocarea datelor și calcularea resurselor folosind reguli specifice definite în acesta. Scopul principal al echilibrării încărcăturii este de a echilibra sarcina de lucru în mod eficient între angajați și de a pune totul într-un mod paralel, astfel încât să nu existe risipă de resurse disponibile. Și, de asemenea, responsabil pentru alocarea dinamică a resurselor nodurilor de lucru din sistem.

2. Eșec și recuperare

Ca și în sistemul tradițional, atunci când are loc o defecțiune a funcționării, întregul sistem trebuie să recalculeze acea parte pentru a recupera informațiile pierdute. Dar problema vine atunci când un nod se ocupă de toată această recuperare și face ca întregul sistem să aștepte finalizarea acestuia. În timp ce în Spark, informațiile pierdute sunt calculate de alte noduri gratuite și readuc sistemul la urmărire fără nicio așteptare suplimentară, ca în metodele tradiționale.

Și, de asemenea, sarcina eșuată este distribuită uniform pe toate nodurile din sistem pentru a o recalcula și a o aduce înapoi de la eșec mai repede decât metoda tradițională.

3. Loturi și interogare interactivă

Setul de RDD-uri din Spark sunt numite pentru a fi DStream în Spark, care oferă o relație între sarcinile de lucru în flux și loturile. Aceste loturi sunt stocate în memoria lui Spark, ceea ce oferă o modalitate eficientă de a interoga datele prezente în el.

Cea mai bună parte a Spark este că include o mare varietate de biblioteci care pot fi utilizate atunci când este necesar de sistemul spark. Puține nume ale bibliotecilor sunt MLlib pentru învățare automată, SQL pentru interogare de date, GraphX ​​și Data Frame, în timp ce Dataframe și întrebările pot fi convertite în instrucțiuni SQL echivalente de către DStreams.

4. Performanță

Deoarece sistemul spark folosește distribuții paralele ale sarcinii care își îmbunătățesc capacitatea de debit și, astfel, valorifică motorul sparks care este capabil să atingă o latență scăzută, de până la câteva 100 de milisecunde.

Cum funcționează Spark Streaming?

Datele din flux sunt împărțite în loturi mici care sunt numite DStreams în Spark Streaming. Este o secvență de RDD în interior. API-urile Spark sunt utilizate de RDDS pentru a procesa datele, iar expedierile sunt returnate ca rezultat. API-ul Spark Streaming este disponibil în Python, Java și Scala. Multe caracteristici lipsesc din API-ul Python recent introdus în Spark 1.2.

Calculele cu stare sunt numite o stare care este menținută de Spark Streaming pe baza datelor primite în flux. Datele care circulă în flux sunt procesate într-un interval de timp. Acest interval de timp trebuie specificat de dezvoltator și trebuie să fie permis de Spark Streaming. Fereastra de timp este intervalul de timp în care trebuie finalizată lucrarea. Fereastra de timp este actualizată într-un interval de timp cunoscut și sub denumirea de interval de alunecare în fereastră.

Surse de streaming Spark

Obiectul receptor care este legat de un DStream de intrare, stochează datele primite în memoria Sparks pentru procesare.

Streamingul încorporat are două categorii:

1. Sursa de bază

Surse disponibile în Streaming API, de exemplu Socket Connection și File System.

2. Sursă avansată

Nivelul avansat al surselor este Kinesis, Flume & Kafka etc.

Operațiuni de streaming

Există două tipuri de operațiuni care sunt acceptate de Spark RDDS și sunt: ​​-

1. Operații de ieșire în Apache Spark

Operațiunile de ieșire sunt folosite pentru a împinge datele DStream într-un sistem extern, cum ar fi un sistem de fișiere sau o bază de date. Operațiunile de ieșire permit ca datele transformate să fie consumate de sistemele externe. Toate Transformările DStreams sunt de fapt executate prin declanșare, care este realizată de sistemele externe.

Acestea sunt operațiunile curente de ieșire:

foreachRDD(func), [sufix]), saveAsHadoopFiles(prefix, [sufx]), saveAsObjectFiles(prefix, [sufx])”prefix-TIME_IN_MS[.suffix]”, saveAsTextFiles(prefix, print()

RDD-urile execută alene Operațiuni de ieșire. În cadrul operațiunilor de ieșire DStream, acțiunile RDD sunt luate cu forță pentru a fi procesate din datele primite. Execuția operațiunilor de ieșire se face pe rând. Aplicațiile Spark definesc ordinea performanței operațiunilor de ieșire.

2. Spark Transformation

Transformarea Spark modifică și datele din DStream, deoarece RDD-urile le acceptă în Spark. La fel ca și Spark RDD, multe modificări sunt acceptate de DStream.

Următoarele sunt cele mai comune operațiuni de transformare:

Window(), updateStateByKey(), transform(), [numTasks]), cogroup(otherStream, [numTasks]), join(otherStream, reduceByKey(func, [numTasks]), countByValue(), reduce(), union(otherStream ), count(), repartition(numPartitions), filter(), flatMap(), map().

Concluzie

În lumea actuală bazată pe date, instrumentele pentru stocarea și analizarea datelor s-au dovedit a fi factorul cheie în analiza și creșterea afacerilor. Big Data și instrumentele și tehnologiile asociate s-au dovedit a fi la o cerere în creștere. Ca atare, Apache Spark are o piață excelentă și oferă caracteristici excelente clienților și companiilor.

Dacă sunteți interesat să aflați mai multe despre Big Data, consultați programul nostru PG Diploma în Dezvoltare Software Specializare în Big Data, care este conceput pentru profesioniști care lucrează și oferă peste 7 studii de caz și proiecte, acoperă 14 limbaje și instrumente de programare, practică practică. ateliere de lucru, peste 400 de ore de învățare riguroasă și asistență pentru plasarea unui loc de muncă cu firme de top.

Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigați programe Executive PG, programe avansate de certificat sau programe de master pentru a vă accelera cariera.

Conduceți revoluția tehnologică bazată pe date

Peste 400 de ore de învățare. 14 limbi și instrumente. Statutul de absolvenți IIIT-B.
Program de certificat avansat în Big Data de la IIIT Bangalore