Cos'è Apache Spark?

Vista aerea del tetto di un edificio

Cos'è Apache Spark?

Apache Spark è un motore di trattamento dei dati open source velocissimo per applicazioni di machine learning e AI, supportato dalla più grande community open source nel campo dei big data.

Apache Spark (Spark) gestisce facilmente set di dati su larga scala ed è un sistema di clustering veloce e generico adatto a PySpark. È progettato per offrire la velocità computazionale, la scalabilità e la programmabilità necessarie per i big data, in particolare per lo streaming di dati, dati grafici, analytics, machine learning, elaborazione dei dati su larga scala e applicazioni di intelligenza artificiale (AI).

L'analytics engine di Spark elabora i dati da 10 a 100 volte più velocemente rispetto ad alcune alternative, come Hadoop per i workload più piccoli. La scalabilità si ottiene distribuendo i workflow di elaborazione su grandi cluster di computer, con parallelismo e tolleranza ai guasti integrati. Include anche API per i linguaggi di programmazione più utilizzati da analisti di dati e data scientist, tra cui Scala, Java, Python e R.l

Spark viene spesso messo a confronto con Apache Hadoop e, in particolare, con Hadoop MapReduce, il componente nativo per l'elaborazione dei dati di Hadoop. La differenza principale tra Spark e MapReduce è che Spark elabora e mantiene i dati in memoria per i passaggi successivi, senza scrivere sul disco o leggerlo, il che si traduce in velocità di elaborazione notevolmente più elevate. (Sempre in questo articolo troverai ulteriori informazioni sul raffronto tra Spark e Hadoop e il loro utilizzo congiunto.)

Spark è stato sviluppato nel 2009 presso l'AMPLab della UC Berkeley. Oggi è gestito dalla Apache Software Foundation e vanta la più grande community open source di big data, con oltre 1.000 collaboratori. È anche incluso come componente principale di diverse offerte commerciali di big data.

Design 3D di palline che rotolano su una pista

Le ultime notizie e insight sull'AI


Scopri notizie e insight selezionati da esperti in materia di AI, cloud e molto altro nella newsletter settimanale Think. 

Come funziona Apache Spark

Apache Spark presenta un'architettura gerarchica primaria/secondaria. Il Spark Driver è il nodo primario che controlla il gestore cluster, che gestisce i nodi secondari e fornisce i risultati dei dati al client applicativo.

In base al codice applicativo, Spark Driver genera lo SparkContext, che funziona con il cluster manager, Standalone Cluster Manager o altri cluster manager come Hadoop YARN, Kubernetes o Mesos, per distribuire e monitorare l'esecuzione tra i nodi. Crea inoltre set di dati distribuiti resilienti (RDD), che sono la chiave della notevole velocità di elaborazione di Spark.

Resilient Distributed Dataset (RDD)

Gli RDD (Resilient Distributed Datasets) sono raccolte di elementi tolleranti ai guasti che possono essere distribuite tra più nodi di un cluster e utilizzate in parallelo. Gli RDD sono una struttura fondamentale in Apache Spark.

Spark carica i dati facendo riferimento a un'origine dati o parallelizzando una raccolta esistente con il metodo di parallelizzazione SparkContext di memorizzazione dei dati in un RDD per l'elaborazione. Una volta che i dati vengono caricati in un RDD, Spark esegue trasformazioni e azioni su RDD in memoria; è questo il segreto della sua velocità. Spark conserva inoltre i dati in memoria, a meno che il sistema non esaurisca la memoria o l'utente non decida di scrivere i dati su disco ai fini della persistenza.

Ogni set di dati in un RDD è suddiviso in partizioni logiche, che possono essere calcolate su diversi nodi del cluster. Gli utenti possono eseguire due tipi di operazioni RDD: trasformazioni e azioni. Le trasformazioni sono operazioni applicate per creare un nuovo RDD, mentre le azioni vengono utilizzate per istruire Apache Spark ad applicare il calcolo e restituire il risultato al driver.

Spark supporta un'ampia gamma di azioni e trasformazioni sugli RDD. Questa distribuzione viene eseguita da Spark, quindi gli utenti non devono preoccuparsi di calcolare la distribuzione corretta.

Directed Acyclic Graph (DAG)

