DataSkills è una realtà che opera a tutto campo nel mondo della data science

Tecnologie Big Data: acquisizione, immagazzinamento, trasformazione

big-data-thumb

Tecnologie Big Data: acquisizione, immagazzinamento, trasformazione

29 novembre 2017
|
0 Comments
|

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.

Scarica il primo capitolo

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.

Big Data Analytics. Il manuale del data scientist

Big Data Analytics. Il manuale del data scientist

Compra su Amazon