Apache Spark: elaborazione distribuita in-memory

Apache Spark introduce il modello RDD e l'esecuzione in-memory nell'elaborazione distribuita, raggiungendo velocità fino a 100x superiori a Hadoop MapReduce per carichi iterativi.

Open SourceR&D Open SourceApache SparkBig DataIn-MemoryDistributed Computing

Dal laboratorio di Berkeley al top-level Apache

Apache Spark nasce all’interno dell’AMPLab dell’Università di Berkeley come progetto di ricerca per superare i limiti di Hadoop MapReduce nell’elaborazione iterativa di grandi volumi di dati. Nel febbraio 2014 il progetto viene promosso a top-level project della Apache Software Foundation, segnale di maturità e adozione crescente nella comunità Big Data.

L’idea fondante è semplice: se un algoritmo deve attraversare gli stessi dati più volte — come accade nel machine learning, nell’analisi di grafi e nelle query interattive — riscriverli su disco a ogni iterazione è uno spreco. Spark mantiene i dati in memoria RAM tra un’iterazione e l’altra, riducendo drasticamente la latenza.

RDD e trasformazioni lazy

L’astrazione centrale di Spark è il Resilient Distributed Dataset (RDD): una collezione immutabile di elementi partizionata su un cluster e tollerante ai guasti. Gli RDD vengono creati a partire da dati su HDFS, da file locali o da trasformazioni di altri RDD.

Le operazioni sugli RDD si dividono in trasformazioni — come map, filter, flatMap, groupByKey — e azioni — come count, collect, saveAsTextFile. Le trasformazioni sono lazy: non vengono eseguite immediatamente, ma registrate in un grafo aciclico diretto (DAG) di dipendenze. Solo quando viene invocata un’azione, il DAG scheduler di Spark analizza il grafo, lo ottimizza e lo suddivide in stage eseguiti in parallelo sui nodi del cluster.

Questa valutazione lazy permette ottimizzazioni che MapReduce non può effettuare: Spark fonde trasformazioni consecutive, evita shuffle non necessari e pianifica l’esecuzione in modo globale anziché operazione per operazione.

Un framework unificato

Oltre al motore core, Spark integra librerie specializzate nello stesso framework:

  • Spark SQL: interrogazione di dati strutturati con sintassi SQL, integrazione con Hive
  • MLlib: libreria di machine learning distribuito con algoritmi di classificazione, regressione, clustering e raccomandazione
  • GraphX: elaborazione di grafi e calcolo parallelo su strutture a grafo
  • Spark Streaming: elaborazione di flussi di dati in micro-batch

Il vantaggio di avere tutto in un unico framework è che i dati possono fluire tra SQL, machine learning e analisi di grafi senza serializzazione intermedia. Per i carichi iterativi, i benchmark mostrano velocità fino a 100 volte superiori rispetto a MapReduce, grazie alla combinazione di esecuzione in-memory e ottimizzazione del DAG.

Link: spark.apache.org

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi