Home topics Apache Spark Cos'è Apache Spark?
Scopri la soluzione Apache Spark di IBM Abbonati per ricevere gli aggiornamenti sull'AI
Illustrazione con collage di pittogrammi di nuvole, grafico a torta, pittogrammi grafici
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, analisi, machine learning, trattamento dei dati su larga scala e applicazioni di AI.

Il motore di analisi di Spark elabora i dati da da 10 a 100 volte più velocemente rispetto ad alcune alternative, come Hadoop (link esterno a ibm.comi) per 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 che sono diffusi tra analisti di dati e data scientist, tra cui Scala, Java, Python e R.

Spark viene spesso messo a confronto con Apache Hadoop e, in particolare con Hadoop MapReduce, il componente nativo per il trattamento 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 o leggere dal disco, il che si traduce in velocità di elaborazione notevolmente più elevate. (Sempre in questo articolo troverai ulteriori informazioni su come Spark si confronta con e integra Hadoop.)

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.

AI generativa e apprendimento automatico (ML) per le imprese

Scopri i principali vantaggi dell'AI generativa e come le organizzazioni possono incorporare l'AI generativa e il machine learning nel proprio business.

ebook

Registrati per ricevere l'ebook sugli storage dei dati AI

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 il SparkContext, che funziona con il gestore di cluster, Standalone Cluster Manager o altri gestori di cluster 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.

Set di dati distribuito resiliente (RDD)


Gli RDD (Resilient Distributed Datasets) sono raccolte di elementi tolleranti ai guasti che possono essere distribuiti tra più nodi di un cluster e lavorati 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 caricati i dati in un RDD, Spark esegue trasformazioni e azioni su RDD in memoria, la chiave della velocità di Spark. Spark memorizza 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 perché possano durare.

Ogni set di dati in un RDD è suddiviso in partizioni logiche, che possono essere calcolate su diversi nodi del cluster. Inoltre, gli utenti possono eseguire due tipi di operazioni RDD: trasformazioni e azioni. Le trasformazioni sono operazioni applicate per creare un nuovo RDD. 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.

Grafo aciclico diretto (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 nodi worker nel cluster. Man mano che Spark agisce e trasforma i dati nei processi di esecuzione delle attività, lo strumento di pianificazione DAG facilita l'efficienza orchestrando i nodi worker 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 il trattamento 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 il trattamento dei dati grafici GraphX. Spark Core e il gestore cluster 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 interfacce di programmazione delle applicazioni (API) per portare la potenza di Spark al 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 linguistica di Spark ha le sue specifiche sfumature nel modo in cui gestisce i dati. RDD, frame di dati e set di dati sono disponibili in ogni API del linguaggio. Con le API per una tale varietà di lingue, Spark rende il trattamento dei big data accessibile a gruppi più diversificati di persone con background in fase di sviluppo, data science, data engineering e statistiche.

Vantaggi di Apache Spark

Spark accelera lo sviluppo e le operazioni in vari modi. Spark aiuterà 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 sfruttano la machine learning e l'analisi 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, l'accelerazione FPGA e l'innovazione nella machine learning di ottimizzare le prestazioni per workload Apache Spark.

  • Processi più rapidi: Spark può essere 100 volte più veloce di Hadoop (link esterno a ibm.com) 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 ampio spazio di memoria per il trattamento 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 aumentano le funzionalità alla machine learning, all'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 la classificazione e la regressione, il filtraggio collaborativo, il clustering, l'algebra lineare distribuita, gli alberi decisionali, le foreste casuali, gli alberi con aumento del gradiente, il pattern mining frequente, le metriche di valutazione e le 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 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.

Link correlati

Hadoop

big data analytics

Spark e Apache Hadoop and MapReduce a confronto

"Spark vs. Hadoop" è un termine frequentemente cercato sul Web, ma, come notato sopra, Spark è più un miglioramento di Hadoop e, più specificamente, del componente del trattamento dei dati nativo di Hadoop, MapReduce. Infatti, Spark è basato sul framework MapReduce e oggi la maggior parte delle distribuzioni Hadoop include Spark.

Come Spark, 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. Ma 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. E Spark è in grado di gestire dati provenienti da altre fonti di dati esterne all'applicazione Hadoop, incluso Apache Kafka.

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

Soluzioni correlate
IBM Analytics Engine

Analytics Engine è un servizio combinato Apache Spark e Apache Hadoop per la creazione di applicazioni di analytics.

Scopri IBM analytics engine
IBM Watson Studio

Crea affidabilità e scala l'AI in ambienti cloud. Consenti a data scientist, sviluppatori e analisti di creare, eseguire e gestire modelli AI e ottimizzare le decisioni.

Esplora IBM Watson Studio
Apache Spark su IBM Power

Affidati a un framework per l'elaborazione dei cluster open source ottimizzato per un trattamento dei dati estremamente rapido e su larga scala.

Esplora Apache Spark su IBM Power
IBM Spectrum Conductor

Implementa in modo sicuro IBM Spectrum Conductor e altri servizi per un ambiente aziendale multitenant, sia on-premise sia nel cloud.

Esplora IBM Spectrum Conductor
Risorse Esplora l'analisi dei big data con Apache Spark

Scopri come Spark aiuta a semplificare l'attività impegnativa e computazionale di elaborazione di elevati volumi di dati in tempo reale.

Hadoop e Spark a confronto: qual è la differenza?

Informazioni sulle rispettive architetture di Hadoop e Spark e sul confronto tra questi framework di big data in scenari diversi.

AI generativa e apprendimento automatico (ML) per le imprese

Scopri i principali vantaggi dell'AI generativa e come le organizzazioni possono incorporare l'AI generativa e il machine learning nel proprio business.

Visualizza i passaggi dettagliati che uno sviluppatore può seguire per completare una o più attività

Ogni tutorial fornisce istruzioni pratiche che aiutano gli sviluppatori a imparare a utilizzare le tecnologie nei loro progetti.

Migrazione di applicazioni legacy su Apache Spark

Scopri come trasformare i sistemi fondamentali con Apache Spark. Ottieni agilità, prestazioni e accesso a un ecosistema più ampio.

Fasi successive

Scala i workload AI per tutti i tuoi dati, ovunque, con IBM watsonx.data, uno storage dei dati adatto allo scopo costruito su un'architettura open data lakehouse.

Esplora watsonx.data Prenota una demo live