Cos'è Apache Spark?
Apache Spark è un sistema di elaborazione open source distribuito, utilizzato in genere con i carichi di lavoro per i Big Data. Per query analitiche rapide, utilizza la cache in memoria e l'esecuzione ottimizzata delle query su dati di qualsiasi dimensione. Fornisce API di sviluppo in Java, Scala, Python e R e supporta il riutilizzo del codice su più carichi di lavoro: elaborazione in batch, query interattive, analisi in tempo reale, machine learning ed elaborazione di grafici. Lo troverai utilizzato da organizzazioni di qualsiasi settore, tra cui FINRA, Yelp, Zillow, DataXU, Urban Institute e CrowdStrike.
Qual è la storia di Apache Spark?
Apache Spark è nato nel 2009 come progetto di ricerca presso l'AMPLab dell'Università della California - Berkley, come frutto di una collaborazione che coinvolge studenti, ricercatori e docenti, incentrata su domini applicativi ad alta intensità di dati. L'obiettivo di Spark era creare un nuovo framework, ottimizzato per l'elaborazione iterativa rapida come il machine learning e l'analisi interattiva dei dati, pur mantenendo la scalabilità e la tolleranza ai guasti di Hadoop MapReduce. Il primo articolo intitolato “Spark: Cluster Computing with Working Sets” è stato pubblicato nel giugno 2010, anno in cui Spark era open source con licenza BSD. Nel giugno 2013, Spark è entrato in stato di incubazione presso l'Apache Software Foundation (ASF), ottenendo il riconoscimento di Apache Top-Level Project nel febbraio 2014. Spark può essere eseguito da solo, su Apache Mesos o, come avviene più frequentemente, su Apache Hadoop.
Come funziona Apache Spark?
Hadoop MapReduce è un modello di programmazione per l'elaborazione di set di big data con un algoritmo parallelo distribuito. Gli sviluppatori possono scrivere operatori estremamente parallelizzati, senza doversi preoccupare della distribuzione del lavoro e della tolleranza agli errori. Tuttavia, una sfida per MapReduce è il processo sequenziale in più fasi necessario per eseguire un processo. Ad ogni passaggio, MapReduce legge i dati dal cluster, esegue operazioni e riscrive i risultati su HDFS. Poiché ogni passaggio richiede una lettura e una scrittura su disco, i processi MapReduce sono più lenti a causa della latenza dell'I/O del disco.
Spark è stato creato per risolvere i limiti di MapReduce, eseguendo l'elaborazione in memoria, riducendo il numero di passaggi in un processo e riutilizzando i dati in più operazioni parallele. Con Spark, è sufficiente un solo passaggio per leggere i dati in memoria, eseguire le operazioni e riscrivere i risultati, con conseguente esecuzione molto più rapida. Spark riutilizza inoltre i dati utilizzando una cache in memoria per velocizzare notevolmente gli algoritmi di machine learning che chiamano ripetutamente una funzione sullo stesso set di dati. Il riutilizzo dei dati avviene attraverso la creazione di DataFrames, un'astrazione su Resilient Distributed Dataset (RDD), che è una raccolta di oggetti memorizzata nella cache e riutilizzata in più operazioni Spark. Ciò riduce drasticamente la latenza, rendendo Spark di gran lunga più veloce di MapReduce, specialmente nell'esecuzione di machine learning e analisi interattiva.
Differenze principali: Apache Spark vs. Apache Hadoop
Ferme restando le differenze di progettazione tra Spark e Hadoop MapReduce, molte organizzazioni hanno scoperto la complementarietà di questi framework per big data, utilizzandoli insieme per risolvere sfide aziendali di maggiore portata.
Hadoop è un framework open source che utilizza il file system distribuito Hadoop (HDFS) come archiviazione, YARN per gestire le risorse di calcolo utilizzate da diverse applicazioni e un'implementazione del modello di programmazione MapReduce come motore di esecuzione. In una tipica implementazione Hadoop, vengono implementati anche diversi motori di esecuzione come Spark, Tez e Presto.
Spark è un framework open source incentrato su query interattive, machine learning e carichi di lavoro in tempo reale. Non dispone di un proprio sistema di archiviazione, ma esegue analisi su altri sistemi di archiviazione come HDFS o altri archivi noti come Amazon Redshift, Amazon S3, Couchbase, Cassandra e tanti altri. Spark su Hadoop sfrutta YARN per condividere un cluster e un set di dati comuni come altri motori Hadoop, garantendo livelli di servizio e risposta coerenti.
Quali sono i vantaggi di Apache Spark?
I vantaggi di Apache Spark lo rendono uno dei progetti più attivi nell'ecosistema Hadoop. Tra le funzionalità e i servizi sono inclusi:
Rapidità
Spark può eseguire query analitiche rapide su dati di qualsiasi dimensione, utilizzando la cache in memoria e l'esecuzione ottimizzata delle query.
Ideale per sviluppatori
Apache Spark offre supporto nativo per Java, Scala, R e Python, perciò fornisce un'ampia gamma di linguaggi di programmazione per le tue applicazioni. Queste API semplificano il lavoro degli sviluppatori, poiché nascondono la complessità dell'elaborazione distribuita dietro operatori semplici e di alto livello che riducono drasticamente la quantità di codice richiesta.
Carichi di lavoro multipli
Apache Spark è in grado di eseguire carichi di lavoro multipli, tra cui query interattive, analisi in tempo reale, machine learning ed elaborazione di grafici. Un'applicazione può combinare più carichi di lavoro senza problemi.
Cosa sono i carichi di lavoro Apache Spark?
Il framework Spark include:
- Spark Core come base per la piattaforma
- Spark SQL per query interattive
- Spark Streaming per analisi in tempo reale
- Spark MLlib per il machine learning
- Spark GraphX per l'elaborazione di grafici
Spark Core
Spark Core è la base della piattaforma. È responsabile della gestione della memoria, del ripristino degli errori, della pianificazione, della distribuzione e del monitoraggio dei processi e dell'interazione con i sistemi di archiviazione. Spark Core è esposto tramite un'interfaccia di programmazione dell'applicazione (API) creata per Java, Scala, Python e R. Queste API nascondono la complessità dell'elaborazione distribuita dietro semplici operatori di alto livello.
MLlib
Machine learning
Spark include MLlib, una libreria di algoritmi per eseguire il machine learning su dati a larga scala. I modelli di machine learning possono essere addestrati dai data scientist con R o Python su qualsiasi origine dati Hadoop, salvati utilizzando MLlib e importati in una pipeline basata su Java o Scala. Spark è stato progettato per un calcolo veloce e interattivo che viene eseguito in memoria, permettendo l'esecuzione rapida del machine learning. Gli algoritmi includono la capacità di eseguire la classificazione, la regressione, il clustering, il filtraggio collaborativo e l'estrazione dei modelli.
Spark Streaming
Operatività in tempo reale
Spark Streaming è una soluzione in tempo reale che sfrutta la capacità di pianificazione rapida di Spark Core per eseguire analisi di streaming. Importa i dati in mini-batch e consente l'analisi su tali dati con lo stesso codice dell'applicazione scritto per l'analisi in batch. Ciò migliora la produttività degli sviluppatori, poiché consente loro di utilizzare lo stesso codice per l'elaborazione in batch e per le applicazioni di streaming in tempo reale. Spark Streaming supporta i dati di Twitter, Kafka, Flume, HDFS, ZeroMQ e molti altri contenuti nell'ecosistema Spark Packages.
Spark SQL
Query interattive
Spark SQL è un motore di query distribuito che fornisce query interattive a bassa latenza fino a 100 volte più velocemente di MapReduce. Include un ottimizzatore basato sui costi, un'archiviazione a colonne ed è capace di generare codici per query veloci dimensionando migliaia di nodi. Per interrogare i dati, gli analisti aziendali possono utilizzare SQL standard o Hive Query Language. Gli sviluppatori possono utilizzare le API disponibili in Scala, Java, Python e R. Supporta diverse origini dati pronte all'uso, tra cui JDBC, ODBC, JSON, HDFS, Hive, ORC e Parquet. Altri archivi noti come Amazon Redshift, Amazon S3, Couchbase, Cassandra, MongoDB, Salesforce.com, Elasticsearch e molti altri sono inclusi nell'ecosistema Spark Packages.
GraphX
Elaborazione di grafici
Spark GraphX è un framework di elaborazione di grafici distribuito basato su Spark. GraphX fornisce ETL, analisi esplorativa e calcolo iterativo dei grafici per consentire agli utenti di creare e trasformare in modo interattivo una struttura di dati grafici su larga scala. Viene fornito con un'API altamente flessibile e una selezione di algoritmi Graph distribuiti.
Quali sono i casi d'uso di Apache Spark?
Spark è un sistema di elaborazione distribuito generico utilizzato per carichi di lavoro di big data. È stato implementato in ogni tipo di caso d'uso dei big data per rilevare modelli e fornire informazioni dettagliate in tempo reale. I casi d'uso di esempio includono:
Servizi finanziari
Spark viene utilizzato nel settore bancario per prevedere il tasso di abbandono dei clienti e consigliare nuovi prodotti finanziari. Nei servizi bancari d'investimento, Spark viene utilizzato per analizzare i prezzi delle azioni per prevedere le tendenze future.
Sanità
Spark viene utilizzato per creare un'assistenza completa ai pazienti, mettendo a disposizione degli operatori sanitari in prima linea i dati per ogni interazione con il paziente. Spark può essere utilizzato anche per prevedere/raccomandare il trattamento del paziente.
Manifatturiero
Spark viene utilizzato per eliminare i tempi di inattività delle apparecchiature connesse a Internet, consigliando quando eseguire la manutenzione preventiva.
Vendita al dettaglio
Spark viene utilizzato per attrarre e fidelizzare i clienti attraverso servizi e offerte personalizzati.
Come funziona l'implementazione di Apache Spark nel cloud?
Spark è un carico di lavoro ideale nel cloud, perché il cloud offre prestazioni, scalabilità, affidabilità, disponibilità e un risparmio notevole in termini di dimensionamento. Una ricerca ESG ha rilevato che il 43% degli intervistati considera il cloud come l'implementazione principale per Spark. Le ragioni principali per cui i clienti hanno percepito il cloud come un vantaggio per Spark includono tempi più rapidi per l'implementazione, migliore disponibilità, aggiornamenti più frequenti di caratteristiche/funzionalità, maggiore elasticità, maggiore copertura geografica e costi legati all'utilizzo effettivo.
Quali sono le offerte AWS per Apache Spark?
Amazon EMR è il posto migliore per distribuire Apache Spark nel cloud, perché combina il rigore di integrazione e test delle distribuzioni commerciali di Hadoop & Spark con il dimensionamento, la semplicità e l'economicità del cloud. Consente di avviare i cluster Spark in pochi minuti senza dover eseguire il provisioning dei nodi, l'installazione dei cluster, la configurazione Spark o la regolazione dei cluster. EMR consente di eseguire il provisioning di una, centinaia o migliaia di istanze di calcolo in pochi minuti. È possibile utilizzare il dimensionamento automatico per fare in modo che EMR aumenti automaticamente i tuoi cluster Spark per elaborare dati di qualsiasi dimensione, e tornare indietro quando il processo è completo per evitare ulteriori costi per la capacità inutilizzata. Impegnandoti a rispettare un termine prestabilito, puoi ridurre i costi in fattura. Inoltre, puoi risparmiare fino al 75% utilizzando le istanze riservate di Amazon EC2 oppure eseguendo i cluster su capacità di calcolo AWS di riserva. O ancora, puoi risparmiare fino al 90% utilizzando Spot EC2.
Inizia a utilizzare Apache Spark su AWS creando un account oggi stesso.
Fasi successive su AWS
Ottieni accesso istantaneo al Piano gratuito di AWS.