Che cos'è Apache Spark?

Apache Spark è un motore di analisi unificato per l'elaborazione di 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, Apache Mesos, Kubernetes, in modo indipendente, nel cloud e su diverse origini dati.

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 di più sull'utilizzo di Dataproc per eseguire i cluster  Apache Spark su Google Cloud in modo più semplice, integrato e conveniente. 

Panoramica su Apache Spark

L'ecosistema Spark comprende cinque componenti chiave:

1. Spark Core è un motore di elaborazione dati distribuito e per uso generico. 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. Spark Core è la base di un intero progetto, che fornisce l'invio, la programmazione e le funzionalità I/O di base di attività distribuite.

2. Spark SQL è il modulo Spark per lavorare con dati strutturati che supporta un modo comune per accedere a una varietà di origini dati. 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. Una modalità server fornisce la connettività standard attraverso la connettività di database Java o la connettività di database aperti.

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. 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 flusso di lavoro e altre utilità, comprese le trasformazioni delle funzionalità, la costruzione di pipeline ML, la valutazione dei modelli, l'algebra lineare distribuita e le statistiche. 

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. Oltre a essere un'API altamente flessibile, GraphX fornisce diversi algoritmi grafici. In termini di prestazioni, compete con i sistemi di grafici più rapidi pur mantenendo la flessibilità, la tolleranza di errore e la facilità d'uso di Spark.

Quali sono i vantaggi di Apache Spark?

Velocità

Puoi eseguire i carichi di lavoro 100 volte più rapidamente di Hadoop MapReduce. Spark raggiunge elevate prestazioni sia per i dati in batch che per quelli in flusso utilizzando uno scheduler per grafico aciclico diretto (DAG) all'avanguardia, un ottimizzatore di query e un motore di esecuzione fisica.

Facilità di utilizzo

Spark mette a disposizione più di 80 operatori di alto livello che facilitano la creazione di app parallele. Puoi utilizzarlo in modo interattivo dalle shell Scala, Python, R e SQL per scrivere rapidamente le applicazioni.

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 è supportato da community globali unite per l'introduzione di nuovi concetti e funzionalità in modo più rapido ed efficace rispetto ai team interni che lavorano su soluzioni proprietarie. Il potere collettivo di una community open source genera un numero maggiore di idee, offre uno sviluppo più rapido e assicura la risoluzione dei problemi, contribuendo ad accelerare il time to market. 

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.

In che modo le aziende utilizzano Spark?

Molte aziende utilizzano Spark per semplificare le attività di elaborazione 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.

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.

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.

Dataproc è un servizio cloud completamente gestito, veloce e facile da utilizzare per l'esecuzione dei cluster Apache Spark e Apache Hadoop in modo più semplice, integrato ed economico. Si integra perfettamente con altri servizi Google Cloud che soddisfano esigenze critiche di sicurezza, governance e supporto, consentendo di ottenere una piattaforma completa e avanzata per l'elaborazione dei dati, l'analisi e il machine learning.

Gli strumenti di analisi dei big data di Google Cloud, come BigQuery, AI Platform Notebooks e Dataflow, consentono di creare applicazioni legate al contesto, sviluppare nuove soluzioni di analisi e trasformare i dati in insight strategici.