Tecnologie Big Data: acquisizione, immagazzinamento, trasformazione

Tecnologie Big Data 00

Nell’articolo di oggi ci dedicheremo insieme a una interessante panoramica relativa alle tecnologie Big Data, che di fatto andrà basata su quello che può essere definito il “ciclo di vita” dei Big Data stessi. Nello specifico, esso include le seguenti fasi:

  • Acquisizione o data ingestion
  • Immagazzinamento e organizzazione
  • Trasformazione e analisi

Cominciamo dunque col parlare delle tecnologie Big Data relative al processo di acquisizione dei dati.

L’acquisizione dei dati può essere eseguita tramite differenti modalità, generalmente in funzione del formato e della fonte dei dati stessi. Ad esempio, per i dati presenti su RDBMS il trasferimento potrà avvenire con l’ausilio di tool come Sqoop (parte della piattaforma Hadoop), o in alternativa con strumenti quali gli ETL tradizionali dotati di connettori per le tecnologie dei Big Data (Hadoop HDFS, HBase e altri database NoSQL).

Per quanto riguarda invece i dati a velocità elevata e prodotti “in continuo”, si dovrà optare per strumenti di data streaming che sappiano tenere conto di queste specifiche tecniche: nuovamente, Hadoop fornisce la risposta con i suoi componenti Kafka, Storm e Flume.

La connessione con le fonti dei dati avviene tramite dati ODBC o API di altro genere messe a disposizione dal data provider. Ricordiamo che le Application Programming Interface (API) sono protocolli che vengono utilizzati come interfaccia di comunicazione tra diversi componenti software e che consistono in cosiddetti “insiemi di routine”: strutture dati o variabili che permettono al programmatore di richiamare le funzionalità di un’applicazione di terze parti.

I due più noti esempi di API sono le Graph API di Facebook e la Twitter API, che consentono di interfacciarsi con le due piattaforme: nel caso di Twitter, l’API permette di esaminare tutti i tweet legati all’argomento di interesse, mentre nel caso di Facebook ad essere analizzati sono tutti i contenuti pubblici o accessibili tramite le impostazioni di privacy e amicizia, comunque rispondenti a specifici criteri di ricerca.

Ovviamente, le API sono messe a disposizione anche dai motori di ricerca: si pensi ad esempio a Yahoo!, che dispone di un linguaggio SQL-Like con il quale effettua interrogazioni sul proprio motore.

Passiamo ora delle tecnologie Big Data relative al processo di immagazzinamento e organizzazione dei dati.

La conservazione delle informazioni, come abbiamo già accennato nei nostri precedenti articoli, è assai difficoltosa se i Big Data sono gestiti attraverso le tecnologie tradizionali: la mole di dati è infatti enorme, e questi sono spesso semi-strutturati o addirittura non strutturati.

Per gestire i Big Data in questa fase è dunque necessario utilizzare soluzioni più evolute e performanti, quali la piattaforma Hadoop oppure i database NoSQL.

Inserisci la mail e scarica il primo capitolo

Inserisci l’indirizzo Email

Autorizzo il trattamento dei miei dati personali ai sensi del Dec.Lgs. 30 giugno 2003, n. 196

Ma cos’è Hadoop?

Si tratta di un affidabile e scalabile software Open Source per il calcolo distribuito. Quest’ultimo altro non è che un calcolo che avviene su un sistema di computer autonomi, ma collegati tra loro in rete. Software come Hadopp sfruttano la rete dei computer, suddividendo su di essi l’esecuzione di specifiche operazioni e proprio grazie a questo approccio la capacità di calcolo di ciascun elaboratore si somma a quella degli altri. Il risultato finale è la corretta gestione di problemi complessi o di grandi quantità di dati che non sarebbero invece risolvibili attraverso un singolo elaboratore.

Hadoop nasce con lo scopo primario di essere utilizzato sul cosiddetto “commodity hardware”, ossia un sistema a basso costo che non garantisce il livello di affidabilità tipico di macchine più costose. Il grande vantaggio di Hadoop è quello di garantire la disponibilità del sistema e di prevenire la perdita di dati a fronte di problemi hardware, oltre naturalmente all’assenza dei costi di licenza e all’abbattimento dei costi per la costruzione di cluster.

Ma quali sono le componenti basilari di Hadoop? Essenzialmente, si tratta di:

HDFS: il file system distribuito che fornisce un’elevata capacità di accesso ai dati
YARN: il sistema di scheduling e di gestione delle risorse del cluster
MapReduce e Tez: i sistemi di parallel processing di grande quantità di dati

Va poi precisato che in Hadoop si innestano svariati altri progetti di Apache, alcuni dei quali completamente integrati nel framework e in grado di funzionare soltanto all’interno di esso. Si tratta di software così numerosi e interconnessi che un termine specifico è stato coniato per descriverli: “ecosistema Hadoop”.

Vi sono poi altre componenti che possono lavorare in unione con Hadoop, quali Spark, ma che comunque non dipendono completamente da esso.

