Data governance
20 Giugno 2020
Humanativa

Microsoft Hyperspace diventa open source

Grazie al costo relativamente basso della RAM ed alla disponibilità di varie soluzioni open source, le tecnologie di elaborazione in-memory sono progredite notevolmente negli ultimi anni e, come anche previsto da Gartner già alla fine del 2018 (report G00375147), quest’anno il mercato dell’in-memory computing è in fortissima espansione.

Con il crescere delle dimensioni dei data warehouse aziendali verso scale dell’ordine dei petabyte, dietro la spinta anche del Big Data, le tecnologie DBMS tradizionali non sono più in grado di fornire supporto in tempi accettabili ai processi ETL, né tantomeno ad applicazioni OLAP: per questa ragione, i prodotti in grado di mantenere ed elaborare data set in memoria all’interno di ambienti cluster sono diventati di estrema rilevanza.

Tra questi, Apache Spark, giunto nel giugno 2020 alla versione 3, si distingue per robustezza e versatilità, ed è sostenuto da una community di sviluppatori open source molto attiva. Nato oltre 10 anni fa presso l’Università della California fu poi donato alla Apache Foundation. Inizialmente pensato come un framework per applicazioni di calcolo distribuito in ambienti scientifici, grazie alla capacità di governare grandi quantità di informazioni con sofisticate politiche di caching che minimizzano l’uso delle memorie di massa in favore della RAM, Spark si è fatto rapidamente strada anche nel campo del data warehousing in contesti Big Data, in particolare grazie all’evoluzione del modulo Spark SQL, che ne ha reso l’utilizzo più familiare ed immediato ad utenti con competenze prettamente DBMS/ETL.

Proprio questi ultimi, tuttavia, hanno sin da subito manifestato un’esigenza non soddisfatta dall’architettura di Spark, benché estremamente complessa ed ingegnosa nello sfruttare ogni espediente tecnico in favore delle performance di elaborazione: la possibilità, da parte dell’utente, di poter creare strutture di indicizzazione dei dati utilizzabili per incrementare l’efficienza dei piani di esecuzione delle query.  In altri termini: l’istruzione “CREATE INDEX”, presente in qualsiasi DBMS, non è supportata da Spark SQL, ed il concetto stesso di indice non è previsto. La community di Spark ha sempre rigettato le critiche in tal proposito sostenendo che un applicazione che effettua elaborazioni in-memory, se opportunamente progettata, non ha necessità di indici, i quali costituiscono un espediente tecnico che ha ragione di esistere solo laddove l’utilizzo di memorie di massa è rilevante.

Tuttavia quest’obiezione non ha convinto tutta la platea degli utilizzatori e, in particolare, non ha convinto Microsoft che, per la sua piattaforma Azure Synapse Analytics, basata su Spark, ha deciso si di sviluppare in proprio un modulo di indicizzazione in-memory integrato con il framework.

In ambito cloud computing il tempo è, letteralmente, denaro: i clienti di Microsoft chiedono performance sempre maggiori alle piattaforme di calcolo e, contemporaneamente, poiché le piattaforme offrono interfacce di analisi di alto livello, spesso di tipo puramente grafico, per eseguire query complesse sui dati, non è ipotizzabile prevedere che l’utilizzatore finale possa costruirsi e mantenere speciali strutture dati ottimizzate, per ogni query, come eventualmente farebbe un ricercatore scientifico; ed ecco che l’antico concetto di indice ritorna strategico in una delle soluzioni cloud più avanzate, oggi più che mai.

Microsoft Hyperspace è un modulo software (tecnicamente, una libreria da importare) che consente di realizzare indici (in-memory) delle tipologie più comuni:

  • semplice (basato sui valori dei campi chiave)
  • covering (include alcuni campi della tabella all’interno dell’indice stesso, in aggiunta ai campi chiave)
  • materialized view (vista precalcolata)

