Che cos'è Apache Spark?

Apache Spark è un motore di analisi unificato per il trattamento dati su vasta scala con moduli integrati per SQL, flussi di dati, machine learning ed elaborazione di grafici. Spark può essere eseguito su Apache Hadoop, Kubernetes, in modo indipendente, nel cloud e su diverse origini dati. Fornisce API complete in Java, Scala, Python ed R, rendendolo accessibile a un'ampia gamma di sviluppatori e data scientist. L'API Python, PySpark, si integra bene anche con le librerie più note come Pandas per la manipolazione dei dati. Su Google Cloud, Apache Spark raggiunge un livello superiore con opzioni serverless, miglioramenti rivoluzionari delle prestazioni come Lightning Engine (in anteprima) e integrazioni approfondite in una piattaforma unificata di dati e AI.

Una domanda ricorrente è: quando si usa Apache Spark e quando invece Apache Hadoop? Entrambi figurano tra i sistemi distribuiti più importanti oggi sul mercato. Sono entrambi progetti Apache simili di primo livello che spesso vengono utilizzati insieme. Hadoop è usato principalmente per operazioni a uso intensivo di dischi con il paradigma MapReduce. Spark è un'architettura di elaborazione in memoria più flessibile e spesso più costosa. La comprensione delle diverse funzionalità di ciascuno permetterà di capire quale implementare nelle diverse situazioni.

Scopri come Google Cloud ti consente di eseguire i workload Apache Spark in modi più semplici, integrati e convenienti. Puoi sfruttare Google Cloud Serverless per Apache Spark per lo sviluppo a zero operazioni o utilizzare Dataproc per i cluster Spark gestiti.

Panoramica su Apache Spark

L'ecosistema Spark comprende cinque componenti chiave:

  1. Spark Core è un motore di trattamento dati distribuito e per uso generico. È il motore di esecuzione di base, che gestisce l'invio, la programmazione e le funzionalità I/O di base di attività distribuite. Spark Core ha introdotto il concetto di resilient distributed dataset (RDD), ovvero raccolte distribuite e immutabili di oggetti che possono essere elaborati in parallelo con tolleranza di errore. Comprende librerie per SQL, l'elaborazione dei flussi, il machine learning e il calcolo dei grafici: tutti elementi che possono essere utilizzati insieme in un'applicazione.
  2. Spark SQL è il modulo Spark per lavorare con dati strutturati e ha introdotto i DataFrame, che forniscono un'API più ottimizzata e più facile da usare per gli sviluppatori rispetto agli RDD per la manipolazione di dati strutturati. Consente di eseguire query di dati strutturati all'interno dei programmi Spark, utilizzando SQL o un'API DataFrame familiare. Spark SQL supporta la sintassi HiveQL e consente l'accesso ai warehouse Apache Hive esistenti. Google Cloud accelera ulteriormente le prestazioni dei job Spark, in particolare per SQL e operazioni DataFrame, con innovazioni come Lightning Engine, offrendo miglioramenti significativi della velocità per le query e le attività di elaborazione dei dati quando si esegue Spark su Google Cloud.
  3. Spark Streaming semplifica la creazione di soluzioni per flussi di dati scalabili e a tolleranza di errore. Utilizza l'API integrata nel linguaggio di Spark per l'elaborazione dei flussi, in modo da poter scrivere job in flussi allo stesso modo dei job in batch utilizzando i DStream o la più recente API Structured Streaming basata su DataFrame. Spark Streaming supporta Java, Scala e Python e dispone di una semantica "exactly-once" di tipo stateful.
  4. MLlib è la libreria Spark scalabile per il machine learning con strumenti che rendono il ML pratico scalabile e facile da usare. MLlib contiene molti algoritmi di apprendimento comuni, come la classificazione, la regressione, i suggerimenti e il clustering. Contiene inoltre il workflow e altre utilità, comprese le trasformazioni delle funzionalità, la costruzione di pipeline ML, la valutazione dei modelli, l'algebra lineare distribuita e le statistiche. Se abbinati a Vertex AI di Google Cloud, i workflow MLlib di Spark possono essere integrati perfettamente nelle pipeline MLOps e lo sviluppo può essere migliorato con Gemini per la programmazione e la risoluzione dei problemi.
  5. GraphX è l'API Spark per i grafici e il calcolo grafico parallelo. È flessibile e funziona perfettamente sia con i grafici che con le raccolte: unifica estrazione, trasformazione, caricamento; analisi esplorativa; e calcolo iterativo dei grafici all'interno di un unico sistema.

