Apache Spark
Apache Spark è un velocissimo motore di elaborazione dati open source per applicazioni AI e di machine learning, supportato dalla più grande community open source nel campo dei Big Data
immagine astratta nera e blu
Cos'è Apache Spark?

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

Apache Spark (Spark) è un motore di elaborazione dati open source per grandi dataset. È progettato per offrire la velocità di elaborazione, la scalabilità e la programmabilità richieste per i Big Data - specificamente per dati in streaming, dati grafici, machine learning e applicazioni AI.

Il motore di analytics di Spark elabora i dati da 10 a 100 volte più velocemente rispetto alle alternative. Applica la scalabilità distribuendo il lavoro di elaborazione su grandi cluster di computer, con parallelismo integrato e tolleranza agli errori. Inoltre, include le API per i linguaggi di programmazione ampiamente utilizzati da analisti di dati e data scientist, compresi Scala, Java, Python e R.

Spark viene spesso paragonato ad Apache Hadoop e, in particolare, a MapReduce, il componente di elaborazione dati nativo di Hadoop. La principale differenza tra Spark e MapReduce è che Spark elabora e mantiene i dati in memoria per i passaggi successivi - senza scrittura o lettura da disco - che si traduce in velocità di elaborazione notevolmente più elevate. (Altrove in questo articolo, scoprirai di più su come Spark si confronta a Hadoop e lo integra).

Spark è stato sviluppato nel 2009 presso la UC Berkeley. Oggi, è gestito da Apache Software Foundation e vanta la più grande community open source nel campo dei Big Data, con oltre 1.000 contributori. È anche incluso come componente principale di diverse offerte commerciali di Big Data.

Creare il miglior data lake significa scegliere il giusto storage a oggetti - un settore in cui Apache Spark può essere di grande aiuto.

Leggi l'eBook (909 KB)

Come funziona Apache Spark

Apache Spark è dotato di un'architettura gerarchica master/slave. Spark Driver è il nodo master che controlla il gestore cluster, che gestisce i nodi di lavoro (slave) e fornisce i risultati dei dati al client dell'applicazione.

In base al codice applicativo, Spark Driver genera lo SparkContext, che lavora con il gestore cluster - Standalone Cluster Manager di Spark o altri gestori cluster come Hadoop YARN, Kubernetes o Mesos - per distribuire e monitorare l'esecuzione nei nodi. Inoltre, crea gli RDD (Resilient Distributed Dataset, dataset distribuiti resilienti), che sono la chiave per la grande velocità di elaborazione di Spark.

RDD (Resilient Distributed Dataset)

 

Gli RDD (Resilient Distributed Dataset) sono raccolte di elementi con tolleranza agli errori che possono essere distribuiti tra più nodi in un cluster e su cui è possibile lavorare 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 di SparkContext in un RDD per l'elaborazione. Una volta caricati i dati in un RDD, Spark esegue trasformazioni e azioni sugli RDD in memoria - la chiave della velocità di Spark. Spark memorizza anche i dati in memoria a meno che il sistema non esaurisca la memoria stessa o l'utente decida di scrivere i dati su disco per la persistenza.

Ciascun dataset in un RDD è suddiviso in partizioni logiche, che possono essere calcolate su nodi differenti del cluster. Inoltre, gli utenti possono eseguire due tipi di operazioni RDD:  trasformazioni e azioniLe trasformazioni sono operazioni applicate per creare un nuovo RDDLe azioni sono utilizzate per indicare ad Apache Spark di applicare il calcolo e restituire il risultato al driver.

Spark supporta diverse azioni e trasformazioni sugli RDD. La distribuzione viene eseguita da Spark, quindi gli utenti non devono preoccuparsi di calcolare la distribuzione corretta.

DAG (Directed Acyclic Graph)

 

Rispetto al processo di esecuzione a due fasi in MapReduce, Spark crea un DAG (Directed Acyclic Graph) per pianificare le attività e l'orchestrazione dei nodi di lavoro sul cluster. Mentre Spark agisce e trasforma i dati nei processi di esecuzione delle attività, lo scheduler DAG facilita l'efficienza orchestrando i nodi di lavoro nel cluster. Questa traccia delle attività rende possibile la tolleranza agli errori, in quanto riapplica le operazioni registrate ai dati da uno stato precedente.

DataFrame e Dataset

 

Oltre agli RDD, Spark gestisce altri due tipi di dati: DataFrame e Dataset.

I DataFrame sono le API (application programming interface) strutturate più comuni e rappresentano una tabella di dati con righe e colonne. Sebbene RDD sia stato un componente fondamentale di Spark, ora è in modalità manutenzione. A causa della popolarità della MLlib (Machine Learning Library) di Spark, i DataFrame hanno assunto il ruolo di API primaria per MLlib. Questo è importante da notare quando si utilizza l'API MLlib, poiché i DataFrame forniscono uniformità tra i diversi linguaggi, come Scala, Java, Python ed R.

I Dataset sono un'estensione dei DataFrame che forniscono un'interfaccia di programmazione orientata agli oggetti indipendente dai tipi. I dataset sono, per impostazione predefinita, una raccolta di oggetti JVM fortemente tipizzati, a differenza dei DataFrame.

Spark SQL consente di eseguire query sui dati da DataFrames e datastore SQL, come Apache Hive. Le query Spark  SQL restituiscono un DataFrame o un Dataset quando vengono eseguite all'interno di un altro linguaggio.

Spark Core

 