Per tutte e tre le tipologie, Hyperspace è in grado di mantenere sincronizzate le strutture in seguito a modifiche ai dati sottostanti, come avverrebbe in un DBMS tradizionale.

Aspetto estremamente interessante di Hyperspace è che viene utilizzato da Spark in maniera completamente trasparente allo sviluppatore, che può continuare ad utilizzare i consueti costrutti Spark senza alcuna modifica.

Ad esempio:

val df = …..

val hs = new Hyperspace(spark)

hs.createIndex(df, IndexConfig(“IX”, indexedColumns = Seq(“id”))

val query = df.filter(df(“id”) === 1).select(“name”)

In sostanza, è sufficiente istanziare l’oggetto Hyperspace, creare gli indici desiderati sui dataframe Spark e, automaticamente, le query ne faranno uso, se conveniente.

Il miglioramento delle performance dipende, naturalmente, dalla singola query e dalla capacità dell’utente di individuare i migliori indici da creare; tuttavia i risultati ottenuti da questo benchmark basato sullo standard TPC evidenziano che per determinate elaborazioni si riescono ad ottenere vantaggi considerevoli:

Occorre precisare che, in questo momento, il codice è stato appena reso disponibile su GitHub e presenta limitazioni che lo rendono inutilizzabile in numerosi casi; ad esempio non è possibile costruire indici su dataframe ottenuti da tabelle Hive Metastore, ma solo su quelli costruiti a partire da file: una limitazione che non ne permette un utilizzo diretto in contesti ETL.

D’altra parte, considerando il rapido evolversi di queste tecnologie, ci aspettiamo che Hyperspace si sviluppi notevolmente nei prossimi mesi in modo da coprire tutti gli scenari di maggiore interesse. E sarà anche interessante osservare se la community di Spark deciderà finalmente di accogliere nativamente l’indicizzazione all’interno del suo prodotto, vista l’importanza riconosciutagli da un actor del livello di Microsoft.

Hyperspace è disponibile presso  https://github.com/microsoft/hyperspace

Fabrizio D’Agostino

Condividi

Articoli Tecnici

Data governance
6 Marzo
Humanativa

La Democratizzazione del Dato

La democratizzazione del dato si riferisce alla pratica di rendere […]

Security
20 Ottobre
Humanativa

HN Security all’evento “Pillole di Cybersecurity”

Con piacere il nostro collega Fabrizio Sensibile, Senior Security Advisor […]

Security
18 Luglio
Humanativa

HN Security presente all’evento OSSIF di ABI

HN Security ha partecipato all’evento OSSIF di ABI fornendo un […]

Machine Learning
4 Maggio
Humanativa

Reti neurali Generative (GAN)

Le GAN, fanno parte dei modelli di reti neurali generativi. Un […]

Machine Learning
13 Aprile
Humanativa

Machine Learning: Il Reinforcement Learning

Il Reinforcement Learning è uno dei temi più scottanti nel […]

Machine Learning
24 Marzo
Humanativa

Reti neurali: Feed-forward e Recurrent Neural Network

Modelli ricorrenti (RNN) Le reti neurali possono essere suddivise in […]

Data governance
4 Marzo
Humanativa

DENODO & HUMANATIVA, insieme per la Data Governance

La governance dei dati definisce come le imprese gestiscono la […]

Machine Learning
2 Febbraio
Humanativa

Reti neurali feed-forward – CNN – Convolutional Neural Network

Nel precedente articolo abbiamo descritto in linea generale il funzionamento […]

Machine Learning
18 Gennaio
Humanativa

Deep Learning la tecnologia del futuro, cosa è e perché rappresenta la prossima frontiera di Humanativa

In questi anni l’attività di ricerca e sviluppo realizzata da […]

Security
24 Giugno
Humanativa

Conosci il nemico

Marco Ivaldi, Technical Director di HN Security Il 9 giugno […]