Capitolo 2
Big Data
2.1 Cosa sono i Big Data
Nel precedente capitolo si è detto che l’istituto di ricerca Gartner prevede per il 2020
quasi 30 miliardi di devices IoT connessi alla Rete. Questo grande numero di nuovi
dispositivi connessi a Internet raccoglieranno e genereranno una enorme quantità di dati
che verrà inserita in Rete. Con la diffusione delle tecnologie IoT, si registrerà quindi una
crescita esponenziale della disponibilità di dati, sia strutturati (database, transazioni
online, log files) che non strutturati (immagini, informazioni legate ai social network,
dati GPS, dati dei sensori), così massivi e in rapido cambiamento da non poter essere
processati usando le tradizionali tecniche di analisi, come ad esempio i database
strutturati. Il mondo dell’Internet of Things avrà quindi a che fare con i Big Data da
esso generati.
I Big Data sono dei set di dati così grandi e complessi da necessitare strumenti adeguati
e diversi dai tradizionali per la loro cattura, lo storage, la ricerca, la condivisione, il
trasferimento, l'analisi e la visualizzazione.
22
CAPITOLO 2
BIG DATA
Come l’IoT, anche quello di Big Data è un concetto ancora recente e in cui ancora non
si è giunti a definizioni standard. Come suggerisce il termine stesso, la prima
caratterizzazione dei Big Data è legata alla grandezza dei dati, il cui punto di
riferimento è già sull’ordine dei terabyte (1024 gigabyte), dei petabyte (1024 terabyte) e
anche di più fino agli zettabyte (miliardi di terabyte). E’ facile capire come processare
questi dati significa disporre di soluzioni di calcolo parallelo e massivo su anche
migliaia di server dedicati.
Ma Big Data non significa soltanto dati voluminosi, ma significa soprattutto dati
complessi. Infatti insieme al volume, l’etichetta include anche altre due caratteristiche:
varietà e velocità, a completare le caratteristiche principali dei Big Data che si possono
riassumere nelle tre “V”.
Figura 2.1: Caratteristiche dei Big Data: le tre “V”
23
CAPITOLO 2
BIG DATA
Quindi non solo volume, inteso come proprietà di acquisire, memorizzare ed accedere a
grandi quantità di dati, ma anche varietà, riferita all’eterogeneità dei dati, provenienti
da fonti diverse (strutturate e non), e velocità, cioè gestione di dati che cambiano
rapidamente e che necessitano di tecniche che rendano la loro analisi più veloce
possibile (real-time). Tra gli addetti ai lavori si sta considerando la definizione di una
quarta “V”, ossia la veridicità, che misura il potenziale informativo del dato e la sua
integrità, nonché la sua qualità al fine di essere analizzato, nonché di una quinta, il
valore economico legato ad un uso smart da parte della aziende dei Big Data a loro
disposizione.
Le caratteristiche dei Big Data fanno capire come si renda necessaria una analisi che
possa rendere possibile l’estrazione di informazioni da un grande ed unico insieme di
dati eterogenei ed in continuo cambiamento. Ad esempio analizzando il fiume
inarrestabile di dati che transitano su Internet per avere informazioni sui trend della
società o per sondare i mercati.
In campo economico e non solo sta crescendo la consapevolezza di come una gestione
smart dei Big Data possa anche e soprattutto aiutare a scoprire nuovi modi di
migliorare i processi decisionali e le prestazioni.
Qual è la maggiore challenge dei Big Data?
Convertire la grande, eterogenea e rapidamente variabile mole di dati in informazioni
usabili, attraverso patterns e modelli di analisi generati da tali patterns: questa è la sfida
dei Big Data.
Diverse realtà stanno già cercando delle soluzioni per realizzare questo. Gli sviluppatori
e i fornitori di software certificati in Business Intelligence che stanno lavorando sui Big
Data sono in aumento, trasformando la gestione di questi dati in un settore in grande
espansione con attori sia nel privato che nella comunità open source. Contributi in
campo privato già esistono attraverso aziende come SAP, Oracle, HP e IBM, ma è dal
24
CAPITOLO 2
BIG DATA
mondo open source che sta arrivando la spinta decisiva all’innovazione nel campo della
gestione dei Big Data attraverso software come Apache Hadoop, Cascading, Apache
HBase, MongoDB, Apache Storm e altri.
Già oggi i Big Data sono una realtà, e l’ascesa dell’IoT non farà altro che produrne in
quantità esponenzialmente maggiore. Secondo IBM [8], vengono creati ogni giorno 2,5
quintilioni (1030) bytes di dati, che significa che negli ultimi due anni sono stati creati il
90% dei dati presenti in Rete; eBay possiede tre sistemi di storage distribuito per una
capacità complessiva di 90PB [9]; i sistemi informatici della catena di negozi Walmart
gestiscono ogni ora un milione di transazioni di acquisti online, che vengono registrati
su database che contengono 2,5 petabytes di dati [10]; Facebook gestisce 50 miliardi di
foto nei suoi database, e ovviamente questo numero cresce costantemente [11].
Con la crescita del numero dei dispositivi e delle operazioni che generano flussi di dati
sempre più complessi, usare i Big Data in modo efficace sta rapidamente diventando un
significativo vantaggio per molte aziende. Già da anni si discute sul grande valore che
hanno i dati. Questi dati diventeranno sempre più voluminosi, eterogenei e rapidi e sarà
decisivo cercare sempre migliori soluzioni per sfruttarli e raccogliere nuovi ed
emergenti tipi di dati per prendere decisioni e rispondere a domande che prima
dell’avvento dei Big Data erano considerati fuori portata.
2.2 Aree di applicazione
La gestione smart dei Big Data è un grande elemento di innovazione e diventerà sempre
più parte integrante dei modelli di analisi economica, migliorando la capacità del settore
di competere a livello globale. Ovviamente, fare il migliore uso possibile di questi dati
richiederà la crescita di un settore dedicato che si occupi di analisi predittiva e dati raw.
Di seguito alcuni esempi di applicazioni già esistenti del concetto di analisi dei Big Data
e anche delle potenziali aree in cui lo sfruttamento di questi dati può avere molto
importanza.
25
CAPITOLO 2

