Apache Spark definit
Apache Spark este un cadru de procesare a datelor care poate efectua rapid sarcini de procesare pe seturi de date foarte mari și poate distribui, de asemenea, sarcini de procesare a datelor pe mai multe computere, fie pe cont propriu, fie în tandem cu alte Aceste două calități sunt esențiale pentru lumile big data și Machine learning, care necesită marshalling de putere de calcul masiv pentru a criza prin magazine mari de date., Spark ia, de asemenea, unele dintre sarcinile de programare ale acestor sarcini de pe umerii dezvoltatorilor, cu un API ușor de utilizat, care abstractizează o mare parte din munca de calcul distribuit și prelucrarea datelor mari.
De la începuturile sale umile în AMPLab la U. C. Berkeley în anul 2009, Apache Spark a devenit una dintre principalele mare de date distribuite de procesare a cadrelor din lume. Spark poate fi implementat într-o varietate de moduri, oferă legături native pentru Java, Scala, Python, și limbaje de programare R, și sprijină SQL, streaming de date, machine learning, și procesare grafic., Veți găsi că este folosit de bănci, companii de telecomunicații, companii de jocuri, guverne și toți giganții tehnologici majori, cum ar fi Apple, Facebook, IBM și Microsoft.la un nivel fundamental, o aplicație Apache Spark constă din două componente principale: un driver, care convertește codul utilizatorului în mai multe sarcini care pot fi distribuite pe nodurile muncitorilor și executorii, care rulează pe acele noduri și execută sarcinile care le sunt atribuite. O anumită formă de manager de cluster este necesară pentru a media între cele două.,din cutie, Spark poate rula într-un mod de cluster independent, care necesită pur și simplu cadrul Apache Spark și un JVM pe fiecare mașină din cluster. Cu toate acestea, este mult mai probabil să doriți să profitați de un sistem mai robust de gestionare a resurselor sau a clusterelor pentru a vă ocupa de alocarea lucrătorilor la cerere. În enterprise, acest lucru va însemna în mod normal rularea pe fire Hadoop (așa se face că distribuțiile Cloudera și Hortonworks rulează Spark jobs), dar Apache Spark poate rula și pe Apache Mesos, Kubernetes și Docker Swarm.,dacă căutați o soluție gestionată, atunci Apache Spark poate fi găsit ca parte a Amazon EMR, Google Cloud Dataproc și Microsoft Azure HDInsight. Databricks, compania care are fondatorii Apache Spark, oferă, de asemenea, Databricks Unificat Platformă de Analiză, care este o cuprinzătoare de servicii gestionate, care oferă Apache Spark clustere, de sprijin de streaming, integrate bazate pe web notebook dezvoltare, și optimizat nor I/O performanță de peste un standard Apache Spark de distribuție.Apache Spark construiește comenzile de procesare a datelor utilizatorului într-un grafic aciclic direcționat sau DAG., Dag este stratul de programare Apache Spark; determină ce sarcini sunt executate pe ce noduri și în ce secvență.
Spark vs. Hadoop: de ce să folosiți Apache Spark?
merită să subliniem că Apache Spark vs. Apache Hadoop este un pic impropriu. Veți găsi Spark inclus în majoritatea distribuțiilor Hadoop în aceste zile. Dar, datorită a două mari avantaje, Spark a devenit cadrul de alegere atunci când prelucrează date mari, depășind vechea paradigmă MapReduce care a adus Hadoop la proeminență.primul avantaj este viteza., Motorul de date în memorie al Spark înseamnă că poate efectua sarcini de până la o sută de ori mai rapide decât MapReduce în anumite situații, în special în comparație cu lucrările în mai multe etape care necesită scrierea statului înapoi pe disc între etape. În esență, MapReduce creează un grafic de execuție în două etape constând în cartografierea și reducerea datelor, în timp ce dag-ul Apache Spark are mai multe etape care pot fi distribuite mai eficient. Chiar și joburile Apache Spark în care datele nu pot fi conținute complet în memorie tind să fie de aproximativ 10 ori mai rapide decât omologul lor MapReduce.,
al doilea avantaj este API-ul Spark prietenos pentru dezvoltatori. Oricât de important este speedup-ul Spark, s-ar putea argumenta că prietenia API-ului Spark este și mai importantă.
Spark Core
în comparație cu MapReduce și alte componente Apache Hadoop, API-ul Apache Spark este foarte prietenos cu dezvoltatorii, ascunzând o mare parte din complexitatea unui motor de procesare distribuit în spatele apelurilor simple., Un exemplu canonic de acest lucru este cât de aproape 50 de linii de MapReduce cod să numere cuvintele dintr-un document poate fi redus la doar câteva linii de Apache Spark (aici se arată în Scala):
Prin furnizarea de legături de limbi populare pentru analiza datelor, cum ar fi Python și R, precum și mai multe întreprinderi-friendly Java și Scala, Apache Spark permite toată lumea de la dezvoltatorii de aplicații pentru oamenii de stiinta de date pentru a valorifica sale scalabilitate și viteza într-un mod accesibil.,
Spark RDD
în centrul Apache Spark este conceptul de Resilient Distributed Dataset (RDD), o abstracție de programare care reprezintă o colecție imuabilă de obiecte care pot fi împărțite într-un cluster de calcul. Operațiunile pe RDDs pot fi, de asemenea, împărțite în cluster și executate într-un proces de lot paralel, ceea ce duce la o procesare paralelă rapidă și scalabilă.RDD-urile pot fi create din fișiere text simple, baze de date SQL, magazine NoSQL (cum ar fi Cassandra și MongoDB), găleți Amazon S3 și multe altele., O mare parte din API-ul Spark Core este construit pe acest concept RDD, permițând harta tradițională și reducerea funcționalității, dar oferind și suport încorporat pentru îmbinarea seturilor de date, filtrarea, eșantionarea și agregarea.Spark rulează într-o manieră distribuită prin combinarea unui proces de bază al driverului care împarte o aplicație Spark în sarcini și le distribuie printre multe procese executoare care fac munca. Acești executori pot fi scalați în sus și în jos, după cum este necesar pentru nevoile aplicației.,
Spark SQL
inițial cunoscut sub numele de Shark, Spark SQL a devenit din ce în ce mai important pentru proiectul Apache Spark. Este probabil interfața cea mai frecvent utilizată de dezvoltatorii de astăzi atunci când creează aplicații. Spark SQL este axat pe prelucrarea datelor structurate, folosind o abordare dataframe împrumutat de la R și Python (în Panda). Dar, după cum sugerează și numele, Spark SQL oferă, de asemenea, o interfață compatibilă cu SQL2003 pentru interogarea datelor, aducând puterea Apache Spark analiștilor, precum și dezvoltatorilor.,pe lângă suportul SQL standard, Spark SQL oferă o interfață standard pentru citirea și scrierea altor magazine de date, inclusiv JSON, HDFS, Apache Hive, JDBC, Apache ORC și Apache Parquet, toate fiind acceptate din cutie. Alte magazine populare-Apache Cassandra, MongoDB, Apache HBase și multe altele—pot fi utilizate trăgând conectori separați din ecosistemul pachetelor Spark.,
Selectarea unor coloane dintr-o dataframe este la fel de simplu ca această linie:
citiesDF.select("name”, "pop”)
Utilizarea SQL interfață, vom înregistra dataframe ca un tabel temporar, după care putem emite interogări SQL pe acesta:
citiesDF.createOrReplaceTempView("cities”)
spark.sql("SELECT name, pop FROM cities”)
în Spatele scenei, Apache Spark utilizează o interogare de optimizare numit Catalizator care analizează date și interogări în scopul de a produce eficient plan de interogare pentru datele de localitate și de calcul, care va efectua necesare calcule peste bord. În Apache Spark 2.,x epoca, Scânteia SQL interfață de dataframes și seturi de date (în esență, o introduce dataframe care pot fi verificate la compilare pentru corectitudinea și de a profita de memorie suplimentară și calcula optimizări la run time) este abordarea recomandată pentru dezvoltare. Interfața RDD este încă disponibilă, dar recomandată numai dacă nevoile dvs. nu pot fi abordate în paradigma Spark SQL.Spark 2.4 a introdus un set de funcții încorporate de ordin superior pentru manipularea directă a matricelor și a altor tipuri de date de ordin superior.,
Spark MLlib
Apache Spark pachete, de asemenea, biblioteci pentru aplicarea de învățare mașină și tehnici de analiză grafic la date la scară. Spark MLlib include un cadru pentru crearea conductelor de învățare automată, permițând implementarea ușoară a extracției, selecțiilor și transformărilor pe orice set de date structurat. MLlib vine cu implementări distribuite de algoritmi de clustering și clasificare, cum ar fi K-înseamnă clustering și păduri aleatoare, care pot fi schimbate în și din conducte personalizate cu ușurință., Modelele pot fi instruite de oamenii de știință de date din Apache Spark folosind R sau Python, salvate folosind MLlib și apoi importate într-o conductă bazată pe Java sau Scala pentru utilizare în producție.rețineți că, în timp ce Spark MLlib acoperă învățarea automată de bază, inclusiv clasificarea, regresia, gruparea și filtrarea, nu include facilități pentru modelarea și instruirea rețelelor neuronale profunde (pentru detalii, consultați revizuirea Spark MLlib a InfoWorld). Cu toate acestea, conductele de învățare profundă sunt în lucru.,Spark GraphX vine cu o selecție de algoritmi distribuiți pentru procesarea structurilor grafice, inclusiv o implementare a PageRank-ului Google. Acești algoritmi folosesc Spark Core e RDD abordare de modelare a datelor; GraphFrames pachet vă permite să facă acest grafic operațiuni pe dataframes, inclusiv profitând de Catalizator de optimizare pentru grafic interogări.Spark Streaming a fost o adăugare timpurie la Apache Spark care a ajutat-o să obțină tracțiune în medii care necesitau procesare în timp real sau aproape în timp real., Anterior, procesarea loturilor și a fluxurilor în lumea Apache Hadoop erau lucruri separate. Ați scrie codul MapReduce pentru nevoile dvs. de procesare a lotului și ați folosi ceva de genul Apache Storm pentru cerințele dvs. de streaming în timp real. Evident, acest lucru duce la disparate codebases care trebuie să fie păstrate în sincronizare pentru aplicația de domeniu, chiar dacă se bazează pe complet diferite cadre, care necesită resurse diferite, și care implică diferite operaționale preocupări pentru rularea lor.,Spark Streaming a extins conceptul Apache Spark de procesare a lotului în streaming prin ruperea fluxului într-o serie continuă de microbatches, care ar putea fi apoi manipulate folosind API-ul Apache Spark. În acest fel, operațiunile de cod în lot și streaming pot partaja (în mare parte) același cod, rulând pe același cadru, reducând astfel atât cheltuielile de dezvoltator, cât și cele ale operatorului. Toată lumea câștigă.,
O critica Scânteie de Streaming de abordare este că microbatching, în scenarii în cazul în care un low-latență, ca răspuns la datele recepționate este necesară, nu poate fi capabil pentru a se potrivi cu performanța altor streaming-capabil cadre, cum ar fi Apache Furtună, Apache Flink, și Apache Apex, toate care folosesc o pură metoda de streaming, mai degrabă decât microbatches.
streaming structurat
streaming structurat (adăugat în Spark 2.x) este de a Spark Streaming ce Spark SQL a fost la API-urile Spark Core: un API de nivel superior și o abstractizare mai ușoară pentru scrierea aplicațiilor., În cazul streamingului de structură, API-ul de nivel superior permite în esență dezvoltatorilor să creeze cadre de date și seturi de date de streaming infinite. De asemenea, rezolvă câteva puncte de durere foarte reale cu care utilizatorii s-au luptat în cadrul anterior, în special în ceea ce privește gestionarea agregărilor în timp de eveniment și livrarea cu întârziere a mesajelor. Toate interogările din fluxurile structurate trec prin Optimizatorul de interogări Catalyst și pot fi chiar rulate într-o manieră interactivă, permițând utilizatorilor să efectueze interogări SQL împotriva datelor de streaming live.,
streamingul structurat s-a bazat inițial pe schema de microbatching a Spark Streaming de manipulare a datelor de streaming. Dar în Spark 2.3, echipa Apache Spark a adăugat un mod de procesare continuă cu latență scăzută la streamingul structurat, permițându-i să gestioneze răspunsurile cu latențe de până la 1ms, ceea ce este foarte impresionant. Începând cu Spark 2.4, procesarea continuă este încă considerată experimentală. În timp ce streamingul structurat este construit pe partea de sus a motorului Spark SQL, streamingul continuu acceptă doar un set restrâns de interogări.,streamingul structurat este viitorul aplicațiilor de streaming cu platforma, deci dacă construiți o nouă aplicație de streaming, ar trebui să utilizați Streaming structurat. API-urile Legacy Spark Streaming vor continua să fie acceptate, dar proiectul recomandă portarea către Streaming structurat, deoarece noua metodă face ca scrierea și menținerea codului de streaming să fie mult mai suportabilă.
conducte de învățare profundă
Apache Spark acceptă învățarea profundă prin conducte de învățare profundă., Folosind structura existentă a MLlib, puteți apela la bibliotecile de învățare profundă de nivel inferior și puteți construi Clasificatoare în doar câteva linii de cod, precum și puteți aplica grafice TensorFlow personalizate sau modele Keras la datele primite. Aceste grafice și modele pot fi chiar înregistrate ca Udfs SQL Spark personalizate (funcții definite de utilizator), astfel încât modelele de învățare profundă pot fi aplicate datelor ca parte a instrucțiunilor SQL.
Apache Spark tutoriale
gata să se scufunde și să învețe Apache Spark?, Vă recomandăm Evan h & m e Un om de Neanderthal e Ghid pentru Apache Spark în Python, care nu numai că stabilește elementele de bază ale cum Apache Spark funcționează relativ simplu, dar, de asemenea, vă ghidează prin procesul de a scrie un simplu Python aplicație care face uz de cadru. Articolul este scris din perspectiva unui om de știință de date, ceea ce are sens, deoarece știința datelor este o lume în care datele mari și învățarea automată sunt din ce în ce mai critice.,
dacă sunteți în căutarea unor exemple Apache Spark pentru a vă oferi o idee despre ce poate face platforma și cum o face, consultați Spark By {Examples}. Există o mulțime de exemple de cod aici pentru o serie de sarcini de bază care alcătuiesc blocurile de programare Spark, astfel încât să puteți vedea componentele care alcătuiesc sarcinile mai mari pentru care este creat Apache Spark.
trebuie să mergeți mai adânc? DZone are ceea ce se referă modest la colecția completă Apache Spark, care constă dintr-o mulțime de tutoriale utile pe multe subiecte Apache Spark. Învățare fericită!