Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Basi di Dati Piattaforme per Big Data : Cloudera Anno Accademico 2014/2015 Candidato: Emiliano Conza matr. N46/1349 Alla mia famiglia, ai miei amici, a Ester. Indice Indice .................................................................................................................................................... 3 Introduzione ......................................................................................................................................... 4 Capitolo 1: Big Data ............................................................................................................................ 6 1.1 Modelli dimensionali: le quattro V dei Big Data .................................................................. 8 1.2 Contesti di utilizzo dei Big Data ........................................................................................... 9 1.3 I rischi del fenomeno dei Big Data ...................................................................................... 11 Capitolo 2: Tecnologie per i Big Data ............................................................................................... 14 2.1 Le tecnologie NoSQL.......................................................................................................... 14 2.2 RDBMS vs NoSQL ............................................................................................................. 15 2.3 Tecnologie NoSQL per i Big Data ...................................................................................... 17 2.4 Apache HADOOP ............................................................................................................... 18 2.5 Hadoop: le componenti ....................................................................................................... 19 2.6 MapReduce: hands-on ......................................................................................................... 19 2.7 Hadoop Distributed File System (HDFS): hands-on ........................................................... 21 Capitolo 3: Cloudera .......................................................................................................................... 23 3.1 Cloudera Inc.: un po’ di storia ............................................................................................. 23 3.2 Cloudera Distribution of Hadoop (CDH) ............................................................................ 24 3.3 Cloudera IMPALA .............................................................................................................. 26 3.4 Cloudera IMPALA: Esempio Applicativo .......................................................................... 28 Conclusioni ........................................................................................................................................ 33 Bibliografia ........................................................................................................................................ 34 Ringraziamenti ................................................................................................................................... 36 Introduzione “I dati sono diventati il quarto fattore produttivo, dopo i classici terra, lavoro e capitale.” (Vincenzo Cosenza) L’esplosione delle reti sociali, l’accelerazione senza precedenti dello sviluppo tecnologico, la rivoluzione digitale, rappresentano alcuni degli aspetti che negli ultimi anni hanno portato alla ribalta un nuovo fenomeno, quello dei Big Data. I dati, prodotti dalle più svariate fonti, quali i social networks, i video e le immagini digitali, le reti di sensori e tanti altri mezzi, sono stati recentemente protagonisti di una crescita esponenziale che non intende arrestarsi. Il mondo odierno è quindi sommerso dai Big Data, prodotti con notevole rapidità e nei formati più diversi, la cui elaborazione richiede determinate risorse e tecnologie differenti dai sistemi convenzionali di immagazzinamento e gestione dei dati. Nel 2010, l’allora amministratore delegato di Google, Eric Schmidt, ha affermato che “nel giro di due giorni produciamo la stessa quantità di dati generati dagli albori della civiltà sino al 2003”. In un contesto del genere, è apparso subito chiaro alle aziende che l’analisi di questa grande mole di dati avrebbe potuto costituire un tesoro utile a prevedere, analizzare e risolvere i problemi di migliaia di persone. Combinati con sofisticate analisi di business, i Big Data hanno il potenziale per dare alle imprese intuizioni sulle condizioni di mercato, sul comportamento dei clienti, rendendo l’attività decisionale più efficace e veloce rispetto alla concorrenza. Il World Economic Forum, in un rapporto pubblicato nel 2011 dal Washington Post, li ha inseriti appunto in una nuova categoria di risorse economiche, come una materia prima. Ci si è allora chiesti in che modo fosse possibile sfruttare al meglio le potenzialità dei Big Data. Quale tecnologia avrebbe consentito una efficiente gestione e manipolazione di dati di grandi dimensioni. Tra le soluzioni adottate per affrontare la problematica dei Big Data, quella più in auge è sicuramente rappresentata da Apache Hadoop. Hadoop è un framework Open Source di Apache, concepito per offrire supporto ad applicazioni distribuite e semplificare le operazioni di storage e gestione di dataset di grandi dimensioni, fornendo una alternativa ai DBMS relazionali poco adatti alle trasformazioni dei Big Data. In questo scenario si è inserita la piattaforma software open source “Cloudera”. Cloudera è una distribuzione basata su Apache Hadoop, che propone componenti utili per estendere le potenzialità di base di Hadoop, fornendo un’ampia serie di tool atti ad analizzare una grande mole di dati. Questo elaborato si pone l’obiettivo di effettuare una panoramica sul fenomeno dei Big Data, soffermandosi in particolar modo sulla soluzione proposta dalla “Cloudera Inc.”, azienda leader nel settore delle piattaforme di gestione dei Big Data. La tesi è strutturata come di seguito specificato: • Nel primo capitolo verrà presentato un quadro di quali siano le potenzialità, quali le aspettative future, e quali i rischi del fenomeno dei Big Data. • Nel secondo capitolo si analizzerà la piattaforma Apache Hadoop, introducendo e descrivendo il contesto nel quale si è inserita la distribuzione Cloudera, oggetto dell’elaborato. Ci si soffermerà in un primo momento sulle tecnologie NoSQL, analizzando le differenze con i database tradizionali, i RDBMS. • Infine nel terzo ed ultimo capitolo si entrerà nel cuore del lavoro, introducendo in maniera approfondita CDH (Cloudera Distribution of Hadoop). Verrà presentato un esempio di gestione dei Big Data utilizzando uno dei tool messi a disposizione da Cloudera, ovvero “Impala”. Capitolo 1: Big Data “What is Big Data? A meme and a marketing term, for sure, but also shorthand for advancing trends in technology that open the door to a new approach to understanding the world and making decision.” Il termine Big Data è entrato negli ultimi anni a far parte dell’immaginario collettivo. Con prepotenza si è inserito nel mondo dell’informatica, del marketing e dell’innovazione, diventando uno dei concetti più abusati nelle moderne strategie di mercato. Nella sua accezione più comune, il termine Big Data viene utilizzato per descrivere una raccolta di dataset, ovvero una collezione di dati, aventi una dimensione e una complessità tali da richiedere l’utilizzo di strumenti differenti da quelli tradizionali per poter essere processati o analizzati.[1] I Big Data sono ovunque, ed ogni giorno aprono le porte verso nuovi modi di percepire il mondo e di prendere decisioni. L’evoluzione tecnologica ha infatti causato un notevole incremento dei dispositivi capaci di automatizzare aspetti, operazioni, riguardanti la vita di milioni di persone. Attraverso questi device ogni giorno vengono generati enormi quantità di dati, protagonisti di una crescita senza precedenti, definiti, parafrasando un articolo uscito nel 2010 sul The Economist, un “torrent flowing into every area of the global economy”.[2] Per avere un’idea generale sui numeri che descrivono i Big Data, è possibile osservare i seguenti dati riferiti all’anno 2010:[3] • Google riceve più di 2 milioni di query di ricerca al minuto; • Ogni giorno vengono inviati 340 milioni di messaggi (tweet) tramite il social network Twitter; • Un motore di un aereo, genera circa 10 TB di dati ogni trenta minuti di volo. Numeri, è vero, che da soli non rappresentano di certo una spinta all’innovazione, ma che non passano inosservati catturando l’attenzione della grande maggioranza dei ricercatori. Numeri, che danno vita ad una serie di domande, volte a comprendere quali siano le reali opportunità e le implicazioni derivanti dall’utilizzo e dall’analisi di grandi moli di dati. Ma allora, quale impatto hanno i Big Data nella società moderna? Facciamo giusto un paio di esempi. Uno studio pubblicato nel 2011 da Erik Brynjolfsson e dai suoi colleghi del MIT rivela che le imprese che hanno basato le loro politiche sui dati a disposizione hanno aumentato il tasso di produttività del 5-6% rispetto a quelle che non l'hanno fatto. Netflix, il popolare sito di streaming americano, ha sfruttato il suo database, ricco di ricerche, recensioni degli iscritti, per effettuare uno studio statistico culminato nel finanziamento della serie “House of Cards”. Basata sull’omonimo romanzo di Michael Dobbs, si è rivelata essere un autentico fenomeno mondiale.[4] Insomma, i Big Data rappresentano il nuovo strumento che rende “misurabile” la società. Spingono verso una nuova scienza dei dati, in grado di misurare e, in prospettiva, prevedere crisi economiche, epidemie, diffusione di opinioni, distribuzione delle risorse economiche, bisogni di mobilità.[5] 1.1 Modelli dimensionali: ali: le quattro V dei Big Data Nel corso degli anni molti analisti hanno sviluppato dei modelli dimensionali per definire il concetto dei Big Data. In particolare, le caratteristiche costitutive dei Big Data, possono essere racchiuse nel cosiddetto “Modello llo delle quattro V”, V” avente le seguenti peculiarità: • Volume: E’ indubbio che il volume vada a rappresentare una delle principali caratteristiche dei dati. L’aggettivo “Big” con cui si descrive questo nuovo fenomeno, è significativo in tal senso. Il volume indica la dimensione effettiva del dataset, e si riferisce alla capacità di memorizzare e accedere a grandi quantità di dati (per alcune compagnie nell’ordine dei Petabyte1, per altre nell’ordine degli Zettabyte2). Facebook, solo nel 2012, contava una mole mol di dati pari a 100 petabytes. • Varietà: I dati presi sotto esame risultano risultano essere fortemente eterogenei. Testi, immagini, file audio, video, messaggi, pagine Web, file di weblog e altro ancora producono un costante flusso di dati di differente tipologia. Un’altra classificazione si introduce per distinguere i dati generati automaticamente dai dati generati dagli utenti (come quelli dei social network). In un contesto del genere, appare chiaro che i dati da analizzare sono “dati non strutturati”, difficilmente nte gestibili con i sistemi tradizionali e che richiedono l’introduzione di nuove specifiche tecnologie. • 1 2 Velocità: Le informazioni che costituiscono i Big Data vengono generate in Petabyte: 1015 byte. Zettabyte: 1021 byte. maniera sempre più rapida. Tali moli informative devono essere immagazzinate e analizzate con altrettanta prontezza e rapidità, quasi real time. Individuare una tendenza, un’opportunità prima della concorrenza, è la chiave per trarre vantaggi competitivi ed economici. • Veridicità: Avere tante informazioni su un determinato oggetto o soggetto, non implica necessariamente che quelle informazioni siano utili o cariche di significato. Bisogna eliminare dall’informazione ottenuta quello che è il possibile “rumore” in essa contenuto. La veridicità indica appunto la quantità di valore informativo utile che è possibile estrarre dal dato. A partire dal 2001, quando l’analista Doug Laney aveva definito il modello descrittivo classico dei Big Data come un semplice modello tridimensionale, le caratteristiche sopraelencate hanno subito modifiche e aggiornamenti. Non è da escludere che nei prossimi decenni vengano introdotte altre caratteristiche volte a migliorare l’accuratezza del modello. 1.2 Contesti di utilizzo dei Big Data Non si riescono a comprendere appieno le potenzialità derivanti dall’uso dei Big Data, finché non vengono citati alcuni esempi di utilizzo. E’ quindi opportuno addentrarsi in quelli che sono i contesti di utilizzo dei Big Data, in modo da ottenere un riscontro empirico sui vantaggi che questa tecnologia può assicurare. Uno dei campi applicativi principali, è sicuramente quello aziendale. Ricavando informazioni da tweet, blog, commenti sui social network, l’azienda può facilmente creare un profilo di un cliente ed aggiornarlo con quelle che sono le sue percezioni, impressioni e idee sui vari prodotti. Di conseguenza riesce ad offrire campagne pubblicitarie e prodotti strettamente mirati. Nell’ambito degli acquisti online, le aziende utilizzano strumenti come il “motore di raccomandazioni” (recommendation engine), per suggerire ai clienti prodotti vicini ai loro interessi. Amazon ad esempio, analizzando i dati dei clienti e gli acquisti passati, gestisce il suo recommendation engine utilizzando l’espressione “you may also like…”. Come dichiarato dall’azienda, il motore analitico per i consigli di acquisto ai consumatori, ha avuto un impatto sui ricavi sostanziale, con una crescita delle vendite pari al 30%. Le potenzialità dei Big Data non si fermano a questo, inserendosi con efficacia in altri contesti di utilizzo. Spostando l’attenzione negli Stati Uniti, un interessante esempio applicativo è legato al settore meteorologico. Il “Centro di Analisi degli Uragani” analizza i dati che ha a disposizione provando a stimare l’intensità e i percorsi degli uragani che si abbattono sul suolo americano. Una tecnica singolare prevede l’utilizzo di informazioni sulla localizzazione degli utenti, i cosiddetti GIS DATA (Geographic Information System) per gestire i soccorsi, che vengono così direzionati correttamente. In uno scenario simile, non deve sorprendere il fatto che anche Obama, nelle ultime presidenziali vinte, abbia sfruttato tecnologie di analisi del web per raccogliere una ingente mole di dati. Con queste informazioni, ha con più facilità trovato potenziali votanti, convinto gli indecisi, e indirizzato la campagna elettorale su argomenti di interesse. Analizziamo adesso due recenti esempi di utilizzo dei Big Data. Nel Tour de France 2015, corsa ciclistica che si svolge nel mese di Luglio, ogni bicicletta è stata equipaggiata di un dispositivo GPS, e di molteplici sensori per catturare ogni tipo di dato relativo alla performance del corridore. “Dimension Data”, l’azienda che ha finanziato tale esperimento, ha potuto elaborare e analizzare i dati provenienti dai rilevatori posizionati sotto il sellino Quotidianamente Figura – Si può notare il calo della velocità dei ciclisti in corrispondenza della zona dei rifornimenti. dei si ciclisti. dava la possibilità ai tifosi di visualizzare le informazioni più importanti relative alle prestazioni sportive dei ciclisti, come ad esempio:[6] • La velocità massima, velocità e percorrenza medie per kilometro; • I ciclisti più veloci nelle salite più impegnative; • La velocità media di tutti i concorrenti; • Il corridore che ha mantenuto maggiormente le prime posizioni. Queste ed altre informazioni che i corridori stessi hanno utilizzato per valutare in quale momento della corsa migliorare le proprie performance in modo da avvantaggiarsi sugli avversari. Una novità assoluta di grande impatto, ed anche un modo per gli organizzatori per tenere sotto controllo eventuali prestazioni “anomale” dei ciclisti, in uno sport che si batte in prima linea nella lotta contro il doping. Una tra le ultime innovazioni che sfruttano il fenomeno dei Big Data, risponde al nome di BreezoMeter. BreezoMeter è una piattaforma che permette di reperire, in tempo reale, i dati sull’inquinamento atmosferico e la qualità dell’aria in ogni singola strada di ogni città del globo.[7] Selezionate delle stazioni di monitoraggio, tramite dei sensori, BreezoMeter cattura un ingente numero di dati, con i quali analizza il livello di inquinamento e la qualità dell’atmosfera. L’applicazione, per Android e iOS, ha avuto un grande seguito, ed è stata premiata, insieme ad altre idee, dal presidente Obama, “per l’impegno profuso volto a migliorare la vita delle persone fornendo loro un servizio per risanare l’ambiente in cui vivono”. 1.3 I rischi del fenomeno dei Big Data E’ veramente tutto oro quel che luccica? A rileggere quanto scritto finora, sembrerebbe di si. Tuttavia anche i Big Data presentano alcuni aspetti negativi, vincoli da rispettare che se violati potrebbero vanificarne i vantaggi. Molte aziende considerano i seguenti parametri fondamentali per qualificare correttamente i dati:[8] • Completezza: identificazione degli elementi necessari per descrivere con pienezza una entità; • Accuratezza: i dati devono essere conformi ai valori reali, rispettando determinate regole di precisione; • Consistenza, o coerenza: è opportuno che vi sia assenza di contraddizione nei dati; • Freschezza: i dati forniti devono essere ragionevolmente recenti; • Assenza di duplicazioni: garantire che campi, record, tabelle si presentino all’interno dello stesso sistema oppure in sistemi diversi una sola volta, evitando riproduzioni. Problematiche che affliggono i Big Data riguardano in particolar modo le modalità di estrapolazione dell’informazione da collezioni di dati. Per riuscire a comprendere questo concetto, risulta necessario fare un esempio. Quando in precedenza si è parlato dei vari contesti di utilizzo dei Big Data, non è stato menzionato un servizio web realizzato da Google, il cosiddetto “Google Flu Trends”.[9] Il colosso di Mountain View, nel 2008, finanziò questo progetto dalle ambizioni importanti: il team sosteneva di essere in grado di tracciare e monitorare i casi di influenza negli Stati Uniti, semplicemente avvalendosi delle ricerche, riguardanti patologie, che milioni di utenti effettuavano sul motore di ricerca. Il tutto più rapidamente di quanto riuscisse a fare il Centro per il Controllo e la Prevenzione delle malattie (CDC). Un progetto accurato, economico, rapido, ma soprattutto privo di alcun fondamento teorico! Google Flu Trends era costruito sui dati di ricerca e solo su quelli, ignorando se esistessero o meno dei rapporti causa-effetto tra ciò che gli utenti cercavano e le loro effettive condizioni di salute. Il successo dei dati e dei numeri contro la teoria subì un forte contraccolpo nel 2012, anno che fu caratterizzato da una epidemia di influenza che ebbe una maggiore risonanza mediatica. In un contesto caratterizzato da un allarmismo generale, gli utenti, compresi coloro che versavano in un buono stato di salute, cercarono sul motore di ricerca sempre più informazioni relativamente ai sintomi influenzali. La naturale conseguenza fu che Google sovrastimò di molto l’impatto reale della malattia. Gli ingegneri di Google non si erano preoccupati di creare una qualche base teorica che rendesse più affidabile il servizio. L’assenza di uno studio causa-effetto tra i termini di ricerca e la diffusione dell’influenza, aveva reso fragili le correlazioni tra dati. Venne mostrata al mondo l’altra faccia della medaglia dei Big Data. I numeri, senza contesto, restano solo numeri. In ultima analisi, è opportuno focalizzare l’attenzione su quella che rappresenta la principale critica mossa nei confronti dei Big Data: la tutela della privacy. Il recente scandalo scatenato dai documenti resi pubblici da Edward Snowden rappresenta una ferita ancora aperta che ha lasciato strascichi enormi nell’opinione pubblica. I dati personali utilizzati per applicare tecniche di monitoraggio di massa, venduti a terze parti, hanno trascinato l’NSA (National Security Agency Americana) nell’occhio del ciclone, portando alla ribalta il problema legato all’utilizzo improprio delle informazioni personali. Trovare il giusto equilibrio tra i benefici derivanti dallo sfruttamento dei Big Data e i rischi per la Privacy, è e sarà una delle sfide principali per i legislatori del nostro tempo. Lo sviluppo economico passa infatti attraverso un clima di fiducia che deve instaurarsi tra cliente e venditore. E’ proprio la mancanza di fiducia uno degli aspetti che ancora frena tanti consumatori ad acquistare prodotti online e ad utilizzare nuovi servizi. Capitolo 2: Tecnologie per i Big Data In questo capitolo ci si soffermerà sui principi fondanti della tecnologia NoSQL. In particolar modo verrà effettuato un confronto tra i database tradizionali (RDBMS), che utilizzano il modello relazionale, e i database che sfruttano il modello NoSQL. Questa analisi servirà per introdurre la distribuzione Apache Hadoop, di cui si parlerà in modo approfondito. 2.1 Le tecnologie NoSQL Il fenomeno dei Big Data, come già ampiamente discusso, ha causato un aumento esponenziale dei dati da dover trattare. I sistemi informatici si sono ritrovati a dover elaborare sempre più informazioni, richiedendo una maggiore potenza di calcolo ma soprattutto una migliore organizzazione per gestire efficacemente i dati. Le aziende hanno virato verso una nuova tendenza: garantire il servizio o il contenuto rispetto alla consistenza dei dati o alla correttezza delle informazioni. I nuovi sistemi di gestione che hanno preso vita, differenziandosi dai database relazionali, hanno preso il nome di DBMS NoSQL. Il termine NoSQL, acronimo di Not only SQL, è stato introdotto per la prima volta nel 1998 dall’informatico Carlo Strozzi. Un modo per indicare che tale tecnologia non si oppone all’utilizzo dei database relazionali. Semplicemente si propone come valida alternativa laddove l’applicazione dei database relazionali risultasse poco adeguata. 2.2 RDBMS vs NoSQL E’ di interesse effettuare un confronto tra i database tradizionali, di tipo relazionale, ed i database NoSQL. La sostanziale differenza tra le due soluzioni deriva dal differente obiettivo prefissato: i sistemi relazionali vengono utilizzati con l’intento di mantenere una forte consistenza tra i dati; i database NoSQL sono votati a garantire alti livelli di disponibilità dei dati ed una elevata velocità di recupero, a discapito della consistenza dell’informazione. Per i database relazionali (RDMBS) si parla quindi di proprietà acide, ACID, mentre per i database NoSQL si parla di proprietà base, BASE. Le proprietà ACID indicano:[10] • Atomicity - Atomicità: l’esecuzione di una transazione sul DB deve essere o totale o nulla. Un errore prima del commit deve causare l’annullamento di tutte le operazioni eseguite dall’inizio della transazione. • Consistency - Coerenza: il DB prima e dopo una transazione deve sempre trovarsi in uno stato consistente. L’esecuzione della transazione non deve quindi violare i vincoli di integrità. • Isolation - Isolamento: ogni transazione è indipendente dalle altre. • Durability - Persistenza: quando si raggiunge il commit della transazione, tutte le modifiche in precedenza effettuate non dovranno più essere perse. Le proprietà BASE sono state introdotte da Eric Browers, autore del Teorema CAP. Il Teorema CAP afferma che un sistema informatico distribuito può fornire contemporaneamente solo due delle seguenti garanzie:[10] • Consistency: tutti i nodi vedono gli stessi dati nello stesso momento. • Availability: garantire che ogni richiesta al sistema riceva sempre una risposta. • Partition Tolerance: il sistema continua a funzionare anche a seguito del partizionamento della rete o ad una serie di fallimenti. Quindi sebbene sia auspicabile per un sistema godere delle precedenti garanzie, ciò non è possibile e di volta in volta bisogna scegliere quale garanzia sacrificare, basandosi magari sui requisiti richiesti. Questa scelta non è da “tutto o niente”, ma sono possibili varie sfumature: CA, CP e AP. Notiamo ad esempio che i database tradizionali rientrano in quelli di tipo CA. Questo perché garantiscono coerenza e disponibilità, ma non la tolleranza alle partizioni. I dati vengono memorizzati su un’unica macchina per evitare partizionamenti. L’acronimo BASE indica le caratteristiche che un sistema deve avere rispettando il teorema CAP: • Basically Available: il sistema deve garantire la disponibilità delle informazioni, anche se i dati si trovano in uno stato inconsistente. • Soft State: il DB non deve garantire la consistenza dei dati in ogni istante. I DB possono essere sottoposti a cambiamenti di stato anche in assenza di input: vanno cioè considerati in uno stato non rigoroso, “soft”. • Eventual Consistency: il sistema alla fine, in assenza di ulteriori aggiornamenti, deve diventare consistente. Ciò significa che le inconsistenze sono transitorie. Queste caratteristiche permettono di avere una tecnologia all’avanguardia. I livelli di disponibilità sono alti e senza tempi di attesa. E’ possibile lasciare che l’applicativo scriva su un nodo senza aspettare che le scritture vengano replicate sugli altri nodi. Grazie all’eventual consistency la replicazione può avvenire in seguito in maniera asincrona. 2.3 Tecnologie NoSQL per i Big Data Le tecnologie NoSQL si sono rivelate particolarmente preziose per ciò che concerne l’analisi dei Big Data. I motivi sono facilmente deducibili. In primo luogo va osservato che nei database NoSQL, a differenza dei database relazionali, i dati possono essere conservati in documenti. Pertanto garantiscono:[11] • Leggerezza computazionale: nel caso in cui sia necessario analizzare delle informazioni, si analizzerà un unico documento contenente tutti i dati di interesse e le informazioni ad essi correlate. Si evitano operazioni di aggregazione sui dati, i quali risultano già raggruppati. • Assenza di schema (Schemaless): I Database non richiedono uno schema fisso. Non utilizzando tabelle, permettono di gestire nuovi tipi di dati, compresi quelli non strutturati o semi-strutturati. • Scalabilità orizzontale: L’assenza di uno schema fisso e l’aggregazione dei dati permettono ai database NoSQL di scalare orizzontalmente, distribuendo i dati e le operazioni su macchine fisiche differenti che agiscono parallelamente. Si ricorda che ciò non è possibile nel caso dei database relazionali, i quali scalano in verticale, aggiungendo risorse hardware dedicate per aumentare la capacità del sistema. L’adozione di Database NoSQL risulta quindi essere più competitiva in termini di prestazioni rispetto ai Database relazionali, basandosi su una tecnologia più flessibile e più scalabile. Caratteristiche appetibili per chi deve lavorare con i Big Data, trovandosi a gestire un’importante mole di dati. 2.4 Apache HADOOP All’inizio l’inizio del nuovo millennio Google si trovò ad affrontare il problema riguardante la gestione, elaborazione e memorizzazione dei dati su larga scala. Ci si era accorti che bisognava utilizzare strumenti diversi dai RDBMS per gestire i propri dataset. Una sfida complessa, ma di fondamentale importanza per un motore di ricerca che doveva manipolare una grossa mole di informazioni. Non essendoci alcun software sul mercato capace di dare una soluzione al problema, furono gli stessi ingegneri di Mountain View View a progettare e sviluppare tecnologie che permettessero l’elaborazione distribuita di una ingente mole di dati. I risultati ottenuti risposero al nome di “Google Map Reduce” e “Google File System”. Queste due soluzioni erano finalizzate al calcolo distribuito, distribuito, alla gestione e al salvataggio di file su cluster3 di server. In poco tempo tali tecnologie stuzzicarono l’attenzione della comunità open-source. open Fu Doug Cutting, allora dipendente di Yahoo e sviluppatore di Nutch4, ad interessarsi maggiormente, leggendo ggendo nei progetti di Google la soluzione ai problemi di scalabilità del suo motore di ricerca. Nacque così il framework open source Apache Hadoop, scritto prevalentemente in Java, e finalizzato a processare grandi quantità di dati in modo distribuito. Il nome Hadoop venne scelto da Doug Cutting per omaggiare il figlio, il cui giocattolo preferito era un elefante peluche.[12] 3 Cluster:: insieme di computer connessi tra di loro che formano un sistema distribuito nel quale si effettuano elaborazioni in parallelo garantendo una potenza di calcolo maggiore. 4 Nutch:: motore di ricerca open source basato su Java e sviluppato da Doug Cutting 2.5 Hadoop: le componenti Apache Hadoop è composto da quattro moduli fondamentali: • Hadoop Common: include le utility generali, set di librerie e codici, utili a supportare gli altri moduli. • Hadoop Distributed File System (HDFS): file system distribuito che riprende la logica del Google File System. Si occupa di suddividere i file in blocchi per memorizzarli su un cluster. • Hadoop YARN: è un framework che si occupa di gestire le risorse computazionali di un cluster. • Hadoop MapReduce: sistema di elaborazione parallela, distribuita, dei dati. Nei paragrafi successivi verranno analizzate le due componenti principali: MapReduce e HDFS. 2.6 MapReduce: hands-on Il paradigma MapReduce definisce una strategia per eseguire l’elaborazione dei dati su sistemi distribuiti e con elevato parallelismo. Basa il suo principio di funzionamento sul concetto di programmazione funzionale, in cui la condivisione dei dati è eliminata: i dati sono passati tra le funzioni come parametri o valori di ritorno. Il modello di calcolo deve il suo nome alle due funzioni rappresentative della programmazione funzionale: Map e Reduce. Senza scendere troppo nel dettaglio, in questa prima fase è possibile definirle come segue: • Map: tale funzione legge un insieme di record da un file di input, svolge delle operazioni di filtraggio, e riporta come output una lista di elementi nella forma chiave-valore. Questi sono il risultato dell’applicazione della funzione di input su ogni elemento della lista ricevuta in ingresso. • Reduce: questa funzione utilizza, come input, l’output generato dalla fase di Map. In particolar modo gli elementi con la stessa chiave vengono fusi e ordinati. Nella nomenclatura di MapReduce si utilizza il termine “Job” per indicare un intero ciclo di applicazioni di Map e Reduce fino alla fine dell’elaborazione, ed il termine “Task” per indicare una singola esecuzione di una delle due funzioni che un nodo effettua. Risulta di interesse analizzare, più nel dettaglio, l’architettura del paradigma MapReduce. Il cluster di server può essere visto come un insieme di nodi connessi. I nodi possono essere di due tipologie. Distinguiamo:[13] • Compute Nodes: Anche detti Slave Nodes, sono dei TaskTracker, ovvero semplici esecutori di task. • Master Nodes: Nodi che fungono da JobTracker, ossia destinati a gestire i nodi adiacenti, attivandoli o disattivandoli a seconda dell’operazione che devono effettuare. Come è possibile vedere dalla figura, solitamente per ogni cluster vi è un solo JobTracker. Il funzionamento complessivo passa per i seguenti step: • Un client richiede l’esecuzione di una specifica operazione. Il JobTracker attiva allora una serie di TaskTracker in base alla loro vicinanza ai nodi che contengono i dati di interesse da elaborare. • I TaskTracker estraggono i dati da elaborare ed attivano la funzione Map(). In questo modo vengono prodotte le coppie chiave/valore. Notificano poi al JobTracker di aver terminato il loro lavoro. • Il JobTracker può quindi avviare la fase di Reduce. In questa fase vi è una prima operazione di ordinamento, durante la quale i TaskTracker ordinano i risultati per chiave. Poi vi è una fase di aggregazione che precede l’esecuzione della funzione Reduce, con la creazione dell’output. Il risultato viene salvato in vari file su HDFS. MapReduce rappresenta quindi uno strumento molto potente per poter eseguire in parallelo numerose tipologie di calcolo, permettendo la gestione di quantità enormi di dati. La caratteristica più interessante risiede nel fatto che, essendo un Framework, sta all’utilizzatore specificare gli input, i file di output, le funzioni Map e Reduce tramite implementazioni di interfacce o classi astratte Java. 2.7 Hadoop Distributed File System (HDFS): hands-on HDFS è un file system distribuito sul quale si appoggia Hadoop. E’ stato creato con l’obiettivo di memorizzare grandi quantità di dati, archiviando i file in un cluster di computer visti come una sola unità di memorizzazione. I file vengono suddivisi in blocchi ed ogni blocco viene distribuito in uno o più nodi del cluster. L’architettura è di tipo master/slave. I nodi infatti possono essere di due tipi: si parla di DataNode se hanno semplicemente il compito di conservare i dati, mentre si parla di NameNode se fungono da Master con compiti di gestione del file system. In particolare gestiscono il namespace (l’elenco dei nomi dei file e dei blocchi) e determinano come sono distribuiti i blocchi dati. Inoltre si occupano, tra le altre cose, di creare, modificare ed eliminare i file, oltre a controllarne gli accessi da parte dei client.[14] I blocchi hanno una dimensione configurabile per ogni file5, e sono replicati garantendo ridondanza. Pertanto HDFS garantisce un’alta tolleranza ai guasti, e buone prestazioni in ripresa da malfunzionamenti. Apache Hadoop ha segnato una svolta per i colossi del web, e non solo. Le caratteristiche precedentemente analizzate, permettono di avere una potenza di calcolo ineguagliabile da un sistema RDBMS. Hadoop garantisce una piattaforma di archiviazione per tutte le tipologie di dati. Anziché affidarsi a costosi hardware dedicati, permette una elaborazione parallela, distribuita, di grandi quantità di dati tra server a basso costo. Garantisce una elevata capacità di calcolo riuscendo a scalare in modo quasi lineare su migliaia di server. Insomma, “with Hadoop, no data is too big”.[15] 5 La dimensione di default di un blocco in Apache Hadoop è di 64MB. Capitolo 3: Cloudera Il progetto lanciato da Apache Hadoop ha attirato tanti estimatori, soprattutto tra coloro che volevano cavalcare l’onda del fenomeno dei Big Data. In questo contesto si è inserita la società Cloudera Inc., operante nel settore dell’Information Technology, ed intenzionata a diventare l’azienda leader nel settore delle piattaforme di gestione dei Big Data. 3.1 Cloudera Inc.: un po’ di storia La società è stata fondata nel 2008, sotto la spinta di tre ingegneri di primissimo livello, Christophe Bisciglia, Amr Awadallah e Jeff Hammerbacher, provenienti rispettivamente da Google, Yahoo e Facebook. Nel 2009 si aggiunge Doug Cutting, famoso per aver contribuito alla creazione di Apache Hadoop.[16] In poco tempo l’opinione pubblica inizia ad interessarsi all’azienda, incuriosita dal crack che figure professionali di così alto spessore avrebbero inevitabilmente provocato nell’azienda e sul mercato. Questo interesse è possibile tradurlo in numeri: nel 2012, dopo soli 4 anni dalla nascita, Cloudera poteva già contare su oltre 400 partner e su 30000 persone già formate sulla tecnologia.[17] Nel Marzo 2009, la Cloudera Inc. annuncia lo sviluppo di una distribuzione basata su Apache Hadoop, open-source: il ‘crack’ che il mercato stava aspettando. Nel Giugno 2013, Tom Reilly, in precedenza dipendente di Hewlett-Packard, assume il ruolo di CEO della società. Durante la sua presentazione, afferma che il mercato relativo ai Big Data è ancora in continua espansione, e che Cloudera può aspirare a raggiungere un valore di 20 miliardi di dollari.[18] Poche parole, che servono a garantire all’azienda nuovi ingenti investimenti, frutto di contratti di partnership con società di alto livello. La collaborazione più importante viene instaurata con Intel Corporation, a seguito di un investimento di ben 740 milioni di dollari con i quali Intel acquisisce un pacchetto azionario del 18%. La collaborazione si rivela un successo: nel giro di un anno le due società migliorano le prestazioni della distribuzione Hadoop di Cloudera di almeno due volte e mezza riguardo all’encryption, senza impattare sulle performance del sistema. Inoltre grazie ai recenti processori Xeon di Intel, sono state accelerate le prestazioni di analisi dei dati garantendo una buona sicurezza e affidabilità.[19] 3.2 Cloudera Distribution of Hadoop (CDH) Il progetto più importante portato avanti dalla Cloudera Inc. è rappresentato da CDH, acronimo di Cloudera Distribution of Hadoop. Si tratta di una distribuzione di Apache Hadoop popolare, completa, open-source, proposta da Cloudera. In particolare CDH possiede, oltre alle caratteristiche standard di Hadoop, una serie di componenti aggiuntive, utili ad estendere le potenzialità di base della piattaforma Apache. CDH gode di determinate proprietà, nel seguito specificate:[20] • Flessibile: consente la memorizzazione di qualsiasi tipo di dato e di eseguire svariate operazioni di calcolo riguardanti elaborazioni batch, SQL interattivo, calcolo statistico ed altro ancora. • Integrato: sii integra perfettamente ed in maniera rapida con la piattaforma Hadoop. • Sicuro: permette ermette di processare e controllare co i dati sensibili. • Scalabile ed Estensibile: Estensibile in grado di soddisfare una vasta gamma di applicazioni. • Alta disponibilità: disponibilità permette ermette di eseguire carichi di lavoro particolarmente critici con la massima sicurezza. • Aperto: concede oncede i propri benefici quasi quasi a costo zero, essendo al 100% una licenza Apache open-source. source. CDH, DH, come detto, affianca ad Hadoop un insieme di componenti con lo scopo di offrire una soluzione unificata per elaborazioni batch, SQL interattivo, ricerca interattiva. interattiva In particolare distinguiamo inguiamo i seguenti elementi costitutivi: • Impala: rappresenta un motore per interrogazioni SQL open source. Permette di utilizzare il linguaggio SQL per comunicare con Hadoop come se fosse un database tradizionale. • HBase: è una base dati open source, NoSQL, NoSQL, caratterizzata da una gestione strutturata di dati sotto forma di tabelle di grandi dimensioni. • Cloudera Search:: permette di integrare la piattaforma Hadoop con un sistema di ricerca full-text. text. L’idea è quella di dare a tutti la possibilità di effettuaree ricerche all’interno di un cluster Hadoop, senza per forza utilizzare il linguaggio SQL.[21] • Apache Spark: è un framework complementare al MapReduce di Apache, che si prefissa l’obiettivo di migliorarne le performance, velocizzando l’elaborazione dei dati in memoria. 3.3 Cloudera IMPALA Cloudera Impala è un progetto software open source realizzato da Cloudera, e rappresenta una delle novità più interessanti della società di Palo Alto. La nascita di Impala risale al 2012, quando venne rilasciata una versione di test beta pubblica. L’azienda era affascinata dall’idea di portare un supporto per effettuare query real-time all’interno di Apache Hadoop. Cloudera Impala è appunto un motore per interrogazioni SQL ad elaborazione parallela di massa (MPP6) per dati archiviati in computer in cui viene eseguito Apache Hadoop.[22] Il progetto permette agli utenti di eseguire query SQL per i dati memorizzati in HDFS e HBASE in tempo reale, senza richiedere lo spostamento dei dati o la loro trasformazione. Inoltre utilizza gli stessi formati di file, i metadati, la sintassi SQL, i driver ODBC e l’interfaccia utente di Apache Hive, MapReduce ed altri software Hadoop, fornendo una piattaforma familiare e unificata per le query real time. Per ottenere una bassa latenza, Impala ‘elude’ MapReduce ed accede direttamente ai dati attraverso un apposito motore di query distribuito. Evita le operazioni di Map/Shuffle/Reduce e la latenza che l’esecuzione di queste operazioni avrebbe comportato. Dal punto di vista architetturale: 6 MPP: con la sigla MPP si indica l’elaborazione ad elevato parallelismo che è un tipo di calcolo parallelo dove centinaia o migliaia di processori sono usati in modo coordinato all’interno di unico grande computer. Il server Impala è costituito da tre componenti principali: l’impala ‘Daemon’, l’impala ‘Statestore’ e l’impala ‘Catalog Service’. Nel dettaglio: • Il cuore dell’architettura è rappresentato dall’impala “Daemon”. E’ un processo attivo su ogni nodo del cluster, conosciuto come “impalad process”. Ha il compito di leggere e scrivere file dati, accettare query trasmesse dall’impala-shell, jdbc, odbc. Inoltre parallelizza le query distribuendo il carico di lavoro sugli altri nodi. • L’impala “Statestore” controlla frequentemente lo stato dei vari “deamons” su tutti i nodi del cluster, trasmettendo poi le sue conclusioni ad ogni nodo. Il processo demone che lo rappresenta è chiamato “statestored”. • L’impala “Catalog Service” trasmette le modifiche ai metadati, a seguito di istruzioni SQL, a tutti i nodi del cluster. E’ fisicamente rappresentato da un processo demone chiamato “catalogd”. Nel dettaglio, l’esecuzione di una Query su Impala passa attraverso i seguenti step: • La richiesta di query viene inviata ad uno specifico demone impala nel cluster tramite ODBC/JDBC, Beeswax (Gui) o Shell. Il nodo dove la query viene eseguita viene registrato e diventa il nodo coordinatore centrale. • Il “query planner” genera un “query plan” basandosi sulle informazioni dei metadati. Queste informazioni possono essere salvate nella cache, oppure necessitano di essere recuperate e aggiornate dall’Hive metastore, dall’HDFS namenode o dall’impala statestore. • Il “query coordinator” invia una richiesta di esecuzione ad ogni “query execution engine” presente nel cluster. • Il “query execution engine” esegue un frammento di query sui propri dati locali con query aggiuntive che vengono eseguite su ulteriori nodi impala se necessario. • Il risultato finale viene trasmesso tra gli impala deamons e poi ritorna al client.[24] 3.4 Cloudera IMPALA: Esempio Applicativo L’elaborazione dei dati che avviene localmente su ogni nodo, permette di evitare i colli di bottiglia della rete. Inoltre nessuna forma di conversione dei dati è richiesta, così da eliminare questa forma di overhead. Insomma, l’architettura sviluppata da Impala permette di effettuare query su tutti i dati, immediatamente, con un delay pressoché nullo.[25] Un riscontro pratico a quanto affermato è possibile trovarlo effettuando un confronto tra Hive e Impala, analizzando i tempi di risposta alle query. Hive è un’infrastruttura datawarehouse7 costruita su Hadoop utile per effettuare analisi di Big Data. Si avvale del file system HDFS e di MapReduce, ma permette l’utilizzo di un linguaggio SQL (Hive-QL) per effettuare query sui cluster Hadoop. Tale strumento è molto adatto per lavorare in modalità batch, non interattiva, ma paga in termini di prestazione per analisi real time. Tecnicamente Impala ha i suoi processi demoni che vengono eseguiti sui nodi del cluster e che fungono da cache per alcuni dati presenti su HDFS: in questo modo si riescono ad avere efficienti tempi di risposta alle query, eludendo l’overhead che l’esecuzione di vari job MapReduce provocherebbe. Relativamente alle query legate ad operazioni di I/O, Impala guadagna in performance in un range che va dalle 3 alle 5 volte. Per query più complesse, che in Hive richiederebbero numerosi fasi di MapReduce, il guadagno in performance si avvicina al 50%. Infine, in uno scenario nel quale le tabelle risiedono in memoria centrale, usata come cache, Impala risulta essere quasi 100 volte più veloce rispetto ad Hive. Cloudera Inc. fornisce una Quick Start VMs su cui è eseguito CentOS 6.4, disponibile per Virtual Box, contenente un cluster di Apache Hadoop (nodo singolo) e Cloudera Manager per gestirlo. Per avere fluidità nell’utilizzo, la macchina virtuale richiede un minimo di 4gb di ram. 7 Data Warehouse: archivio informatico contenente i dati di una organizzazione, progettati per consentire di produrre facilmente analisi e relazioni utili a fini decisionali-aziendali. Da terminale è possibile utilizzare Cloudera Impala ed Hive. Nel seguente elaborato verrà quindi valutato praticamente come cambia il tempo di risposta ad una query tra le due tecnologie. Per poter utilizzare Impala, si utilizza l’espressione “impala-shell”. L’esempio prevede la creazione di un database, chiamato “University”, e composto da tre tabelle, ovvero “Studenti”, “Corsi”, “Carriere”. La creazione del database e delle tabelle viene effettuata utilizzando il linguaggio SQL di Impala, come di seguito mostrato: La creazione del database precede il suo utilizzo (“use”), ed apre alla creazione delle tabelle (“create table”). Possono essere mostrate utilizzando le istruzioni “show” e “describe”: Le tabelle vanno popolate con i dati. Verrà mostrato un esempio di inserimento dei valori nella tabella Studenti: Tramite una semplice query di selezione, è possibile constatare come la creazione delle tabelle e l’inserimento dei valori sia andato a buon fine. Il database è popolato: A questo punto è possibile effettuare una query un po’ più complessa, che richieda l’utilizzo di uno o più JOIN, in modo da valutare il tempo di risposta con Impala e poi confrontarlo con i risultati che si ottengono usando Hive. Si ricercano esempio il nome esami, con ad degli relativa votazione e data, sostenuti dallo studente ‘Emiliano Conza’. Come terminale, suggerisce il tempo il di risposta supera di poco un secondo. Il risultato è stato cerchiato in rosso. Per uscire dall’impala-shell, basta utilizzare l’istruzione “quit”. Il database creato con Impala può essere utilizzato anche da Hive. Risulta interessante sottoporre ad Hive la stessa query, valutando il tempo impiegato per ricevere il risultato. Il risultato finale è ovviamente lo stesso di quello ottenuto con Impala. Tuttavia, il tempo di risposta alla query è notevolmente aumentato con Hive. Addirittura pari a circa 69 secondi, più di un minuto, come è possibile vedere nell’immagine seguente. Un risultato questo che si amplifica considerando la grande mole di dati su cui queste piattaforme sono solite lavorare. Nonostante ciò, Impala non sostituisce Hive, dovendo confrontarsi ad esempio con una bassa tolleranza ai guasti e con numerosi casi nei quali una tecnologia basata su MapReduce risulta più efficiente. Impala trova terreno fertile tra i Data Scientist o tra gli analisti di business che sono semplicemente interessati a dare un’occhiata e ad analizzare alcuni dati senza necessitare di tecnologie particolarmente robuste. Conclusioni Nel presente elaborato è stata focalizzata l’attenzione sul fenomeno dei Big Data, sempre più rilevante all’interno della società moderna. La produzione dei dati segue una crescita esponenziale, ed è stato mostrato come l’analisi efficiente di tali dati può portare benefici alle aziende operanti in qualsiasi settore dell’economia. Sarà interessante scoprire in che modo le società sapranno plasmare la nuova figura professionale del Data Scientist, con competenze complete per la corretta analisi dei dati. Sono state inoltre introdotte le tecnologie NoSQL, sottolineando in che modo si differenziano dalle tecnologie classiche per la gestione dei Database e i vantaggi che permettono di ottenere lavorando con una grande mole di dati, siano essi strutturati o non strutturati. Un concetto utile per poter introdurre Apache Hadoop, soluzione innovativa alla problematica relativa alla gestione dei Big Data. Nel dettaglio sono state mostrate le componenti fondamentali di Hadoop, capace di gestire enormi quantità di dati su sistemi a basso costo sfruttando il distributed computing. In questo contesto è stata inserita un’analisi sulla Cloudera Inc., azienda leader per quanto riguarda le piattaforme di gestione dei Big Data. Tra le varie tecnologie che mette a disposizione, si è scelto di analizzare nel dettaglio la soluzione proposta da Cloudera Impala, effettuando un confronto pratico con un’altra infrastruttura costruita su Hadoop, ovvero Hive. Il mercato delle soluzioni tecnologiche relative al fenomeno dei Big Data è solo agli albori della sua esistenza. Tanto i Big Data quanto le piattaforme utili a gestirli sono destinati a far parlare di sé ancora per tanti anni. Bibliografia [1] https://it.wikipedia.org/wiki/Big_data, Big Data, Wikipedia 2015. [2]http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation, “Big Data: The next frontier for innovation, competition and productivity”, 05/2011. [3] http://marciaconner.com/blog/data-on-big-data/, “Data on big data”. [4]https://www.mckinsey.it/idee/chi-trova-i-big-data-trova-un-tesoro, “Chi trova i big data trova un tesoro”, Il Sole 24 Ore, Barton D., 13/12/2012. [5] http://novareview.ilsole24ore.com/lavitanova/230787, “Siamo tutti pollicini digitali”, Dino Pedreschi, 06/12/2012. [6] http://www.bitmat.it/blog/news/46246/dimension-data-sale-in-sella-con-il-tour-de-france, “Dimension Data sale in sella con il Tour de France”, 08/07/2015. [7] http://thenexttech.startupitalia.eu/2015/07/15/breezometer-la-startup-che-monitora- linquinamento-dellaria-con-i-big-data/, “BreezoMeter la startup che monitora l’inquinamento dell’aria con i big Data”, 15/07/2015. [8] http://www.soiel.it/res/news_dettaglio/id/208/p/bigdataquality_gartner, “Qualità dei dati e dei Big Data: stessi principi, nuova tattica”, 25/07/2012. [9] https://en.wikipedia.org/wiki/Google_Flu_Trends, “Google Flu Trends”, Wikipedia 2015. [10] http://www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing/, “ACID vs BASE: The Shifting pH of Database Transaction Processing”, 01/03/2012. [11] http://blog.artera.it/programmazione/sql-nosql-database-non-relazionali, “SQL e NoSQL: cosa sapere sui database non relazionali”, Giovanni Barbieri, 24/06/2014. [12] https://en.wikipedia.org/wiki/Apache_Hadoop, “Apache Hadoop”, Wikipedia 2015. [13] http://www.html.it/pag/51684/map-reduce-architettura-e-funzionamento/,“MapReduce: Architettura e funzionamento”, Gaetano Esposito, 26/01/2015. [14] http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html, “HDFS Architecture Guide”. [15] http://www.cloudera.com/content/cloudera/en/about/hadoop-and-big-data.html, “Hadoop and Big Data, Cloudera Inc.”, 2015. [16] https://en.wikipedia.org/wiki/Cloudera, Cloudera Inc., 2015. [17] http://juku.it/due-parole-su-big-data-e-cloudera/, “Due parole su Big Data e Cloudera”, Enrico Signoretti, 2012. [18]http://www.impresacity.it/big-data-analytics/3448/cloudera-il-big-data-che-piace-al-mercato.html, “Cloudera, il big data che piace al mercato”, 21/03/2014. [19] http://www.techweekeurope.it/security/intel-e-cloudera-bilancio-positivo-per-il-loro-hadoop-81283, “Intel e Cloudera: bilancio positivo per il loro Hadoop”, TechWeekEurope, 12/05/2015. [20] http://www.cloudera.com/content/cloudera/en/products-and-services/cdh.html, Cloudera Inc., 2015. [21] http://www.hostingtalk.it/cloudera-hadoop-una-ricerca-per-tutti_-c0000061G/, “Cloudera Hadoop: una ricerca per tutti!”, HostingTalk, 2013. [22] https://it.wikipedia.org/wiki/Cloudera_Impala, “Cloudera Impala”, Wikipedia 2015. [23]http://www.cloudera.com/content/cloudera/en/documentation/cloudera-impala/v2-0x/topics/impala_components.html, “Components of the Impala Server”, Cloudera Inc., 2015. [24] http://training.cloudera.com/elearning/impala/, “An Introduction to Impala”, Cloudera Inc., 2015. [25]http://blog.cloudera.com/blog/2012/10/cloudera-impala-real-time-queries-in-apache-hadoop-for-real/, “Cloudera Impala: Real-Time Queries in Apache Hadoop, for Real”, Cloudera Inc., 2015. Ringraziamenti Proviamo ad immaginare il percorso universitario come una lunga strada che si snoda attraverso monti e litorali. Ognuno è protagonista di determinate esperienze che portano a definirla, rendendola unica. Nella soggettività che la creazione di questa strada implica, trovano tuttavia spazio componenti oggettive, comuni in ogni percorso. Ci sono i corsi da seguire, che io vedo come tante stazioni di servizio. Ci sono gli esami da sostenere, autentiche curve a gomito che si trovano scalando collinette e monti. C’è la firma, sul libretto, che ti riporta su un lungomare arioso, a passeggiare mentre un sole caldo si staglia in cielo. Stazioni di servizio, strade più o meno percorribili… a voi non sembra un paesaggio povero, spoglio? Sì, lo è! Lo è perché effettivamente manca il meglio, quel ‘quid’ che rende gli anni universitari speciali: gli incontri, le nuove esperienze, le amicizie. Insomma, ritorniamo su quella strada, ma questa volta aggiungiamo un po’ di verde sulle montagne, qualche scoglio in mezzo ad un mare limpido e calmo, vialoni alberati, parchi, castelli e potrei proseguire così all’infinito, popolando un paesaggio immaginario nello stesso modo in cui numerose persone, in questi anni universitari, hanno popolato la mia vita. E’ a queste persone che voglio dedicare qualche minuto, riservando loro un po’ di spazio su questa tesi. Innanzitutto, ne approfitto per ringraziare il mio relatore di tesi, l’Ing. Vincenzo Moscato, per i suoi utili consigli durante la stesura dell’elaborato. Grazie a Giovanni, mio primo coinquilino, che ha saputo insegnarmi, quando ero solo una matricola diciottenne inesperta, l’affascinante arte del vivere da studente fuorisede. Grazie ai miei colleghi, Luca, Boffa, Samantha, Livio, Davide, Valentina, Brenda, Frank, Andrea, Kevin, che in un modo o nell’altro sono stati presenti durante la mia esperienza universitaria, non facendo mai mancare il loro supporto e la loro affabile compagnia. Grazie a Giuseppe, Gaetano, Francesca, Raffaele, Antonio, Nicolò, Sabrina, Roberto, e ai nostri pranzi ‘semestrali’ durante i quali le soddisfazioni o le delusioni universitarie passavano al vaglio di un buon vino paesano. Grazie alle mie “coinquiline” preferite, Stefania, Luisa, Marilena, che mi hanno accolto come uno di casa, viziandomi con pasti prelibati, e sostenendomi durante il mio percorso. Grazie agli amici di Napoli, Federica, Davide, Egidio, Simona, Frosone, Benito, presenza costante in questi anni, compagni di uscite serali, tra passeggiate in centro e concerti ‘degradati’. Grazie ai miei coinquilini, Tommaso, Salvatore, Michele e Lorenzo, che hanno viaggiato insieme a me, aiutandomi a realizzare i miei obiettivi, condividendo lo stesso tetto e gli stessi interessi. Grazie agli amici del paesello, Angelo, Antonio, Giuseppe, Marco, compagni da una vita, essenziali in quei weekend nei quali tornavo in paese con la necessità di staccare la spina. Grazie ai miei cugini, tutti. Grazie a Marianna e Tiziana, la mente ed il braccio per le bomboniere. Grazie a Francesco e alla nostra vacanza londinese. Grazie a Roberto, sostegno fondamentale nel primo anno di università, tra partite del Napoli, concerti e numerose invenzioni culinarie…notturne. Grazie a Filippo, un fratello acquisito, collega, amico, compagno di stanza, compagno di avventure. Alla scoperta dei tesori di Napoli, sempre in rampa di lancio per fare nuove esperienze. Grazie al proiettore ed al giradischi, al whiskey canadese ed al punch abruzzese, alla pasta e patate con provola alle quattro del pomeriggio e alle frittatine da Di Matteo. Un ringraziamento che parte dal profondo del cuore ad Ester, entrata a far parte della mia vita nel periodo più difficile della mia carriera universitaria. Grazie perché mi hai dato la forza per rialzarmi, per continuare a perseguire con convinzione i miei obiettivi, con la tua semplicità disarmante. Grazie per essere stata il regalo più inatteso ed entusiasmante di questi anni universitari. Infine un ringraziamento speciale va alla mia famiglia, per aver avallato il mio desiderio di studiare a Napoli e per essere stata sempre presente durante il mio percorso universitario. Grazie a mio fratello Nicola per i consigli che ha saputo darmi e per tutte quelle giornate trascorse insieme, arrivate quasi per caso, che ricordo sempre con piacere. Grazie alle telefonate cariche di significati con mio padre. Grazie, infine, a mia madre, per non aver fatto mai mancare nulla nella mia valigia, assecondando sempre, con naturalezza, ogni mia richiesta. Emiliano