Google Cloud fornisce un ambiente ottimizzato in questi componenti. Ad esempio, Lightning Engine migliora le prestazioni di Spark e DataFrame, mentre Google Cloud Serverless per Apache Spark semplifica il deployment e la gestione. Inoltre, Gemini aumenta la produttività degli sviluppatori in ambienti basati su notebook come BigQuery Studio e Vertex AI Workbench.

Come funziona Apache Spark

La potenza di Apache Spark deriva da alcuni principi architettonici fondamentali:

  • Elaborazione in memoria: Spark carica i dati in memoria, velocizzando notevolmente algoritmi iterativi e query interattive rispetto ai sistemi basati su disco.
  • Esecuzione distribuita: opera su un cluster di macchine. Un programma del driver coordina gli esecutori (processi worker) che eseguono le attività in parallelo su partizioni di dati diverse.
  • RDD e DataFrame: i resilient distributed dataset (RDD) sono l'astrazione di dati a tolleranza di errore di base. I DataFrame, creati su RDD, forniscono un'API più ricca e consapevole dello schema per i dati strutturati, consentendo ottimizzazioni tramite lo strumento di ottimizzazione Catalyst.
  • Valutazione lazy e DAG: Spark crea un grafo diretto aciclico (DAG) di operazioni. Le trasformazioni sono "lazy" (non calcolate immediatamente), il che consente a Spark di ottimizzare l'intero workflow prima che un'"azione" ne attivi l'esecuzione.

Quali sono i vantaggi di Apache Spark?

Velocità

Lo scheduler DAG e l'elaborazione in memoria di Spark consentono workload più rapidi rispetto a Hadoop MapReduce, soprattutto per le attività ripetitive. Google Cloud aumenta questa velocità con un'infrastruttura ottimizzata e Lightning Engine.

Facilità di utilizzo

Gli operatori di alto livello di Spark semplificano la creazione di app parallele. L'uso interattivo con Scala, Python, R e SQL consente uno sviluppo rapido. Google Cloud offre opzioni serverless e notebook integrati con Gemini per una maggiore facilità d'uso.



Scalabilità

Spark offre scalabilità orizzontale ed elabora grandi quantità di dati distribuendo il lavoro tra i nodi del cluster. Google Cloud semplifica la scalabilità con la scalabilità automatica serverless e i cluster Dataproc flessibili.

Generalità

Spark supporta uno stack di librerie, tra cui SQL e DataFrames, MLlib per il machine learning, GraphX e Spark Streaming. È possibile combinare perfettamente queste librerie nella stessa applicazione.

Innovazione del framework open source

Spark sfrutta la potenza delle community open source per l'innovazione rapida e la risoluzione dei problemi, con conseguente accelerazione dello sviluppo e del time to market. Google Cloud adotta questo spirito aperto, offrendo Apache Spark standard e migliorandone al contempo le funzionalità.

Perché scegliere Spark anziché un motore solo SQL?

Apache Spark è un veloce motore di calcolo per cluster per uso generico di cui è possibile eseguire il deployment in un cluster Hadoop o in modalità autonoma. Con Spark, i programmatori possono scrivere rapidamente applicazioni in Java, Scala, Python, R e SQL, diventando così accessibile a sviluppatori, data scientist e professionisti esperti di statistica. Con Spark SQL, gli utenti possono connettersi a qualsiasi origine dati e presentarla come tabella da utilizzare per i client SQL. Inoltre, gli algoritmi interattivi di machine learning sono facilmente implementabili in Spark.