BIG DATA
Big Data for Consumers
Big Data significa anche dati prodotti dai consumatori e la loro analisi intelligente non
potrà che produrre benefici per questi ultimi. Ad esempio, l’elevato grado di
personalizzazione perseguito da compagnie come Netflix e Amazon nel consigliare
l’utente circa l’acquisto di prodotti si basa sull’analisi delle sue precedenti interazioni ed
è frutto di una analisi massiva su grandi moli di dati. Già da anni diversi service
providers come Comcast e Verizon monitorano in modo proattivo i computer dei loro
clienti al fine di rilevare infezioni da virus e malware. Lo stesso completamento
automatico di Google e il servizio di traduzione si basano su una grande raccolta di dati
e operano attraverso la loro analisi real-time.

Big Data for Community
Della raccolta e l’utilizzo dei dati beneficia non solo il consumatore, ma anche in senso
lato la comunità. Esempi dell’uso dei Big Data in tal senso sono ad esempio i potenziali
servizi da offrire a clienti di un determinato prodotto o a residenti di una determinata
area geografica. Analizzando i feedback forniti dai consumatori sui prodotti si
conferiscono vantaggi a tutta la comunità che li utilizza.

Big Data for Organizations
I Big Data forniscono indubbiamente una visibilità senza precedenti nel campo
commerciale in cui è possibile sondare approfonditamente i processi decisionali dei
clienti, consentendo alle aziende di analizzare, monitorare e anche creare modelli di
acquisto utili a incentivare le vendite. I Big Data possono essere sfruttati per affrontare
le situazioni in cui le informazioni sono frammentate in diversi sistemi non collegati tra
loro centralmente. Aggregando i dati tra i sistemi e gestendoli in modo distribuito, è
possibile sfruttare le potenzialità delle grandi quantità di informazioni. La gestione dei
Big Data può anche apportare miglioramenti nei processi produttivi offrendo una
migliore visibilità sulle questioni operative, ad esempio raccogliendo i dati emessi dai
26
CAPITOLO 2
BIG DATA
computer, dai sensori, dai GPS o dai misuratori. Con più dati a disposizione, le aziende
possono ottimizzare i metodi di distribuzione, allocare efficientemente il credito ed in
generale beneficiare il cliente.