Al contrario del processo di esecuzione a due fasi in MapReduce, Spark crea un DAG (Directed Acyclic Graph) per pianificare le attività e l'orchestrazione dei worker node nel cluster. Via via che Spark agisce e trasforma i dati nei processi di esecuzione delle attività, lo strumento di pianificazione DAG facilita l'efficienza orchestrando i worker node all'interno del cluster. Il tracciamento delle attività rende possibile la tolleranza agli errori, in quanto riapplica le operazioni registrate ai dati di uno stato precedente.

Frame di dati e set di dati

Oltre a RDD, Spark gestisce altri due tipi di dati: frame di dati e set di dati.

I frame di dati sono le interfacce di programmazione delle applicazioni (API) strutturate più comuni e rappresentano una tabella di dati con righe e colonne. Sebbene RDD sia stata una funzionalità fondamentale per Spark, ora è in modalità di manutenzione. A causa della popolarità della Machine Learning Library (MLlib) di Spark, i frame di dati hanno assunto il ruolo principale come API primaria per MLlib (un set di algoritmi di machine learning per la scalabilità più strumenti per la selezione delle funzionalità e la creazione di pipeline di apprendimento automatico ML). Questo è importante da notare quando si utilizza l'API MLLib, in quanto i frame di dati forniscono uniformità tra i diversi linguaggi, come Scala, Java, Python e R.

I Datasets sono un'estensione dei frame di dati che forniscono un'interfaccia di programmazione orientata agli oggetti e sicura rispetto al tipo. I Datasets sono, per impostazione predefinita, una raccolta di oggetti JVM fortemente tipizzati, a differenza dei frame di dati.

Spark SQL consente di interrogare i dati dai frame di dati e dagli storage dei dati SQL, come Apache Hive. Le query SQL di Spark restituiscono un frame di dati o un set di dati quando vengono eseguite in un'altra lingua.

Spark Core

Spark Core è la base per l'elaborazione dei dati in parallelo e gestisce pianificazione, ottimizzazione, RDD e astrazione dei dati. Spark Core fornisce le basi funzionali per le librerie Spark, Spark SQL, Spark Streaming, la libreria di machine learning MLlib e l'elaborazione dei dati grafici GraphX. Spark Core e il cluster manager distribuiscono i dati nel cluster Spark e li astraggono. Questa distribuzione e astrazione rendono la gestione dei big data estremamente rapida e intuitiva.

API Spark

Spark include una varietà di application programming interface (API) per portare la potenza di Spark a un pubblico più vasto. Spark SQL consente di interagire con i dati RDD in modo relazionale. Spark dispone inoltre di un'API ben documentata per Scala, Java, Python e R. Ogni API di linguaggio di Spark gestisce i dati in modo leggermente diverso. RDD, frame di dati e set di dati sono disponibili in ogni API di linguaggio. Con le API per una tale varietà di lingue, Spark rende l'elaborazione dei big data accessibile a gruppi più diversificati di persone con background in fase di sviluppo, data science, data engineering e statistiche.

Think 2025

Trai vantaggio dall'hybrid cloud per dare impulso al valore dell'AI su larga scala

Scopri in che modo un'architettura ibrida ben progettata unifica i dati, sfrutta il calcolo ad alte prestazioni e migliora la sicurezza per supportarti nel tuo percorso verso il successo con l'AI su larga scala.

Vantaggi di Apache Spark

Spark accelera lo sviluppo e le operazioni in vari modi. Spark aiuta i team a:

  • Accelerare lo sviluppo di app: gli stream e i modelli di programmazione SQL di Apache Spark supportati da MLlib e GraphX semplificano la creazione di app che utilizzano il machine learning e l'analytics grafica.

  • Innovare più rapidamente: le API offrono facilità d'uso durante la manipolazione dei dati semi-strutturati e la trasformazione dei dati.

  • Ottimizzare con tecnologie aperte: la OpenPOWER Foundation consente a GPU, CAPI Flash, RDMA, accelerazione FPGA e innovazione del machine learning di ottimizzare le prestazioni dei workload Apache Spark.

  • Processi più rapidi: Spark può essere 100 volte più veloce di Hadoop per workload più piccoli grazie al motore avanzato di elaborazione in-memory e al data storage su disco.

  • Accelerare l'accesso alla memoria: Spark può essere utilizzato per creare un grande spazio di memoria per l'elaborazione dei dati, consentendo agli utenti più esperti di accedere ai dati attraverso interfacce utilizzando Python, R e Spark SQL.

