Spark
Cos'è Apache Spark?
Apache Spark è un framework open source che semplifica lo sviluppo e l'efficienza dei lavori di analisi dati. Supporta un'ampia gamma di API e opzioni linguistiche con oltre 80 operatori di trasformazione e azione dei dati che riducono notevolmente la complessità del cluster computing.
Chi ha realizzato Spark, e chi lo gestisce?
Una serie di sviluppatori di oltre 300 aziende ha creato Spark e una vasta community di utenti contribuisce al suo continuo perfezionamento. È utilizzato da organizzazioni in una vasta gamma di settori e la sua community di sviluppatori è la più grande nel settore dei Big Data.
Perché Spark è così famoso?
Con velocità segnalate 100 volte superiori rispetto a motori di analisi simili, Spark può accedere a origini dati variabili ed essere eseguito su diverse piattaforme, tra cui Hadoop, Apache Mesos, Kubernetes, standalone o nel cloud. Indipendentemente dal tipo di elaborazione dei dati, in batch o in streaming, le prestazioni saranno ai massimi livelli per lo scheduler all’avanguardia Spark DAG, l’ottimizzatore di query e un motore di esecuzione fisico.
Perché Spark è così potente?
La potenza distintiva di Spark deriva dalla sua elaborazione in-memory. Utilizza un pool distribuito di nodi a uso intensivo di memoria e una codifica dei dati compatta insieme a un pianificatore di query ottimizzato per ridurre al minimo i tempi di esecuzione e la richiesta di memoria.
Poiché Spark esegue calcoli in-memory, può elaborare i dati con velocità fino a 100 volte superiori rispetto ai framework con elaborazione su disco. È il tool preferito per elaborare i grandi volumi di dati necessari per l'analisi e i modelli di addestramento per il machine learning e l'IA.
Inoltre, esegue uno stack di librerie native che forniscono sia machine learning avanzato, sia strutture di dati simili a SQL, consentendo di ottenere prestazioni eccezionali con set di dati di grandi dimensioni. E con oltre 80 operatori di alto livello, Spark semplifica la creazione di applicazioni parallele.
Qual è l'origine di Spark?
Nel 2009, presso l'Università della California, l'AMPLab di Berkeley ha avviato questo progetto partendo da una serie di documenti di ricerca che in breve tempo hanno dato vita a Spark. Nel 2010, è stata avviata una collaborazione più ampia su Spark, il progetto open source di AMPLab. Nel 2013, la community di Spark è cresciuta così tanto da essere trasferita sotto il controllo della Apache Software Foundation.
Da allora, più di 1.200 sviluppatori di centinaia di organizzazioni hanno contribuito alla continua evoluzione di Spark, trasformandolo nella potente interfaccia di oggi. Infatti, secondo un sondaggio del 2016, oltre 1.000 organizzazioni utilizzano Spark nella produzione.
In che modo Spark e Hadoop differiscono?
Per certi aspetti, Spark e Hadoop hanno qualche somiglianza. Entrambi sono framework open source per l'elaborazione di dati analitici; entrambi fanno parte della Apache Software Foundation; entrambi contengono librerie di machine learning; ed entrambi possono essere programmati in diversi linguaggi, tra cui Java, Python, R o Scala.
Tuttavia, Spark è stato compilato per estendere il numero di elaborazioni possibili con Hadoop, quindi il vero confronto è semplicemente il modo in cui Spark migliora il componente di elaborazione dei dati nativo di Hadoop, noto come MapReduce.
Ad esempio, Hadoop elabora i dati solo in batch, mentre Spark li elabora in batch e in streaming in tempo reale. Inoltre, sebbene entrambi dispongano di librerie di machine learning, solo Spark esegue funzioni di elaborazione utilizzando i dati in-memory, per questo è molto più veloce di Hadoop. Infine, la più grande differenza tra Spark e Hadoop è l’efficienza. Hadoop utilizza un processo di esecuzione in due fasi, mentre Spark crea DAG (Directed Acyclic Graphs) per pianificare le attività e gestire i nodi di lavoro in modo tale che l'elaborazione possa essere eseguita contemporaneamente e quindi in modo più efficiente.
Vantaggi di Apache Spark
Spark presenta molti vantaggi rispetto ad altri framework. Fornisce analisi avanzate in un formato di facile utilizzo con la flessibilità e la scalabilità necessarie per accelerare la velocità e l'efficienza di elaborazione. Alcuni dei vantaggi includono:
Velocità
Siccome i dati sono organizzati per scalare l'elaborazione in-memory tra i nodi del cluster distribuiti e poiché Spark può eseguire l'elaborazione senza necessità di riscrivere i dati nello storage su disco, può garantire velocità fino a 100 volte superiori rispetto a MapReduce sui processi batch durante l'elaborazione in-memory e dieci volte superiori su disco.
Multilingue
Compilato in Scala, Spark include anche connettori API per l'utilizzo di Java e Python, oltre a un pacchetto di programmazione R che consente agli utenti di elaborare i massicci set di dati richiesti dai data scientist.
Facilità d'uso
Poiché Spark è in grado di distribuire i dati tra nodi e cluster in modo più efficiente, può eseguire l'elaborazione dei dati parallela e l’astrazione. E la sua capacità di unire più tipi di database ed elaborare i dati provenienti da diversi tipi di data store ne consente l'utilizzo in più casi d'uso.
Potenza
Spark può gestire enormi quantitativi di dati, fino a diversi petabyte secondo i sostenitori. Consente inoltre agli utenti di eseguire analisi esplorative su questi dati su scala petabyte senza dover eseguire il downsampling.
Analisi avanzata
Spark viene fornito con diverse librerie di codice per l'esecuzione di applicazioni di analisi dati. Ad esempio, MLlib dispone di codice di machine learning per operazioni statistiche avanzate e la libreria Spark Streaming consente agli utenti di analizzare i dati in tempo reale.
Accesso semplificato ai Big Data
Spark separa lo storage e l'elaborazione, consentendo ai clienti di scalare ognuno di questi per soddisfare le esigenze di prestazioni delle applicazioni di analisi. Inoltre, esegue processi batch senza problemi per spostare i dati in un data lake o in un data warehouse per analisi avanzate.
Qualità dinamiche
Spark include tool che consentono di scalare in modo dinamicoi nodi per adattarsi ai carichi di lavoro in evoluzione. E alla fine di un ciclo di elaborazione, la riallocazione automatica dei nodi in Spark risulta semplificata.
Domanda di sviluppatori Spark
Poiché le aziende richiedono un'elaborazione dell'analisi sempre più rapida per rimanere competitive, la domanda di sviluppatori Spark è in aumento. E con il machine learning on demand sempre più richiesto sul mercato, è essenziale poter disporre di acceleratori di deep learning e tecnologie IA.
Cos'è il framework Spark?
Quando gli sviluppatori che utilizzano Java o Kotlin desiderano sviluppare applicazioni web più espressive con boilerplate limitati, spesso decidono di utilizzare il framework Spark. Con una sintassi dichiarativa ed espressiva, Spark è progettato per un processo di sviluppo rapido più produttivo che migliora la codifica.
Come micro-framework, Spark consente agli sviluppatori di sfruttare appieno Java Virtual Machine (JVM) con un processo meno ingombrante. Spark, inoltre, vanta una sintassi del codice concisa, quindi la codifica risulta molto più snella rispetto ad altri framework web Java.
Inoltre, il linguaggio del framework Spark è progettato per l’esecuzione lato server con tipi già integrati. Questo aiuta gli sviluppatori NodeJS che utilizzano linguaggi tipizzati staticamente che compilano in JavaScript, come TypeScript che sono sempre più diffusi nello sviluppo web lato server.
Spark opera con diverse strutture di dati che lo rendono un framework più potente rispetto ad altre alternative. Tra questi RDD, DataFrames, Dataset, Tungsten e GraphFrames, descritti qui di seguito:
- RDD (Resilient Distributed Dataset): distribuiscono i dati tra i cluster, consentendo una serie di attività di elaborazione simultanee. In caso di guasto di qualsiasi nodo in un cluster, le attività possono essere rielaborate in modo che le azioni possano continuare senza alcun intervento.
- DataFrames: organizzano i dati in colonne per le operazioni SQL. Non forniscono la sicurezza del tipo di dati, anche se è garantita dai set di dati stessi.
- Datasets: organizzano i dati anche in colonne per le query SQL. Forniscono misure di sicurezza del tipo di dati.
- Tungsten: la struttura dei dati di Tungsten è un'aggiunta più recente introdotta per migliorare le prestazioni di Spark a livelli di prestazioni bare metal. Punta alla gestione della memoria, all'elaborazione binaria, alla generazione di codice e allo sviluppo di algoritmi per un'elaborazione più rapida.
- GraphFrames: la struttura dati di GraphFrames, consente di eseguire query grafiche in-memory per aumentare al massimo le prestazioni.
Abbinando queste cinque strutture, Spark può preparare i dati e fornire analisi e ricerche descrittive come altri framework. Nel contempo, fornisce anche analisi predittive, machine learning ed elaborazione di grafici che consentono alle aziende di prendere decisioni più oculate in tempi più rapidi.
Cosa offre HPE per aumentare al massimo le prestazioni di Spark?
Le aziende che perseguono una strategia data-first possono utilizzare un numero qualsiasi di soluzioni HPE per liberare tutto il valore dei propri dati in distribuzioni on-premise, multi-cloud o all'edge. Promuovendo la trasformazione digitale, HPE offre servizi rivoluzionari che integrano Spark nei notebook per accelerare i carichi di lavoro di machine learning e intelligenza artificiale, riducendo il tempo necessario per ottenere informazioni che aggiungono valore al business.
Ad esempio, HPE Ezmeral è una piattaforma elastica che scala i carichi di lavoro Apache Spark con un piano di controllo multi-tenant, accelerazione GPU, isolamento e controllo completi, nonché tool di analisi dati predefiniti. HPE Ezmeral è il primo data lakehouse che offre funzionalità cloud native all'analisi, al machine learning e all'IA on-premise. Test recenti dimostrano che le GPU HPE Ezmeral, NVIDIA RAPIDS e Tensor Core A100 accelerano di 29 volte i carichi di lavoro IA ed ETL di Spark. [i]
Inoltre, HPE ha recentemente introdotto HPE Ezmeral Unified Analytics, la prima piattaforma data lakehouse cloud del settore che integra Spark come parte del suo apprezzato stack insieme ad altri tool open source migliori della categoria. HPE Ezmeral Unified Analytics è disponibile anche su HPE GreenLake.
[1] HPE ha standardizzato i nostri modelli di test basati su benchmark di Big Data sfruttando i pod Kubernetes gestiti da HPE Ezmeral, GPU NVIDIA A100 da 40 GB e HPE ProLiant DL385 Gen10 Plus v2.