Big Data for Manifacturing
Usare i Big Data nella produzione industriale significa apportare decisivi miglioramenti
nella pianificazione dei processi e nella qualità dei prodotti. L’analisi dei dati
provenienti dalle diverse fasi del processo produttivo fornisce una inedita infrastruttura
per la gestione industriale, permettendo di avere conoscenza maggiore che in passato
circa ad esempio le prestazione dei componenti, eventuali guasti e le velocità di lavoro.
Nuovi approcci come la produzione predittiva per sfruttare i tempi di inattività e
aumentare la conoscenza le fasi poco trasparenti del processo industriale si stanno
affermando. Attraverso i dati eterogenei generati da diversi tipi di sensori e relativi a
misure di pressione, tensione, corrente, acustica e vibrazioni si costruiscono dei patterns
e dei modelli al fine di ottenere degli stumenti predittivi e delle strategie preventive per
la programmazione e la gestione dei processi.

Big Data for Society
Da non sottovalutare è anche l’utilità sociale dell’uso dei Big Data, come ad esempio
nel caso di Data Mining per finalità di sicurezza nazionale o di analisi su larga scala dei
dati di geo-localizzazione per la pianificazione urbana, gestione di situazioni di
emergenza, ottimizzazione dei consumi energetici.

Big Data for Security
Altro importante campo di applicazione dell’uso dei Big Data è quello della sicurezza
informatica. Attraverso l’accesso real-time ai dati, è possibile migliorare le piattaforme
di sicurezza, attraverso l’analisi di una più ampia varietà di tipi di dati da elaborare che
contribuisce a migliorarne l’intelligenza. Allo stesso modo, l’uso di questi dati per il
27
CAPITOLO 2
BIG DATA
rilevamento delle frodi nel settore delle carte di credito aiuta a fare in modo che le
transazioni finanziare siano sicure.
2.3 Big Data Analytics
Come anticipato ad inizio capitolo, i Big Data non si prestano ad un tipo di analisi di
tipo tradizionale, come ad esempio quella effettuata attraverso i database relazionali.
Richiedono piuttosto l’analisi attraverso software massicciamente parallelo in
esecuzione in modo distribuito. Nasce quindi l’esigenza, al fine di convertire questo
grande insieme di dati in informazioni utili, di definire strumenti e tecniche nuove ed
adatte alla natura dei Big Data.
Vanno sotto il nome di Big Data Analytics i processi di raccolta, organizzazione ed
analisi di grandi set di dati eterogenei e in rapido cambiamento al fine di scoprire
patterns, correlazioni e altre informazioni utili.
Questo tipo di analisi quindi non solo aiuta a estrarre l’informazione contenuta
nell’insieme dei dati, ma si occupa anche di catalogare e gestire i dati che si configurano
sempre più come il fattore più importante, in campo aziendale, per le scelte strategiche.
Il risultato che gli analisti di Big Data quindi ricercano è principalmente la conoscenza
che viene dai dati stessi.
L’analisi dei Big Data si configura come una operazione tutt’altro che semplice, dove
entra in gioco oltre alla bontà agli strumenti informatici utilizzati, anche la necessità di
costruire delle soluzioni smart per riuscire ad estrarre dall’insieme eterogeneo e
volatile nel minor tempo possibile e col minor dispendio di risorse il maggior numero di
informazioni utili.
Le operazioni di Big Data Analytics sono in genere eseguite utilizzando strumenti
software specializzati e applicazioni per l’analisi predittiva, data mining (estrazione di
conoscenza a partire da grandi quantità di dati), text mining (data mining basato su dati
28
CAPITOLO 2
BIG DATA
testuali), forecasting (studio attraverso algoritmi di previsione) e ottimizzazione dei dati.
Queste tecniche, tutte delle funzioni distinte con obiettivi diversi, sono fortemente
integrate nell’analisi dei Big Data.
Si iniziò a parlare di Big Data Analytics già dal 2004, quando Google pubblicò un paper
[12] in cui descriveva una nuova architettura chiamata MapReduce.
Questo framework fu pensato per fornire un modello di elaborazione parallela e
implementazione distribuita per processare grandi quantità di dati. Attraverso
MapReduce, le query vengono divise e distribuite su nodi paralleli e processate in modo
distribuito (la fase Map). I risultati dell’elaborazione vengono poi raccolti e consegnati
(fase Reduce). Il framework ebbe molto successo, così che l’algoritmo MapReduce
fornì l’ispirazione per la creazione di nuove soluzioni. Ad esempio, una
implementazione del framework fu adottata da un progetto open source di Apache,
Hadoop [13], che ancora oggi è lo strumento più diffuso per la Big Data Analytics.
Attualmente la strada maggiormente intrapresa per implementare soluzioni di Big Data
Analytics è l’uso di architetture a livelli multipli, cioè di architetture parallele e
distribuite in cui i dati vengono disposti su più unità di elaborazione. Il calcolo parallelo
processa i dati molto più velocemente, consentendo una maggiore rapidità di
ottenimento dei risultati. In questo tipo di architettura i dati sono gestiti in DBMS
distribuiti, che lavorano parallelamente implementando l’uso di framework
MapReduce come Hadoop. L’utente finale, attraverso un front-end application server,
tiene traccia del processo di analisi grazie agli strumenti forniti dal framework.
Alcuni esempi di questo tipo di architetture saranno trattate di seguito e forniranno
spunti per le scelte attuate nella progettazione e nell’implemetazione delle soluzioni
smart obiettivo di questo lavoro di tesi.
29
CAPITOLO 2
BIG DATA
2.3.1 Three-Level Architecture
Il concept alla base dell’idea di analizzare i Big Data attraverso più livelli di gestione e
di elaborazione è quello di assegnare carichi di lavoro e tasks a sistemi che lavorano ed
emettono risultati a latenze diverse.
Costruire un sistema di elaborazione a più livelli, in questo caso specificatamente a tre,
è un concetto mutuato dallo storage a 3 livelli, in cui questi diversi livelli indicano
proprio la possibile latenza di accesso alle informazioni immagazzinate nei database.
Dallo storage si è pensato quindi di applicare il concetto di latenze diverse a quello di
elaborazione dei dati.
I tre livelli di questa architettura sono i seguenti: ONLINE PROCESSING,
NEARLINE PROCESSING, OFFLINE PROCESSING.

