5 tehnici de optimizare a scânteii despre care ar trebui să știe fiecare cercetător de date

Publicat: 2020-06-12

Fie că este vorba de un mic startup sau de o mare corporație, datele sunt peste tot. Aceste date sunt colectate dintr-o varietate de surse, cum ar fi jurnalele clienților, facturile de birou, fișele de costuri și bazele de date ale angajaților. Companiile colectează și analizează aceste fragmente de date pentru a determina modele și tendințe. Aceste modele îi ajută să ia decizii importante pentru îmbunătățirea afacerii.

Dar, această analiză a datelor și scrierea numerelor nu sunt posibile doar prin foile Excel. Aici intervin tehnologiile software de procesare a datelor. Unul dintre cele mai rapide și mai utilizate cadre de procesare a datelor este Apache Spark. Tehnicile de optimizare Spark sunt folosite pentru ajustarea performanței sale pentru a profita la maximum de ea.

Vom învăța puțin despre tehnici. Să analizăm elementele de bază ale acestui cadru software.

Cuprins

Ce este Apache Spark?

Apache Spark este un cadru de calcul cluster open-source de renume mondial , care este utilizat pentru procesarea seturi de date uriașe în companii. Procesarea acestor seturi uriașe de date și distribuirea acestora între mai multe sisteme este ușoară cu Apache Spark. Oferă API-uri simple care ușurează viața programatorilor și dezvoltatorilor.

Spark oferă legături native pentru limbaje de programare, cum ar fi Python, R, Scala și Java. Acceptă învățarea automată, procesarea graficelor și bazele de date SQL . Datorită acestor beneficii uimitoare, Spark este utilizat în bănci, firme de tehnologie, organizații financiare, departamente de telecomunicații și agenții guvernamentale. Pentru a afla mai multe despre apache spark, consultați cursurile noastre de știință a datelor de la universități recunoscute.

Arhitectura Apache Spark

Arhitectura de rulare a Apache Spark constă din următoarele componente:

Spark driver sau master process

Aceasta convertește programele în sarcini și apoi le programează pentru executori (procese slave). Programatorul de sarcini distribuie aceste sarcini executorilor.

Manager de cluster

Managerul clusterului Spark este responsabil pentru lansarea executorilor și driverelor. Programează și alocă resurse pe mai multe mașini gazdă pentru un cluster.

Executori

Executorii, numiți și procese slave, sunt entități în care sunt executate sarcinile unui job. După ce sunt lansate, rulează până la sfârșitul ciclului de viață al aplicației Spark. Execuția unui job Spark nu se oprește dacă un executor eșuează.

Seturi de date distribuite rezistente (RDD)

Aceasta este o colecție de seturi de date care sunt imuabile și sunt distribuite peste nodurile unui cluster Spark. În special, un cluster este o colecție de sisteme distribuite în care poate fi instalat Spark. RDD-urile sunt împărțite în mai multe partiții. Și sunt numiți rezistenți, deoarece pot rezolva problemele de date în cazul eșecului datelor.

Tipurile de RDD acceptate de Spark sunt:

  • Seturi de date Hadoop construite din fișiere din sistemul de fișiere distribuit Hadoop
  • Colecții paralele, care se pot baza pe colecțiile Scala

DAG (Grafic aciclic direcționat)

Spark creează un grafic de îndată ce un cod este introdus în consola Spark. Dacă se declanșează o acțiune (o instrucțiune pentru executarea unei operații), acest grafic este transmis DAGScheduler .

Acest grafic poate fi considerat ca o secvență de acțiuni de date. DAG este format din vârfuri și muchii. Vârfurile reprezintă un RDD, iar muchiile reprezintă calcule care trebuie efectuate pe acel RDD specific. Se numește grafic direcționat deoarece nu există bucle sau cicluri în cadrul graficului.

Tehnici de optimizare Spark

Tehnicile de optimizare Spark sunt utilizate pentru a modifica setările și proprietățile Spark pentru a se asigura că resursele sunt utilizate corect și că lucrările sunt executate rapid. Toate acestea ajută în cele din urmă la procesarea eficientă a datelor.

Cele mai populare tehnici de optimizare Spark sunt enumerate mai jos:

1. Serializarea datelor

Aici, un obiect din memorie este convertit într-un alt format care poate fi stocat într-un fișier sau trimis printr-o rețea. Acest lucru îmbunătățește performanța aplicațiilor distribuite. Cele două moduri de a serializa datele sunt:

  • Java serializare – Cadrul ObjectOutputStream este utilizat pentru serializarea obiectelor. Java.io.Externalizable poate fi folosit pentru a controla performanța serializării. Acest proces oferă o persistență ușoară.
  • Serializare Kyro – Spark folosește biblioteca Kryo Serialization (v4) pentru serializarea obiectelor care sunt mai rapide decât serializarea Java și este un proces mai compact. Pentru a îmbunătăți performanța, clasele trebuie înregistrate folosind metoda registerKryoClasses.

2. Memorarea în cache

Aceasta este o tehnică eficientă care este utilizată atunci când datele sunt solicitate mai des. Cache() și persist() sunt metodele utilizate în această tehnică. Aceste metode sunt utilizate pentru stocarea calculelor unui RDD, DataSet și DataFrame. Dar, cache() îl stochează în memorie și persist() îl stochează la nivelul de stocare definit de utilizator.