Affinché Hadoop possa operare al meglio come sistema per il calcolo distribuito è necessario ovviamente che ciascun computer possa avere accesso ai dati: tale accesso è fornito da HDFS, che, tra l’altro, garantisce che i dati siano ridondati nel cluster così da evitare problemi nel caso di eventuali guasti di un nodo. I dati accettati da HDFS sono di qualunque formato, sia strutturato che non e le operazioni di calcolo avvengono utilizzando MapReduce, una componente che lavora suddividendo una grande mole di dati in piccole parti processate in modo autonomo. Una volta che ciascuna parte del problema è stata calcolata, i vari risultati parziali vengono ricondotti a un unico risultato finale.

Come già detto, Hadoop dispone di un’architettura molto sensibile e permette la realizzazione di motori di calcolo distribuito facilmente innestabili nella piattaforma. Bisogna però specificare anche che HDFS non è altro che un file system, ossia un sistema di organizzazione dei dati che, per sua stessa natura, non può replicare di certo le funzionalità di un database. Ecco perché Hadoop dispone anche, all’interno del proprio ecosistema, di applicazioni come HBase che sono database a tutti gli effetti.

In alternativa ad Hadoop, è possibile lavorare su dati con strutture variabili e non adatti a una rappresentazione tabellare con i tanti sistemi facenti parte dei database NoSQL: Cassandra, Berkeley DB, MongoDB, Neo4J, per fare qualche esempio. Ciascuno di essi è un motore database che non aderisce al modello relazionale, che vede invece gli RBDMS (Relational Database Management Systems) strutturati attorno al concetto matematico di relazione, altrimenti detta “tabella”.

Concludiamo parlando delle tecnologie Big Data relative al processo di trasformazione e analisi dei dati.

Sebbene queste due ultime operazioni si svolgano in momenti diversi e con scopi diversi, si verifica una sorta di sovrapposizione tra gli strumenti utilizzati.

Lo strumento nativo di Hadoop per la realizzazione di trasformazioni dei dati, calcoli e analisi si chiama MapReduce: complesso e non alla portata di tutti gli utilizzatori della piattaforma, necessita di una profonda conoscenza del linguaggio Java per poter essere utilizzato al meglio.

Per interagire con i dati in Hadoop è possibile tuttavia utilizzare altri strumenti, quali ad esempio Pig, che è caratterizzato da un approccio procedurale e da un linguaggio (Pig Latin) simile all’SQL per diversi aspetti. In buona sostanza, Pig Latin permette di scrivere sequenze di operazioni di trasformazione in modo semplice, convertendo direttamente dalla piattaforma i comandi nelle rispettive fasi MapReduce. Dettaglio non di poco conto: Pig può essere utilizzato sia per la realizzazione di operazioni di data ingestion che per l’analisi e l’elaborazione dei dati.

I dati possono poi essere preparati con Hive, definito come il sistema di “data warehousing” di Hadoop: consente di aggregare dati, eseguire query e analizzare grandi dataset utilizzando il linguaggio HiveQL, che ormai quasi del tutto sovrapponibile all’SQL.

Se invece le operazioni da compiere sui Big Data sono più complesse, bisognerà mettere da parte i due strumenti finora elencati e favorire Mahout, proveniente da Apache e ideale ad esempio per l’esplorazione dei dati con tecniche di analisi predittiva. Mahout è una piattaforma machine learning dedicata in particolare alla costruzione di recommendation engine, al clustering e alla classificazione.

L’ultimo tool di calcolo distribuito che vogliamo citarvi è infine Spark, che racchiude in sé svariate, interessanti funzionalità, tra cui:

Data ingestion (per esempio via streaming)
Elaborazione e trasformazione dei dati
Analisi attraverso un’interfaccia SQL
Analisi avanzata tramite la libreria di machine learning
Sempre più spesso Spark viene utilizzato in combinazione con Hadoop per la sua efficacia nella gestione dei Big Data.

Avatar User 2 1549298890

Alessandro Rezzani

Sono un consulente senior nell’ambito della Business Intelligence, specializzato in analisi di Big Data e tecniche di Analisi Predittiva. Nel 2016 ho fondato Dataskills, presto diventata azienda di riferimento nel territorio italiano per soluzioni di Data Science. Sono anche ricercatore e professore presso l’Università Bocconi di Milano.
Leggi la mia Biografia

Leave A Comment

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Iscrivi alla newsletter














    Dichiaro di aver letto ed accetto l’informativa sulla privacy

    Avatar User 2 1549298890

    Alessandro Rezzani

    Sono un consulente senior nell’ambito della Business Intelligence, specializzato in analisi di Big Data e tecniche di Analisi Predittiva. Nel 2016 ho fondato Dataskills, presto diventata azienda di riferimento nel territorio italiano per soluzioni di Data Science. Sono anche ricercatore e professore presso l’Università Bocconi di Milano.
    Leggi la mia Biografia