ONLINE PROCESSING
Questo livello si occupa della ricezione real-time dei dati, della loro elaborazione e
dell’emissione, sempre real-time, dei risultati. La caratteristica fondamentale di questo
livello è quello della velocità di elaborazione ed emissione, per cui generalmente non
gestisce dati troppo grandi e lavora con algoritmi snelli e semplici.

NEARLINE PROCESSING
Il Nearline è un livello Database-oriented; generalmente infatti esso si occupa dello
storage dei dati, che possono venir usati per sia per le computazioni online che per
quelle online. Può anche contenere un proprio stadio di computazione, in cui gli
algoritmi sono più complessi del livello Online e per questo serve risultati con velocità
minore.
30
CAPITOLO 2

BIG DATA
OFFLINE PROCESSING
In questo livello è prevista l’elaborazione batch dei dati, attraverso jobs pesanti e con
latenza più estesa che negli altri livelli. Gli algoritmi usati Offline possono essere molto
complessi, con pontenzialmente nessuna limitazione alla grandezza dei dati da
processare. A questo livello è riservato il compito di creare nuovi patterns e modelli di
gestione dei dati e di servire da strato di backup computazionale in assenza del livello
Online.
Perché una elaborazione dei dati a 3 livelli?
La sola elaborazione batch/offline dei dati fa correre il rischio di avere dati stantii ed
inoltre le applicazioni che le useranno non avranno gli input più recenti da elaborare.
L’ architettura a 3 livelli per la Big Data Analytics è già comune tra diverse realtà, che
con sfumature diverse e adattandola alle proprie esigenze e necessità, la usano per la
gestione delle grandi moli di dati. Di seguito alcuni interessanti casi d’uso
dell’architettura.
- NETFLIX
Netflix è una società statunitense che offre, tra gli altri, un servizio di streaming online
on demand di media e prodotti cinematografici. Usando l’architettura a 3 livelli [14],
Netflix elabora i dati in modi diversi, a seconda della velocità con cui i risultati devono
essere serviti ai clienti o alla valutazione interna. Con la propria architettura software di
analisi dei Big Data, questa azienda si pone l’obiettivo di essere sensibile
all’interazione degli utenti arricchendola con nuovi strumenti dati proprio da questo tipo
di analisi, come un sistema di raccomandazione e di advertising personalizzato.
Tutta l’architettura, i software e lo storage di Netflix sono ospitati sulla piattaforma di
Cloud Computing Amazon Web Services (AWS).
31
CAPITOLO 2
BIG DATA
Figura 2.2: Architettura a 3 livelli di Netflix
Nella figura 2.2, lo schema del sistema globale dell’architettura a 3 livelli usata da
Netflix, in cui gli strati di elaborazione Online, Nearline e Offline concorrono a
migliorare l’esperienza dell’utente gestendo e analizzando i Big Data.
32
CAPITOLO 2
BIG DATA
Una delle questioni chiave di questo tipo di architettura è quella di combinare e gestire i
diversi tipi di computazione in modo smart e continuativo.
Il livello Online dell’architettura Netflix risponde rapidamente agli eventi e utilizza i
dati più recenti. Uno use case delle funzionalità Online è ad esempio quello di generare
e suggerire al cliente una galleria di film in base alle ultime selezioni effettuate.
All’altra estremità dell’architettura, il livello Offline consente scelte algoritmiche più
complesse e quasi nessuna limitazione sulla quantità di dati da utilizzare. Un esempio
dell’uso di questo livello è quello di stilare periodicamente delle statistiche aggregate
sulla base di tutti i film visti e compilare metriche di popolarità di base da usare nei
suggerimenti da dare all’utente.
Il livello Nearline può essere visto come un compromesso tra i due livelli precedenti. In
questo caso, i risultati della computazione non hanno la necessità di essere emessi in
modo real-time, ma possono essere memorizzati in sistemi di storage per poter anche
essere usati in future elaborazioni online o offline. Questo permette un calcolo più
complesso ed algoritmi maggiormente elaborati: un esempio è quello di riuscire ad
aggiornare le proposte all’utente sulla base delle ultime scelte degli altri clienti.
Un importante concetto presente in questa architettura è quello di Machine Learning.
Algoritmi di apprendimento automatico e personalizzazione basata sui dati ricevuti sono
presenti in tutti i livelli della computazione, anche se la maggior parte del lavoro in tal
senso viene svolta Offline. La loro esecuzione è programmata per essere svolta
periodicamente e non ha bisogno di essere sincrona con la presentazione dei risultati.
L’attività che rientra in questa categoria sono il Model Training. Durante i jobs di
Model Training, vengono raccolti dati pertinenti e attraverso un algoritmo di Machine
Learning si producono una serie di parametri che costituiranno il modello. Quest’ultimo
di solito è codificato e memorizzato in un file per un uso successivo. Sebbene la
maggior parte dei modelli siano generati Offline in modalità batch, anche a livello
33
CAPITOLO 2
BIG DATA
Online e Nearline vengono eseguiti degli algoritmi di Machine Learning,
principalmente di tipo incrementale. La computazione batch si serve dei modelli
generati Offline e dei dati corrispondenti che li hanno generati per elaborare i risultati.
I dati da processare hanno bisogno di essere raffinati, per cui generalmente si usano
delle query. Dal momento che queste query devono essere eseguite su una enorme
quantità di dati, può essere utile eseguirle in modo distribuito attraverso degli strumenti
come Apache Hive (infrastruttura di data warehouse per effettuare query e analisi di
dati) e Apache Pig (piattaforma ad alto livello per la creazione di software MapReduce)
accoppiati ad Apache Hadoop (framework che supporta applicazioni distribuite con
elevato accesso di dati).
Una volta eseguite le query, è necessario un meccanismo di pubblicazione dei risultati,
che notifichi l’ottenimento degli stessi, si occupi del loro storage, gestisca gli errori
permettendo il monitoraggio. Netflix sotto questo punto di vista usa una soluzione
software interna, Hermes.
Figura 2.3: Tipi di input gestiti dall’architettura Netflix
34
CAPITOLO 2
BIG DATA
I tipi di input che l’architettura Netflix gestisce rientrano in tre categorie: modelli, dati
e segnali. I modelli sono, come già visto, file di parametri creati generalmente Offline; i
dati sono le informazione precedentemente elaborati e conservati a livello Nearline nelle
piattaforme di storage (ad esempio metadati sui film o sulla popolarità degli stessi). I
segnali si riferiscono alle nuove informazioni, provenienti dal livello Online e che sono
relative all’interazione dell’utente (che film ha visto di recente, da che dispositivo, a che
ora è stato visto, ecc..).
Il sistema di storage di Netflix è contenuto nel livello Nearline, e consiste in varie
repository: MySQL, Apache Cassandra, EVCache.
MySQL consente la memorizzazione di dati strutturati relazionali: tuttavia i Big Data
possono essere anche non strutturati, e per la loro gestione è necessario lavorare con
soluzioni distribuite e database scalabili. Cassandra in questo senso viene in aiuto,
trattandosi di uno dei più diffusi DBMS non relazionali ottimizzato per gestire grandi
quantità di dati in modo distribuito. Nel caso di operazioni di scrittura intense e costanti
Netflix usa una soluzione interna di data store, EVCache.
L’obiettivo di Netflix è quello di utilizzare i dati dell’interazione utente in informazioni
utili per migliorare l’esperienza del cliente stesso. Per fare ciò è necessario catturare
quanti più eventi possibile da tale interazione attraverso le interfacce utente (smart tv,
tablets, console di gioco): dati di navigazione, di visualizzazione, o anche i semplici
click effettuati. Come descritto, attraverso algoritmi di Machine Learning l’obiettivo è
quello di lavorare i dati provenienti dall’utente per offrirgli soluzioni personalizzate.
Queste soluzioni possono provenire da liste precedente calcolate sull’esperienza di altri
utenti (esempio di Offline Processing) o generati real-time attraverso gli algoritmi
Online.
35
CAPITOLO 2
-
BIG DATA
LINKEDIN
LinkedIn è un social network business-oriented impiegato principalmente per lo
sviluppo di contatti professionali.
E’ un servizio molto diffuso che ha raggiunto numeri ragguardevoli: 200 milioni di
utenti in tutto il mondo, 2 nuovi utenti al secondo, 100 milioni di visitatori al mese.
L’enorme afflusso di dati che continuamente transitano e vengono inseriti sui propri
server ha posto LinkedIn davanti alla challenge della gestione dei Big Data generati dal
servizio.
Anche questa azienda adotta, per la gestione e l’analisi dei Big Data, una architettura a 3
livelli, o meglio secondo il concept di LinkedIn a 3 fasi: sistemi Online, Nearline e
Offline, ciascuno progettato per carichi di lavoro specifici [15]. L’obiettivo nella
costruzione dell’architettura è stato quello di creare piattaforme e soluzioni per
bilanciare i costi con la complessità dei dati e semplificare il continuum dei dati
attraverso le tre fasi di elaborazione. Tutto questo per fornire all’utente servizi
differenziati a diversi gradi di latenza nel modo più efficiente possibile.
La gestione dei profili utente richiede grandi dataset ma deve contemporaneamente
consentire alte velocità di accesso e di aggiornamento dei dati; servizi come “People
You May Know” (Persone che potresti conoscere), in cui LinkedIn suggerisce all’utente
i contatti, si basa su algoritmi che lavorano su grandi quantità di dati e richiedono molte
risorse di computazione per fornire accessi veloci; LinkedIn Today, servizio di news
sharing, è sviluppato su dataset distribuiti e l’aggiornamento delle notizie deve essere
costante.
Esigenze diverse per servizi diversi: questo ciò che ha portato LinkedIn ha sviluppare la
propria architettura di Big Data Analytics su più livelli.
36
CAPITOLO 2
BIG DATA
Figura 2.4: Infrastruttura per gestione Big Data di LinkedIn
In figura 2.4 è rappresentata l’astrazione high-level delle tre fasi con cui LinkedIn
gestisce l’architettura. Come Netflix e come previsto da questo tipo di concept, la
differenziazione è mappata sulle diverse latenze e le diverse tempistiche richieste per
l’ottenimento dati. Gli obiettivi da raggiungere sono complessi e poche tecnologie a sé
stanti non possono affrontarle, così questa architettura si configura come una
combinazione di frameworks e tecnologie per soddisfare i requisiti richiesti.
Nello stack Online vengono gestite le interazione real-time dell’utente, attraverso
database relazionali come Oracle e un data store distribuito e document-oriented
costruito internamente all’azienda chiamato Espresso. Fa largo uso di indici ed è dotato
di strumenti per modificare le funzionalità e i target di raccolta dei dati. Rientrano in
questo livello la gestione dei profili utente e dei profili azienda, nonché altre
funzionalità come i messaggi.
37
CAPITOLO 2
BIG DATA
Il livello Nearline si occupa di servizi come la ricerca, le news, i suggerimenti
all’utente, i Social Graph che vengono aggiornati quasi costantemente. Il framework di
punta utilizzato in questo stack è Voldemort, sistema di storage distribuito ed altamente
scalabile anche questo autoprodotto da LinkedIn.
Elaborazione batch e ingenti carichi di lavoro analitici sono competenza dello stack
Offline, costituito principalmente da warehouse Hadoop e Teradata. Attraverso
algoritmi di Machine Learning vengono gestiti i dati e organizzati per ranking e
pertinenza.
Non è considerato un livello ma è molto importante nell’architettura di LinkedIn la
Pipeline, ovvero il sistema di interconnessione e comunicazione tra gli stack.
Messaggistica, monitoring, affidabilità, coerenza e bassa latenza sono le caratteristiche
della Pipeline, costruita attraverso un software creato internamente all’azienda, Databus,
in grado di modificare i flussi di acquisizione dati, e Apache Kafka, sistema di
messaggistica open source a bassa latenza ed alta produttività.
A diversi livelli lavorano altri componenti software sviluppati da Linkedin, come ad
esempio Helix, framework per gestione dei cluster che si occupa delle risorse distribuite
e su un cluster di nodi e della loro gestione automatica.
Azkaban è un altro software creato in azienda ed usato per la schedulazione, il
monitoraggio e la configurazione dei workflow, che permette l’associazione di processi
indipendenti in un unico workflow che viene programmato ed eseguito periodicamente.
38
CAPITOLO 2
BIG DATA
2.3.2 Lambda Architecture
L’architettura Lambda [16] per l’analisi dei Big Data è stata originariamente pensata da
Nathan Marz, noto nella community per il suo lavoro nel progetto Storm, che verrà
presentato più avanti.
Questo tipo di architettura propone un paradigma studiato per gestire la complessità
dell’analisi di grandi moli di dati pur essendo in grado di memorizzarli ed elaborarli
efficacemente. Mira infatti a soddisfare le esigenze di un sistema robusto che sia faulttolerant e che sia in grado di gestire una vasta gamma di carichi di lavoro e di casi
d’uso, in cui accessi ai dati a bassa latenza e frequenti aggiornamenti sono necessari. Il
risultato è quello di avere una architettura linearmente ed orizzontalmente scalabile e
distribuita. I principi alla base dell’architettura Lambda sono tre:

Human fault-tolerance: il sistema non deve essere soggetto a perdite o

corruzione di dati dovuti a errori umani o a guasti hardware.
Data immutability: i dati vengono immagazzinati nella loro totalità ma
soprattutto nella loro forma iniziale e grezza, e conservati indefinitamente. Per
fare un’analogia con i sistemi di database relazionale, le operazioni consentite
nello storage dei dati non prevedono una forma di update o di delete dei record

inseriti, ma solo l’insert di nuovi o il select di quelli esistenti.
Recomputation: a causa al sistema fault-tolerance e all’immutabilità dei dati,
deve essere sempre possibile rielaborare i risultati di un precedente calcolo
eseguendo delle query sui dati raw salvati nello storage.
I tre principi sopra esposti si possono riassumere in un’unica equazione che secondo il
concept di questa architettura deve essere alla base di ogni sistema di Big Data
Analytics: query = function (all data). Le query di analisi devono sempre essere
funzione di tutti i dati inseriti e a disposizione del sistema.
39
CAPITOLO 2
BIG DATA
Figura 2.4: Schema high-level dell’architettura Lambda
L’architettura Lambda è divisa in tre livelli, come l’architettura precedentemente
analizzata. A differenza della precedente, il concept e gli scopi perseguiti dalla Lambda
sono diversi e i dati vengono analizzati differentemente. Come descritto in figura 2.4,
non è presente un livello Nearline, in quanto i livelli di latenza comtemplati sono solo
due: Speed (analogo alla Online) e Batch (Offline). Il sistema di storage presente nel
livello intermedio qui viene diviso tra i due livelli Speed e Batch, in cui sono presenti
due diversi sistemi di database, per gestire rispettivamente solo i dati recenti nel livello
Speed e tutti i dati, precedenti e nuovi, nello loro totalità ed immutabilità nel livello
Batch.
40
CAPITOLO 2
BIG DATA
L’architettura Lambda inoltre si basa fortemente sul concetto di Precomputing, simile
al concetto di Model Training della precedente ma differente in termini di workflow e di
trattamento dei risultati.
Di seguito vengono analizzati i livelli dell’Architettura Lambda.

