Apache Flink vs Spark – Uno supererà l’altro?
Ultimo aggiornamento: 25 Jan 2021
Apache Spark e Apache Flink sono entrambi open- sourced, framework di elaborazione distribuita che è stato costruito per ridurre le latenze di Hadoop Mapreduce nell’elaborazione veloce dei dati. C’è un malinteso comune che Apache Flink sta per sostituire Spark o è possibile che entrambe queste tecnologie di big data possano coesistere, servendo così esigenze simili all’elaborazione veloce dei dati con tolleranza agli errori. Apache Spark e Flink possono sembrare simili a qualcuno che non ha lavorato con nessuna delle due e ha familiarità solo con Hadoop, ed è ovvio che sentirà che lo sviluppo di Apache Flink è per lo più superfluo. Ma Flink è riuscito a rimanere avanti nel gioco grazie alla sua caratteristica di elaborazione del flusso, che riesce ad elaborare righe su righe di dati in tempo reale – cosa che non è possibile nel metodo di elaborazione batch di Apache Spark. Questo rende Flink più veloce di Spark.
Secondo questo studio IBM, stiamo creando circa 2,5 quintilioni di byte di dati ogni giorno – e questo tasso di generazione di dati continua ad aumentare ad un ritmo senza precedenti. Per mettere le cose in un’altra prospettiva, circa il 90% di tutti i dati esistenti in questo mondo, è stato creato negli ultimi due anni, anche se il World Wide Web è stato accessibile al pubblico per ben oltre due decenni. Con la crescita di Internet, è cresciuto anche il numero di utenti e la sempre maggiore domanda di contenuti ha aperto la strada al Web 2.0 nell’ultimo decennio. È stata la prima volta che agli utenti è stato permesso di creare i propri dati su internet ed erano pronti per essere consumati da un pubblico affamato di dati.
Poi è stato il turno dei social media di invadere le nostre vite. Secondo il rapporto wersm (we are social media), Facebook riceve più di 4 milioni di like in un minuto! I dati generati da altre fonti popolari sono menzionati nell’infografica (tratta dallo stesso studio del wersm) prima di dare un’occhiata a come questi dati vengono consumati.
“Come immagazzinare queste enormi quantità di dati?” è stato un problema che ha tenuto impegnati i tech geek per la maggior parte del decennio precedente. L’improvvisa ascesa dei social media non ha reso i loro compiti più facili. Tuttavia, le soluzioni di archiviazione della nuova era come il Cloud Computing hanno rivoluzionato il settore e presentato la migliore soluzione possibile. Nell’attuale decennio, la dichiarazione del problema si è spostata su “Cosa fare con enormi quantità di dati? L’analisi dei dati è emersa come l’obiettivo finale, ma prima di questo, un sacco di lavoro deve essere fatto per integrare i dati memorizzati in diversi formati in diverse fonti e prepararli per l’elaborazione e l’analisi, che è un compito impegnativo.
Per la lista completa delle aziende di big data e i loro stipendi- CLICCA QUI
I nostri due argomenti di oggi – Apache Spark e Apache Flink – tentano di rispondere a questa domanda e non solo.
Apache Spark
Spark è un framework open source per il cluster computing che ha una grande base utenti globale. È scritto in Scala, Java, R e Python e dà ai programmatori un’interfaccia di programmazione delle applicazioni (API) costruita su un multiset di dati distribuiti tollerante ai guasti e di sola lettura. In un breve periodo di 2 anni dal suo rilascio iniziale (maggio 2014), ha visto un’ampia accettabilità per l’analisi avanzata in tempo reale, in-memory, grazie alla sua velocità, facilità d’uso e la capacità di gestire requisiti analitici sofisticati.
Se desideri maggiori informazioni sulle carriere Big Data, clicca sul pulsante arancione “Request Info” in cima a questa pagina.
Svantaggi di Spark
Apache Spark ha diversi vantaggi rispetto alle tradizionali tecnologie Big Data e MapReduce. I più importanti sono. Essenzialmente porta MapReduce al livello successivo con una performance che è diverse volte più veloce. Uno dei differenziatori chiave per Spark è la sua capacità di mantenere i risultati intermedi in-memoria, piuttosto che scrivere di nuovo su disco e leggere di nuovo da esso, che è fondamentale per i casi d’uso basati sull’iterazione.
- Velocità – Spark può eseguire lavori di elaborazione batch da 10 a 100 volte più velocemente di MapReduce. Questo non significa che rimanga indietro quando i dati devono essere scritti su (e recuperati da) disco, dato che è il detentore del record mondiale per l’ordinamento su larga scala su disco.
- Facilità d’uso – Apache Spark ha API facili da usare, costruite per operare su grandi serie di dati.
- Motore unificato – Spark può funzionare sopra Hadoop, facendo uso del suo cluster manager (YARN) e dello storage sottostante (HDFS, HBase, ecc.). Tuttavia, può anche funzionare indipendentemente da Hadoop, unendo le mani con altri cluster manager e piattaforme di storage (come Cassandra e Amazon S3). Viene anche fornito con librerie di livello superiore che supportano le query SQL lo streaming dei dati, l’apprendimento automatico e l’elaborazione dei grafici.
- Scegli tra Java, Scala o Python – Spark non ti lega a un linguaggio particolare e ti permette di scegliere tra quelli popolari come Java, Scala, Python, R e persino Clojure.
- Condivisione dei dati in memoria – Diversi lavori possono condividere i dati all’interno della memoria, il che lo rende una scelta ideale per compiti iterativi, interattivi e di elaborazione di flussi di eventi.
- Comunità di utenti attiva e in espansione – Una comunità di utenti attiva ha portato a una release stabile di Spark (nel giugno 2016) entro 2 anni dal suo rilascio iniziale. Questo la dice lunga sulla sua accettabilità a livello mondiale, che è in aumento.
Apache Flink
In tedesco significa ‘veloce’ o ‘agile’, Apache Flink è l’ultimo arrivato nella lista dei framework open-source focalizzati sui Big Data Analytics che stanno cercando di sostituire l’ormai vecchio MapReduce di Hadoop, proprio come Spark. Flink ha ottenuto la sua prima versione API-stable rilasciata nel marzo 2016 ed è costruito per l’elaborazione in-memoria dei dati in batch, proprio come Spark. Questo modello è molto utile quando è necessario effettuare ripetuti passaggi sugli stessi dati. Questo lo rende un candidato ideale per l’apprendimento automatico e altri casi d’uso che richiedono apprendimento adattivo, reti di autoapprendimento, ecc. Con l’inevitabile boom dello spazio Internet of Things (IoT), la comunità di utenti Flink ha alcune sfide eccitanti da affrontare.
Svantaggi di Flink
- Motore di elaborazione del flusso effettivo che può approssimare l’elaborazione batch, piuttosto che essere il contrario.
- Migliore gestione della memoria – La gestione esplicita della memoria si libera dei picchi occasionali che si trovano nel framework Spark.
- Velocità – Gestisce velocità più elevate permettendo che l’elaborazione iterativa abbia luogo sullo stesso nodo piuttosto che avere il cluster che li esegue indipendentemente. La sua performance può essere ulteriormente sintonizzata modificandola per rielaborare solo la parte di dati che è cambiata piuttosto che l’intero set. Offre una velocità fino a cinque volte superiore rispetto all’algoritmo di elaborazione standard.
- Meno configurazione
Apache Flink vs Spark
Quando Flink è arrivato, Apache Spark era già il framework de facto per requisiti analitici di big data veloci e in-memory per un certo numero di organizzazioni nel mondo. Questo ha fatto apparire Flink superfluo. Dopo tutto, perché si dovrebbe richiedere un altro motore di elaborazione dei dati quando la giuria era ancora fuori su quello esistente? Si deve scavare più a fondo nelle capacità di Flink per osservare ciò che lo distingue, anche se un certo numero di analisti lo ha presentato come il “4G di Data Analytics”.
Profondamente incorporato nelle impostazioni di Spark è una piccola debolezza che Flink ha preso di mira e sta cercando di capitalizzare. Sebbene sia vero ai fini delle discussioni casuali, Spark non è puramente un motore di stream-processing. Come osservato da Ian Pointer nell’articolo di InfoWorld ‘Apache Flink: New Hadoop contender squares off against Spark’, Spark è essenzialmente un’operazione fast-batch che lavora solo su una piccola parte dei dati in arrivo durante un’unità di tempo. Spark si riferisce a questo come “micro batching” nella sua documentazione ufficiale. È improbabile che questo problema abbia un significato pratico sulle operazioni, a meno che il caso d’uso non richieda una bassa latenza (sistemi finanziari) dove un ritardo dell’ordine dei millisecondi può causare un impatto significativo. Detto questo, Flink è praticamente un lavoro in corso e non può ancora pretendere di sostituire Spark.
Flink è un framework per l’elaborazione dei flussi che può eseguire le operazioni che richiedono l’elaborazione in batch, dandovi la possibilità di utilizzare lo stesso algoritmo in entrambe le modalità, senza dovervi rivolgere a una tecnologia come Apache Storm che richiede una risposta a bassa latenza.
Sia Spark che Flink supportano l’elaborazione in-memoria che dà loro un netto vantaggio di velocità rispetto ad altri framework. Quando si tratta di elaborazione in tempo reale dei dati in entrata, Flink non regge il confronto con Spark, anche se ha la capacità di svolgere compiti di elaborazione in tempo reale.
Spark e Flink possono entrambi gestire l’elaborazione iterativa in memoria. Quando si tratta di velocità, Flink ha il sopravvento in quanto può essere programmato per elaborare solo i dati che sono cambiati, ed è qui che esce fuori in cima a Spark.
Storie di crescita – Spark e Flink
Ogni struttura software ha bisogno di più della competenza tecnica per essere in grado di aiutare le aziende a ricavare il massimo valore. In questa sezione scaviamo nell’articolo Apache Spark 2015 Year in Review di Databricks per vedere come si è comportato nella comunità globale di utenti e sviluppatori. L’anno ha visto 4 rilasci (da 1.3 a 1.6), ognuno con centinaia di correzioni per migliorare il framework. Ciò che ha catturato la nostra attenzione è la crescita del numero di sviluppatori che hanno contribuito – da 500 nel 2014 a oltre 1000 nel 2015! Un’altra cosa notevole di Spark è la facilità con cui i suoi utenti passano alle nuove versioni. Il rapporto menziona che entro tre mesi la maggioranza degli utenti adotta l’ultima versione. Questi fatti aumentano la sua reputazione come il più attivamente sviluppato (e adottato) strumento di dati open source.
Flink è stato relativamente in ritardo nella corsa, ma l’anno 2015 nel suo sito ufficiale mostra perché è qui per rimanere come il più completo framework open source di elaborazione dei flussi disponibile. Il repository github di Flink (Get the Repository – Here) mostra che la comunità è raddoppiata nel 2015 – da 75 collaboratori a 150. I fork del repository sono più che triplicati nell’anno, così come il numero di stelle del repository. Partendo da Berlino, in Germania, ha visto la sua comunità di utenti crescere attraverso i continenti fino al Nord America e all’Asia. La Flink Forward Conference è stata un’altra pietra miliare per Flink, che ha visto la partecipazione di oltre 250 partecipanti, dove più di 100 partecipanti hanno viaggiato da tutto il mondo per assistere a interventi tecnici di organizzazioni tra cui Google, MongoDB, Telecom, NFLabs, RedHat, IBM, Huawei, Ericsson, Capital One, Amadeus e molti altri.
Anche se è ancora presto per individuare uno di questi due come chiaro vincitore, siamo dell’idea che invece di avere molti framework che fanno la stessa cosa, il mondo tecnologico sarebbe meglio servito dall’avere nuovi concorrenti che fanno cose diverse e completano quelli esistenti piuttosto che competere contro di loro.
PREVIEW |
NEXT |