Con un motore solo SQL come Apache Impala, Apache Hive o Apache Drill, gli utenti possono utilizzare linguaggi SQL o simili a SQL per eseguire query sui dati archiviati in più database. Ciò significa che i framework sono di dimensioni inferiori rispetto a Spark. Tuttavia, su Google Cloud non devi fare una scelta rigida: BigQuery offre potenti funzionalità SQL, Google Cloud Serverless per Apache Spark e Dataproc per un servizio gestito Spark e Hadoop ti consentono di utilizzare la versatilità di Spark, spesso sugli stessi dati attraverso BigLake Metastore e formati aperti.

In che modo le aziende utilizzano Spark?

Molte aziende utilizzano Spark per semplificare le attività di trattamento e analisi di elevati volumi di dati in tempo reale o di dati archiviati, strutturati non strutturati, che sono in genere complesse e dispendiose in termini di calcolo. Spark consente inoltre agli utenti di integrare senza problemi funzionalità complesse pertinenti come gli algoritmi di machine learning e grafici. Le applicazioni più comuni includono:

  • ETL/ELT su larga scala
  • Elaborazione dei dati in tempo reale
  • Machine learning
  • Esplorazione interattiva dei dati
  • Analisi dei grafici

Data engineer

I data engineer utilizzano Spark per la codifica e la realizzazione di job di elaborazione dati, con la possibilità di programmare in un set di linguaggi ampliato. Su Google Cloud, i data engineer possono sfruttare Google Cloud Serverless per Apache Spark per pipeline ETL/ELT a zero operazioni o utilizzare Dataproc per il controllo dei cluster gestiti, il tutto integrato con servizi come BigQuery e il Catalogo universale Dataplex per la governance.

Data scientist

I data scientist possono avere un'esperienza più completa con l'analisi e il ML usando Spark con GPU. La possibilità di elaborare più rapidamente grandi volumi di dati con un linguaggio familiare può contribuire ad accelerare l'innovazione. Google Cloud offre un solido supporto GPU per Spark e un'integrazione perfetta con Vertex AI, consentendo ai data scientist di creare ed eseguire il deployment dei modelli più rapidamente. Possono sfruttare vari ambienti basati su notebook come BigQuery Studio, Vertex AI Workbench o connettere i loro IDE preferiti come Jupyter e VS Code. Questa esperienza di sviluppo flessibile, combinata con Gemini, aiuta ad accelerare il flusso di lavoro dall'esplorazione iniziale al deployment in produzione.

Esecuzione di Apache Spark su Google Cloud

Ottimizza la tua esperienza Spark con Google Cloud

  • Google Cloud Serverless per Apache Spark: per un'esperienza davvero a zero operazioni, esegui i tuoi job Spark senza gestire i cluster. Sfrutta l'avvio quasi istantaneo, la scalabilità automatica, l'aumento delle prestazioni di Lightning Engine e Gemini. Ideale per ETL, data science e analisi interattive, soprattutto se integrato con BigQuery
  • Dataproc: quando hai bisogno di un maggiore controllo sull'ambiente del cluster o di componenti specifici dell'ecosistema Hadoop insieme a Spark, Dataproc fornisce un servizio completamente gestito. Dataproc semplifica la creazione e la gestione dei cluster e trae vantaggio anche dai miglioramenti di Lightning Engine per le prestazioni di Spark. 
  • Un ecosistema unificato e aperto: l'esecuzione di Spark su Google Cloud significa integrazione perfetta con servizi come BigQuery per l'analisi unificata, Vertex AI per MLOps, BigLake Metastore per la condivisione aperta dei metadati e il Catalogo universale Dataplex per una governance dei dati completa, il tutto a supporto di un'architettura lakehouse aperta.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud