Tungsten
Prova Databricks gratis
Che cos'è il progetto Tungsten?
Tungsten è il nome in codice del progetto che si propone di apportare modifiche al motore di esecuzione di Apache Spark, con l'obiettivo di migliorare sensibilmente l'efficienza della memoria e della CPU per le applicazioni Spark, per portare le prestazioni più vicine ai limiti dell'hardware moderno.
Il progetto Tungsten prevede le seguenti iniziative:
- Gestione della memoria ed elaborazione binaria: sfruttare la semantica delle applicazioni per gestire la memoria in maniera esplicita ed eliminare le risorse aggiuntive per modello di oggetti JVM e Garbage Collection
- Calcolo sensibile alla cache: algoritmi e strutture di dati per sfruttare la gerarchia della memoria
- Generazione di codice: usare la generazione di codice per sfruttare i moderni compilatori e processori (CPU)
- Nessun dispacciamento di funzioni virtuali: questo approccio riduce le molteplici chiamate alla CPU che possono incidere molto sulle prestazioni quando il dispacciamento viene effettuato miliardi di volte.
- Dati intermedi in memoria o nei registri della CPU: Tungsten Phase 2 colloca i dati intermedi nei registri della CPU. Questa operazione riduce drasticamente il numero di cicli per ottenere i dati dai registri della CPU invece che dalla memoria
- Loop unrolling e SIMD: Il motore di esecuzione di Apache Spark può essere ottimizzato per sfruttare i compilatori moderni e la capacità della CPU di compilare ed eseguire in modo efficiente semplici cicli for (rispetto a complessi grafici di chiamata delle funzioni).
L'attenzione all'efficienza della CPU è motivata dal fatto che i carichi di lavoro di Spark sono sempre più rallentati dall'uso della CPU e della memoria invece che dalle comunicazioni I/O e di rete. Questa tendenza è confermata da recenti studi sulle prestazioni dei carichi di lavoro con Big Data.