Batch Layer
Il livello Batch è responsabile di due compiti. Il primo di immagazzinare il master
dataset, immutabile e in costante crescita (generalmente viene usato lo storage HDFS di
Hadoop), il secondo di elaborare della views (precomputing) da questo dataset
attraverso algoritmi MapReduce (Hadoop). L’elaborazione di queste views è un
processo continuativo: all’arrivo di nuovi dati essi sono inseriti nello storage e
aggregati nelle views che vengono rielaborate costantemente.
Seguendo la filosofia dell’architettura (query = function (all data)) le views batch sono
generate dall’intero dataset a disposizione, per cui la loro frequenza di aggiornamento
non può essere molto alta. Dipendentemente dalla dimensione del set di dati, ogni nuova
interazione MapReduce che genera una rielabora le views potrebbe anche richiedere
ore.

Speed Layer
Come nello strato Batch, anche nello Speed vengono elaborate delle views dai dati
ricevuti. Compito di questo livello è quello di compensare l’alta latenza del livello
Batch e ciò viene fatto elaborando le views in real-time. Per ottenere questo, le views
real-time si basano solo sui nuovi dati ricevuti, non sulla totalità. Mentre il lato batch è
stato progettato per ricalcolare continuamente le views da zero, le views real-time usano
un modello incrementale: le views non vengono ricreate, ma solo incrementate con il
nuovo contenuto basato sui dati più recenti. Queste views sono intese per essere
41
CAPITOLO 2
BIG DATA
transitorie: non appena i nuovi dati sono stati propagati agli altri livelli, le views relative
a questi dati possono essere scartate. Ciò va a vantaggio della complessità del sistema.
Il framework che soddisfa appieno le esigenze di questo stack è senza dubbio Apache
Storm, sviluppato dallo stesso ideatore dell’architettura Lambda, Nathan Marz, e che
sarà parte integrante in questo lavoro di tesi.

Serving Layer
L’output dello strato batch è un set di file che contengono le views pre-elaborate.
Compito dello strato di Serving di indicizzare e fornire le views al sistema di query, il
quale interrogerà sia le views batch che quelle real-time, unendo i risultati.
Un esempio di software che è possibile utilizzare in questo strato è Cloudera Impala,
un open source SQL query engine per Hadoop.
Figura 2.5: Esempio di implementazione dell’architettura Lambda
42