Spark Core è la base per tutta l'elaborazione dei dati parallela e gestisce la pianificazione, l'ottimizzazione, gli RDD e l'astrazione dei dati. Spark Core fornisce la base funzionale per le librerie Spark, Spark SQL, Spark Streaming, la libreria di machine learning MLlib e l'elaborazione di dati grafici GraphX. Spark Core e il gestore cluster distribuiscono i dati sul cluster Spark e ne eseguono l'astrazione. La distribuzione e l'astrazione rendono veloce e semplice la gestione dei Big Data.

API Spark

 

Spark comprende una gamma di API (application programming interface) che consentono di offrire la potenza di Spark al più alto numero di utenti. Spark SQL consente l'interazione con i dati RDD in modo relazionale. Spark dispone anche di un'API ben documentata per Scala, Java, Python ed R. Ogni API di linguaggio in Spark presenta sfumature specifiche nel modo di gestire i dati. RDD, DataFrame e Dataset sono disponibili in ogni API di linguaggio. Con le API per una tale varietà di linguaggi, Spark rende l'elaborazione dei Big  Data accessibile a gruppi di persone più eterogenei con esperienza nello sviluppo, nella data science e nelle statistiche.

Prodotti in evidenza

Analytics Engine

Apache Spark e machine learning

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

Apache Spark  MLlib

 

Una delle funzionalità critiche di Apache Spark è il machine learning disponibile in Spark MLlib. Apache Spark  MLlib fornisce una soluzione pronta per l'uso per eseguire classificazioni e regressioni, filtri collaborativi, clustering, algebra lineare distribuita, alberi decisionali, random forest, alberi con gradient boosting, mining di modelli frequenti, metriche di valutazione e statistiche. Le funzionalità di MLlib, combinate con i diversi tipi di dati che possono essere gestiti da Spark, rendono Apache Spark uno strumento indispensabile per i Big Data.

Spark GraphX

 

Oltre ad avere funzionalità API, Spark dispone di Spark Graphx, una nuova aggiunta a SPARK progettata per risolvere problemi grafici. GraphX è un'astrazione del grafico che estende gli RDD per i grafici e il calcolo parallelo dei grafici. Spark Graphx si integra con i database grafici che contengono informazioni sull'interconnettività o reti di informazioni sulla connessione, come quelle di un social network.

Spark Streaming

 

Spark Streaming è un'estensione dell'API Spark principale che consente l'elaborazione scalabile tollerante agli errori dei flussi di dati live. Mentre Spark Streaming elabora i dati, può fornire i dati a file system, database e dashboard dinamici per l'analytics del flusso in tempo reale con gli algoritmi di machine learning e di elaborazione dei grafici di Spark. Basato sul motore Spark SQL, Spark Streaming consente anche l'elaborazione batch incrementale, che si traduce in un'elaborazione più rapida dei dati in streaming.

Link correlati

Hadoop

Analytics dei Big Data

Confronto tra Spark e Apache Hadoop e MapReduce

"Spark vs. Hadoop", ossia "confronto tra Spark e Hadoop", è un termine ricercato spesso su web, ma, come notato in precedenza, Spark è più di un miglioramento di Hadoop e, più nello specifico, al componente di elaborazione dati nativo di Hadoop, MapReduce. Infatti, Spark è basato sul framework MapReduce e, attualmente, la maggior parte delle distribuzioni Hadoop include Spark.

Come Spark, MapReduce consente ai programmatori di scrivere applicazioni che elaborano più velocemente enormi dataset elaborando parti del dataset 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 i calcoli in memoria, il che è molto più veloce. Come risultato, Spark può elaborare dati 100 volte più velocemente di MapReduce. 

Le API per più linguaggi integrate di Spark lo rendono più pratico e accessibile per gli sviluppatori rispetto a MapReduce, che viene considerato 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 del lavoro di Hadoop. Come notato in precedenza, Spark aggiunge le funzionalità di MLlib, GraphX e SparkSQL. E Spark può gestire i dati da altre origini dati esterne all'applicazione Hadoop, tra cui Apache Kafka.

Altrimenti, Spark è compatibile e complementare ad Hadoop. Può elaborare dati Hadoop, compresi i dati provenienti da HDFS (Hadoop Distributed File System), HBase (un database non relazione in esecuzione su HDFS), Apache Cassandra (un NoSQL alternativo a HDFS) e Hive (un data warehouse basato su Hadoop).

Soluzioni correlate
AIOps

Scopri di più su AIOps, un'area che si avvale di analytics, AI e altre tecnologie per rendere le operazioni IT più efficienti ed efficaci.

Esplora AIOps
IBM Spectrum Conductor

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

Esplora IBM Spectrum Conductor
IBM Analytics Engine

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

Esplora IBM Analytics Engine
Passa alla fase successiva

Spark è un potente strumento da aggiungere a una soluzione di dati aziendali per facilitare l'analisi dei Big Data. Inoltre, si integra bene con le soluzioni di Big Data IBM esistenti. IBM Spectrum Conductor è una piattaforma multi-tenant per l'implementazione e la gestione di framework di applicazioni Apache Spark su un cluster di risorse condiviso comune. Spectrum Conductor offre gestione del carico di lavoro, monitoraggio, avvisi, creazione di report e diagnostica e può eseguire contemporaneamente più versioni correnti e differenti di Spark e altri framework. Gli utenti possono facilmente implementare e gestire Apache Spark con una distribuzione Spark integrata.

Esplora oggi stesso IBM Spectrum Conductor