Apache Spark e machine learning

Spark dispone di varie librerie che estendono le funzionalità al machine learning, all'intelligenza artificiale (AI) e all'elaborazione dei flussi.

Apache Spark MLlib

Una delle funzionalità critiche di Apache Spark sono le funzionalità di machine learning disponibili in Spark MLlib, che offre una soluzione pronta all'uso per classificazione e regressione, filtro collaborativo, clustering, algebra lineare distribuita, decision tree, random forest, gradient-boosted tree, pattern mining frequente, metriche di valutazione e statistiche. Le funzionalità di MLlib, combinate con i vari tipi di dati, rendono Apache Spark uno strumento di big data indispensabile.

Spark GraphX

Oltre a disporre di funzionalità API, Spark GraphX è progettato per risolvere i problemi grafici. GraphX è un'astrazione di grafo che estende gli RDD per i grafi e il calcolo parallelo al grafo. Spark GraphX si integra con i database a grafo che memorizzano informazioni di interconnettività o reti di informazioni di connessione, come quella di un social network.

Spark Streaming

Spark Streaming è un'estensione dell'API Spark di base che consente un'elaborazione scalabile e tollerante ai guasti dei flussi di dati in tempo reale. Mentre Spark Streaming elabora i dati, è in grado di fornirli a file system, database e dashboard live per l'analisi in streaming in tempo reale con gli algoritmi di apprendimento automatico e di elaborazione dei grafi di Spark. Basato sul motore Spark SQL, Spark Streaming consente anche l'elaborazione incrementale in batch, che si traduce in un'elaborazione più rapida dei dati in streaming.

Spark e Apache Hadoop and MapReduce a confronto

"Spark vs. Hadoop" è una query di ricerca comune sul web ma, come detto in precedenza, Spark è un miglioramento di Hadoop e, più nello specifico, di MapReduce, il componente di elaborazione dati nativo di Hadoop. Spark si basa sul framework MapReduce e, attualmente, la maggior parte delle distribuzioni Hadoop include Spark.

Come Spark, anche MapReduce consente ai programmatori di scrivere applicazioni che elaborano enormi set di dati più velocemente, elaborando porzioni del set di dati in parallelo su grandi cluster di computer. Tuttavia, mentre MapReduce elabora i dati su disco, aggiungendo tempi di lettura e scrittura che rallentano l'elaborazione, Spark esegue calcoli in memoria, che è molto più veloce. Di conseguenza, Spark può elaborare i dati fino a 100 volte più velocemente di MapReduce.

Le API integrate di Spark per più lingue lo rendono più pratico e accessibile per gli sviluppatori rispetto a MapReduce, che ha invece la reputazione di essere difficile da programmare. A differenza di MapReduce, Spark può eseguire applicazioni di elaborazione del flusso su cluster Hadoop utilizzando YARN, il framework di gestione delle risorse e pianificazione dei lavori di Hadoop. Come già osservato, Spark aggiunge le funzionalità di MLlib, GraphX e SparkSQL. Spark è in grado di gestire dati provenienti da altre fonti di dati esterne all'applicazione Hadoop, incluso Apache Kafka.

Spark è inoltre compatibile e complementare con Hadoop. Può elaborare dati Hadoop, inclusi dati da HDFS (Hadoop Distributed File System), HBase (un database non relazionale eseguito su HDFS), Apache Cassandra (un'alternativa NoSQL a HDFS) e Hive (un data warehouse basato su Hadoop).

Soluzioni correlate
IBM Z Operational Log and Data Analytics 

Accelera l'identificazione ibrida degli incidenti con analytics operative quasi in tempo reale.

Esplora IBM Z
Soluzioni di cloud analytics

Sblocca i risultati che cambiano il business con le soluzioni di cloud analytics che ti consentono di analizzare facilmente i dati e di creare modelli di machine learning.

Esplora le soluzioni di cloud analytics
Servizi di consulenza cloud

Scopri nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM.

Esplora i servizi di consulenza cloud
Prossimi passi

Sblocca insight in tempo reale dai tuoi dati IBM Z con analytics che collegano mainframe e cloud, in modo da poter agire più velocemente, ridurre i rischi e prendere decisioni più intelligenti.

Esplora IBM Z Ottieni maggiori informazioni