Aceste metode pot ajuta la reducerea costurilor și la economisirea timpului pe măsură ce se folosesc calcule repetate.

Citiți: Dataframe în Apache PySpark: Tutorial cuprinzător

3. Reglarea structurii datelor

Putem reduce consumul de memorie în timp ce folosim Spark, modificând anumite caracteristici Java care ar putea adăuga supraîncărcare. Acest lucru este posibil în următoarele moduri:

  • Utilizați obiecte enumerate sau ID-uri numerice în locul șirurilor de caractere pentru chei.
  • Evitați să folosiți o mulțime de obiecte și structuri complicate imbricate.
  • Setați indicatorul JVM la xx:+UseCompressedOops dacă dimensiunea memoriei este mai mică de 32 GB.

4. Optimizarea colectării gunoiului

Pentru optimizarea colectoarelor de gunoi, G1 și GC trebuie utilizate pentru rularea aplicațiilor Spark. Colectorul G1 gestionează grămezi tot mai mari. Reglarea GC este esențială în funcție de jurnalele generate, pentru a controla comportamentul neașteptat al aplicațiilor. Dar înainte de aceasta, trebuie să modificați și să optimizați logica și codul programului.

G1GC ajută la reducerea timpului de execuție al joburilor prin optimizarea timpilor de pauză dintre procese.

5. Managementul memoriei

Memoria folosită pentru stocarea calculelor, cum ar fi îmbinări, amestecări, sortare și agregare, se numește memorie de execuție. Memoria de stocare este utilizată pentru stocarea în cache și manipularea datelor stocate în clustere. Ambele memorii folosesc o regiune unificată M.

Când memoria de execuție nu este utilizată, memoria de stocare poate folosi spațiul. În mod similar, când memoria de stocare este inactivă, memoria de execuție poate utiliza spațiul. Aceasta este una dintre cele mai eficiente tehnici de optimizare Spark .

Citește și: 6 funcții de schimbare a jocului ale Apache Spark

Concluzie

Din diferitele tehnici de optimizare Spark , putem înțelege cum ajută acestea la reducerea timpului de procesare și la procesarea datelor mai rapid. Dezvoltatorii și profesioniștii aplică aceste tehnici în funcție de aplicații și de cantitatea de date în cauză.

Dacă sunteți curios să aflați despre optimizarea scânteii , știința datelor, consultați programul Executive PG în știința datelor de la IIIT-B și upGrad, care este creat pentru profesioniști care lucrează și oferă peste 10 studii de caz și proiecte, ateliere practice practice, mentorat cu industrie experți, 1-la-1 cu mentori din industrie, peste 400 de ore de învățare și asistență la locul de muncă cu firme de top.

Ce sunt tehnicile de optimizare Spark?

Apache Spark facilitează procesarea rapidă a datelor și rezolvarea cu ușurință a problemelor complexe de date. Este evident că în timpul dezvoltării oricărui program, este foarte important să aveți grijă de performanța acestuia. Tehnicile de optimizare Spark ajută la calculele datelor în memorie. Singurul lucru care poate împiedica aceste calcule este memoria, procesorul sau orice altă resursă.

Fiecare tehnică de optimizare a scânteii este utilizată într-un scop diferit și efectuează anumite acțiuni specifice. Unele dintre tehnicile de optimizare a scânteii utilizate pe scară largă sunt:

1. Serializare
2. Selectarea API
3. Variabila avans
4. Memorați în cache și persistați
5. Operarea prin taste
6. Selectarea formatului de fișier
7. Tuning colectare gunoi
8. Nivel de paralelism

Când nu ar trebui să vă gândiți să utilizați Spark?

Apache Spark are o mulțime de cazuri de utilizare, dar există anumite nevoi specializate în care aveți nevoie de alte motoare de date mari pentru a îndeplini scopul. În astfel de cazuri, se recomandă să utilizați altă tehnologie în loc să utilizați Spark. Mai jos sunt cazurile de utilizare în care nu ar trebui să luați în considerare utilizarea Spark:

1. Capacitate scăzută de calcul – Procesarea implicită pe Apache Spark are loc în memoria clusterului. Dacă mașinile sau clusterul dvs. virtuale au o capacitate de calcul mică, ar trebui să alegeți alte alternative precum Apache Hadoop.
2. Ingestie de date într-un model de publicare-abonare – În acest caz, există mai multe surse, precum și mai multe destinații în care milioane de date sunt mutate într-un timp scurt. Aici, nu ar trebui să utilizați Spark și, în schimb, să folosiți Apache Kafka.

Pandas este mai rapid decât Apache Spark?

Când comparați viteza de calcul atât a Pandas DataFrame, cât și a Spark DataFrame, veți observa că performanța Pandas DataFrame este puțin mai bună pentru seturile de date mici. Pe de altă parte, dacă dimensiunea datelor crește, atunci se constată că Spark DataFrame este suficient de capabil pentru a depăși Pandas DataFrame. Astfel, va depinde foarte mult de cantitatea de date.