La quantità ed i formati dei dati presente in rete, in particolare man mano che sempre più dispositivi vengono connessi ad Internet (dispositivi di ogni tipo secondo il paradigma dell’Internet of Things – IoT), sta crescendo esponenzialmente e questi Big Data non possono essere processati utilizzando le tradizionali tecniche di analisi, come ad esempio i database strutturati.
I Big Data sono set di dati così grandi e complessi, sia strutturati che non strutturati, da necessitare diversi ed adeguati strumenti per il loro storage, la ricerca, il trasferimento, l’analisi e la visualizzazione. I dati, infatti, possono essere divisi in dati strutturati, ovvero dotati di una struttura, come ad esempio le tabelle di un database o, più semplicemente, la rubrica di un cellulare in cui ad ogni nome è associato uno o più numeri di telefono, e dati non strutturati, come ad esempio testi, documenti in formati specifici (excel, powerpoint, ecc.), immagini e video.
Ma cosa si intende più specificatamente per Big Data? Generalmente con il termine Big Data si intende una raccolta di dati così grande, complessa e variabile da non poter essere trattata e gestita con strumenti tradizionali. Le caratteristiche principali dei Big Data si possono riassumere nelle famose quattro “V”: Volume (stiamo parlando di quantità di dati non gestibile nei database tradizionali); Velocità (i dati sono generati velocemente e richiedono di essere processati a ritmi ‘near real-time’ o addirittura ‘real-time’; Varietà (sono elementi di diversa natura e formati, non necessariamente strutturati); Veridicità (la qualità dei dati diventa un requisito fondamentale affinché questi possano avere effettivamente un valore da consentire di prendere decisioni predittive e preventive).
Tutte queste caratteristiche fanno sì che i Big Data non si prestino ad un tipo di analisi tradizionale, come ad esempio attraverso i database relazionali, ma richiedano piuttosto l’utilizzo di software massicciamente parallelo in esecuzione in modo distribuito.
Normalmente i sistemi operativi dei computer sono progettati per lavorare con i dati memorizzati in locale: se i dati hanno dimensioni tali da non poter essere memorizzati su un singolo computer, come nel caso dei Big Data, allora serve una architettura ad hoc per poter processare questi dati. Per fare un esempio, se abbiamo pochi libri li possiamo tenere in una o più librerie dentro casa. Se i libri diventano decine di migliaia, la soluzione non è quella di avere centinaia di case ognuna con le proprie librerie: serve costruire una biblioteca – una struttura ad hoc, progettata allo scopo, in grado di gestire decine di migliaia di libri in maniera adeguata.
Nel 2004 Google pubblicò un articolo in cui descriveva una nuova architettura chiamata MapReduce, un framework pensato per fornire un modello di elaborazione parallela e implementazione distribuita per processare grandi quantità di dati. In seguito l’algoritmo di MapReduce fu di ispirazione per la creazione di nuove soluzioni, come ad esempio Hadoop, un progetto open source di Apache, che ancora oggi è lo strumento più diffuso per processare i Big Data.
Nel tempo sono sopraggiunte nuove soluzioni, ognuna con caratteristiche peculiari: Apache Hive, che consente di interrogare mediante SQL diversi database memorizzati in maniera distribuita, su diverse macchine; Apache Pig, una piattaforma che consente l’analisi di Big Data utilizzando un linguaggio di alto livello insieme a una infrastruttura in grado di interpretare questo linguaggio, sfruttando, se possibile, l’opportunità di parallelizzare il calcolo. La più utilizzata resta Apache Hadoop, una implementazione open source della piattaforma MapReduce di Google, che deve il suo nome a due comandi del linguaggio, Map e Reduce. In Hadoop/MapReduce è molto facile specificare compiti in parallelo (mediante la prima fase, quella di Map) e poi come i dati debbano essere aggregati (mediante la fase di Reduce). Hadoop/MapReduce si presta benissimo a computazioni batch su dati di grandi dimensioni (Volume), mentre per dati in streaming (Velocità) ci sono altre piattaforme più adatte, come Apache Spark e Apache Storm.
Di solito tutta l’architettura, i software e lo storage per Big Data sono ospitati su piattaforme di Cloud Computing, perché offrono risorse computazionali in maniera flessibile. Grazie alla virtualizzazione, un meccanismo che consente di utilizzare un singolo server per ospitare diversi server virtuali, configurabili e gestibili in maniera molto flessibile, il cloud può offrire agli utenti risorse in base alle proprie necessità, in tempo reale. Se una piccola società di informatica lancia una nuova app, che necessita di interagire con un server, e il server è una singola macchina, non appena il numero di utenti cresce oltre il limite di quelli gestibili dalla macchina, la macchina va in crash e la app smette di funzionare. Grazie al cloud le società possono usare diversi server virtuali, e in caso di bisogno farne partire altri per essere in grado di resistere a picchi nelle richieste degli utenti. Questo meccanismo, ovvero la possibilità di configurare le macchine in maniera molto flessibile, è fondamentale per il trattamento dei big data, dove può fare comodo sperimentare diverse soluzioni architetturali prima di trovare quella adatta alle proprie esigenze.
Tutti questi strumenti permettono alla fine di convertire il grande insieme di dati in informazioni utili, di catalogarli e gestirli nel modo più efficiente, con l’obiettivo, in particolare per le aziende, di estrapolare nuove conoscenze che possano guidare le proprie scelte strategiche e di business.
Redatto da Lucia D’Adamo, in collaborazione Luigi Laura, supervisionato da Marco Pirrone