Apache Spark
cloud leadspace
Cosa è Apache Spark?

Apache Spark è un velocissimo motore di elaborazione dati open source per applicazioni AI e di machine learning, supportato dalla più grande comunità open source in 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, in particolare per dati in streaming, dati grafici, machine learning e applicazioni AI.

Il motore di analisi 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 degli errori. Inoltre, include le API per i linguaggi di programmazione popolari tra gli analisti di dati e i 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 e integra Hadoop.)

Spark è stato sviluppato nel 2009 presso la UC Berkeley. Oggi, è gestito da Apache Software Foundation e vanta la più grande comunità open source in 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 object storage, un settore in cui Apache Spark può essere di grande aiuto.

Leggi l'eBook (15,6 MB)


Funzionamento di 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 worker (slave) e invia i risultati dei dati al client dell'applicazione.

In al codice dell'applicazione, 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 sui nodi. Inoltre, crea gli RDD (Resilient Distributed Datasets, dataset distribuiti resilienti), che sono la chiave per la grande velocità di elaborazione di Spark.

RDD (Resilient Distributed Dataset)

 

Gli RDD (Resilient Distribuited Dataset) sono raccolte di elementi fault-tolerant 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 parallelize 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 meno che il sistema non esaurisca la memoria stessa o l'utente non 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:  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 worker sul cluster. Mentre Spark agisce e trasforma i dati nei processi di esecuzione delle attività, lo scheduler DAG facilita l'efficienza orchestrando i nodi worker sul cluster. Questa traccia delle attività rende possibile la tolleranza degli 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 principale 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 e R.

I Dataset sono un'estensione dei DataFrame che forniscono un'interfaccia di programmazione orientata agli oggetti indipendente dal tipo. 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 astraggono. La distribuzione e l'astrazione rendono veloce e semplice la gestione dei Big Data.

API Spark

 

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

Prodotti in evidenza

Motore di analytics


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 frequente di modelli, 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 in streaming

 

Spark Streaming è un'estensione dell'API Spark principale che consente l'elaborazione scalabile fault-tolerant dei flussi di dati dinamici. Mentre Spark Streaming elabora i dati, può fornire i dati a file system, database e dashboard dinamici per l'analisi 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


Spark e Apache Hadoop e MapReduce

"Spark vs. 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, 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 a 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).


Apache Spark e IBM Cloud

Spark è un potente strumento da aggiungere a una soluzione dati enterprise per aiutare con l'analisi di Big  Data o AIOps. Inoltre si integra correttamente con le soluzioni IBM Big Data 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 Sparl e altri framework. Gli utenti possono facilmente implementare e gestire Apache Spark con una distribuzione Spark integrata.

IBM Watson può essere aggiunto alla combinazione per abilitare la creazione di ambienti di AI, machine learning e deep learning. IBM Watson fornisce un flusso di lavoro, servizi e supporto end-to-end per garantire che i data scientist possano concentrarsi sull'ottimizzazione e sulla formazione delle funzionalità di un'applicazione Spark.

IBM Analytics Engine consente di creare un'unica soluzione di analisi avanzata con Apache Spark e Hadoop. IBM Analytics Engine consente agli utenti di archiviare i dati in un livello di object storage, come IBM Cloud Object Storage, servendo i cluster di note di calcolo solo quando necessario, per aiutare con flessibilità, scalabilità e gestibilità delle piattaforme di analytics di Big Data.

Per iniziare, registrati per un IBMid e crea il tuo account IBM Cloud.


Soluzioni correlate

AIOps

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


IBM Spectrum Conductor

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


Architettura software multi-tenant

Scopri di più sull'architettura software multi-tenant, che consente a più utenti di condividere un'unica istanza di un'applicazione software e le relative risorse.


AI per le aziende

Il portfolio di IBM di strumenti, applicazioni e soluzioni pronti per il business, progettato per ridurre i costi e le difficoltà dell'adozione dell'AI, ottimizzando al tempo stesso i risultati e un uso responsabile dell'AI.


IBM Analytics Engine

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


Cloud Object Storage

Storage cloud flessibile, conveniente e scalabile per i dati non strutturati.