Storm è un sistema di computazione real-time, distribuito, free e Open Source che rende semplice lavorare in maniera affidabile con flussi di dati illimitati, effettuando l'elaborazione in tempo reale alla stessa stregua dell'elaborazione che sistemi come Hadoop effettuano in batch.
Tipici casi di applicabilità di Storm sono:
Processo | Descrizione |
---|---|
Stream Processing | elaborazione di nuovi flussi di dati o aggiornamento di dati memorizzati in database in tempo reale. A differenza dei tradizionali approcci di stream-processing con reti di code e workers, Storm è fault-tolerance e scalabile. |
Continuous Computation | interrogazioni continue e presentazione dei risultati in real-time. Un esempio è l'analisi dei trend dei topic su Twitter: i risultati dell'elaborazione di uno stream di tweet, che mostra gli argomenti di tendenza, verranno presentati in tempo reale. |
Distributed RPC | Storm può essere utilizzato per parallelizzare un'intensa interrogazione on the fly. L'idea si basa sull'utilizzo di remote procedure call distribuite che attendono messaggi di invocazione: quando si riceve una chiamata, una query viene elaborata e vengono restituiti i risultati. Un esempio di Distributed RPC è la parallelizzazione di query di ricerca. |
La potenza di Storm sta nel fatto che esso è in grado di risolvere un'enorme varietà di casi d'uso con un semplice insieme di primitive. Un benchmark ha rivelato che ogni nodo del sistema riesce a processare un milione di tuple al secondo. E' sulla base di queste peculiarità che molte, importanti società del settore IT hanno hanno integrato nei propri sistemi quello che si può definire uno Storm Cluster: Twitter, Groupon, Yahoo!, Flipboard, Alibaba sono solo 5 delle 55 società che ad oggi utilizzano Storm per effettuare analisi in real-time.
Big Data Analytics con Storm
Big Data è un termine di tendenza usato per riferirsi all'analisi di enormi quantità di dati per trovare schemi e tendenze nascoste. Le informazioni da studiare possono provenire da qualunque campo: dai post pubblicati su Facebook legati a un certo tema fino ai prodotti acquistati in una catena di negozi. Nonostante sia difficile tracciare una distinzione netta con la normale raccolta e analisi dati, il concetto di Big Data nasce con la rivoluzione digitale. I Big Data hanno tre origini principali:
- le transazioni originate dall'utilizzo dei dispositivi da parte degli individui, come carte di credito, cellulari e carte fedeltà;
- le interazioni e i messaggi che si sviluppano attraverso le reti sociali e il web 2.0;
- le rilevazioni svolte da innumerevoli sensori digitali presenti negli oggetti che utilizziamo quotidianamente.
Le applicazioni concrete possono essere notevoli in quasi tutti i settori. Uno degli esempi più recenti proviene da Tesco, la celebre catena di supermercati inglesi, che è riuscita a risparmiare 16 milioni di sterline all'anno monitorando le abitudini di acquisto dei suoi clienti e misurando l'efficacia delle offerte speciali.
Big Data, infatti, è il termine per descrivere una raccolta di dataset così grande e complessa da richiedere strumenti differenti da quelli tradizionali, in tutte le fasi del processo: dall'acquisizione, alla curation, passando per condivisione, analisi e visualizzazione. Il progressivo aumento della dimensione dei dataset è legato alla necessità di analisi su un unico insieme di dati, con l'obiettivo di estrarre informazioni aggiuntive rispetto a quelle che si potrebbero ottenere analizzando piccole serie, con la stessa quantità totale di dati. Ad esempio, l'analisi per sondare gli umori dei mercati e del commercio, quindi del trend complessivo della società e del fiume di informazioni che viaggiano e transitano attraverso Internet.
Big Data rappresenta anche l'interrelazione di dati provenienti potenzialmente da fonti eterogenee, cioè non soltanto i dati strutturati, come i database, ma anche non strutturati, come immagini, email, dati GPS, informazioni prese dai social network. Con Big Data la mole dei dati è dell'ordine dei Zettabyte (miliardi di Terabyte), quindi si richiede una potenza di calcolo parallelo e massivo con strumenti dedicati eseguiti su decine, centinaia o anche migliaia di server.
Principali Strumenti a supporto della Big Data Analytics
A supporto della Big Data Analytics esistono numerose tecnologie che permettono di effettuare analisi su grandi quantità di dati. Queste tecnologie possono essere classificate in framework (da utilizzare in progetti Java e che ci permettono di sviluppare delle applicazioni ad hoc) e in piattaforme pronte all'uso e customizzabili (commerciali e Open Source). Il maggior competitor dello Storm Project (in ambito framework) è senza dubbio Hadoop.
Hadoop è un framework software concepito per scrivere facilmente applicazioni che elaborano grandi quantità di dati (multi-terabyte data-set) in parallelo, su cluster di grandi dimensioni (migliaia di nodi) in modo affidabile e fault-tolerant. Hadoop utilizza HDFS, un file system distribuito. Un cluster HDFS è costituito principalmente da un NameNode che gestisce i metadati del file system e DataNodes che memorizzano i dati effettivi. HDFS è specificamente progettato per immagazzinare un'enorme quantità di dati, in modo da ottimizzare le operazioni di archiviazione e accesso a un numero relativamente piccolo
di file molto grandi rispetto ai tradizionali file system che sono ottimizzati per gestire tanti file relativamente piccoli.
Spesso Storm viene presentato come un Hadoop in real-time perché, in sostanza, hanno lo stesso obbiettivo cioè processare enormi quantità di dati in maniera parallela e distribuita con una differenza rilevante: Storm, nativamente, processa i dati in real-time senza nessun tipo di persistenza (questo però non esclude l'interazione con sistemi di persistenza di terze parti), Hadoop processa i dati che sono distribuiti in un filesystem distribuito. Ciò vuol dire che aumenta la latenza nell'elaborazione rispetto a Storm allontanando l'ago della bilancia da quelle che possono essere definite elaborazioni real-time.
Analogalmente, elenchiamo invece alcune altre piattaforme per l'analisi dei flussi di dati:
Piattaforma | Descrizione |
---|---|
Apache Hive | Un sistema di data warehouse per Hadoop che facilita il riepilogo dei dati, query ad hoc e l'analisi di grandi insiemi di dati memorizzati in file system compatibili Hadoop. Hive fornisce un meccanismo di interrogazione dei dati utilizzando un linguaggio SQL-like chiamato HiveQL. Nello stesso tempo, questo linguaggio permette di usare gli algoritmi Map/Reduce quando HiveQL si rivela non adatto a certi scopi. |
Apache Pig | Una piattaforma per l'analisi di grandi insiemi di dati. Consiste in un linguaggio di alto livello per scrivere programmi di analisi dei dati, insieme con l'infrastruttura per valutare questi programmi. La caratteristica principale dei programmi di Pig è la loro propensione ad una parallelizzazione sostanziale, che permette appunto la gestione di grandi volumi di dati. L'infrastruttura di Pig è costituita da un compilatore che produce sequenze di programmi Map-Reduce. Pig si basa su un linguaggio chiamato Pig Latin, pensato per essere semplice da usare, facilitare le ottimizzazioni ed essere estendibile. |
Splunk | Una potente piattaforma per l'analisi di dati macchina, cioè dati prodotti da dispositivi fisici presenti in un'infrastruttura IT (PC, server, router, firewall etc.), ma non solo, può infatti analizzare altre sorgenti di dati eterogenee, come quelli provenienti dai social media. I dati che vengono dati in pasto alla piattaforma vengono indicizzati e l'analista può sfruttare una search bar presente nella GUI di Splunk per comporre delle stringhe di testo costituite da comandi e keywords che forniscono degli insights relativi all'infrastruttura che si sta analizzando. L'essenza e la potenza di Splunk sta proprio in questo: digitare semplici stringhe di testo in un motore di ricerca allo scopo di ottenere dei risultati facilmente fruibili (anche tramite chart) che diano all'analista la possibilità di poter prendere decisioni con elevata affidabilità e soprattutto in tempi brevissimi (anche in real-time). |