Fasi e tool del ciclo di vita dei Big Data in informatica

Fasi e tool del ciclo di vita dei Big Data in informatica

Una volta riconosciuti i big data, è necessario pensare a come gestirli e dove memorizzarli, inoltre la molteplicità e la varietà delle fonti da cui possono provenire i dati hanno portato alla nascita di tecnologie apposite in grado di supportare il volume, la varietà e la velocità che caratterizzano i big data. Le tradizionali tecnologie sono risultate poco adatte e poco performanti al fine di gestire e analizzare la moltitudine di dati a cui ci si trova di fronte. Riunire in modo funzionale dati strutturati e non strutturati, proveniente da fonti più disparate, può aiutare le organizzazione a ridurre i costi, migliorare le relazioni con i clienti, sviluppare nuovi prodotti o soluzioni per la collettività, accelerare e sincronizzare le consegne, formulare e rispondere a richieste più approfondite, migliorare e semplificare il processo decisionale, ecc. Come per i tradizionali sistemi di gestione dei dati, anche in questo contesto è possibile parlare di ciclo di vita dei Big Data.

Fasi e tool del ciclo di vita dei Big Data in informatica

Acquisizione dei Big Data

Diversamente dai sistemi tradizionali, la tipologia e la quantità di fonti diverse da cui possono provenire i dati sono molteplici. Prima del fenomeno dei big data si aveva a che fare con fonti operazionali costituite prevalentemente da database relazioni, e quindi caratterizzate da dati strutturati. Ora, la presenza dei social network, dei sensori di controllo, del web e di qualsiasi altro dispositivo elettronico che genera masse d’informazioni, spesso semistrutturate e destrutturate, portano ad avere una moltitudine di fonti dati diverse da acquisire, che utilizzano tecniche diverse. L’acquisizione dei big data può avvenire, a seconda del tipo di fonte, attraverso differenti mezzi, che è possibile suddividuere in quattro categorie:

  1. API (Application Programming Interface)
  2. Strumenti di ETL
  3. Software di Web Scraping
  4. Lettura di stream di dati

Di seguito, per ognuna delle suddette categorie, viene fornita una breve descrizione, facendo riferimento alle principali tecnologie esistenti nel settore.

API (Application Programming Interface)

Le Application Programming Interface sono protocolli utilizzati come interfaccia di comunicazione tra componenti software. In questa categoria rientrano sia i dati provenienti dalle fonti operazionali, sia i dati provenienti dal Web, in particolare dai social network.

Due importanti esempi sono le Twitter API e le Graph API di Facebook. Esse permettono di interfacciarsi con le piattarforme social, esaminando nel primo caso tutti i tweet legati a particolari argomenti d’interesse e, nel secondo caso, tutti i contenuti pubblicitari che corrispondono ai criteri di ricerca. Anche i motori di ricerca, come Google, Yahoo! e Microsoft Bing hanno messo a disposizione API che consentono l’interfacciamento con alcuni dei propri servizi come Google Maps, Windows Azure Market Place. Una funzionalità interessante messa a disposizione da Yahoo! è YQL (Yahoo Query Language), un linguaggio SQL-like per l’interrogazione di numerose sorgenti dati, in grado di restituire URL utilizzabili in un qualsiasi browser o applicazione.

Strumenti ETL

Gli strumenti di ETL, utilizzati nei contesti di Business Intelligence e Data Warehousing, permettono di svolgere i processi di estrazione, trasformazione e caricamento dei dati, provenienti da fonti operazionali e destinati ai sistemi di Data Warehouse. Molti strumenti di ETL, ad oggi, sono già attrezzati per importare i dati, dai formati più disparati, nel sistema di gestione dei big data. Un esempio è Penthao Kettle, strumento di ETL utilizzato principalmente negli scenari tradizionali di Data Warehouse, ma con l’evoluzione dei big data, ha integrato componenti in grado di interfacciarsi con le principali tipologie di fonti big data (esempio Hive, S3, etc…).

Recentemente Apache ha rilasciato Sqoop, uno strumento open source progettato per estrarre e trasferire in modo efficiente dati strutturati da database relazionali (RDBMS) a HDFS (oppure Hive e HBase). Dualmente, una volta che i dati caricati su Hadoop sono stati elaborati, Sqoop è in grado di estrarre i dati da HDFS ed esportarli su database strutturati esterni. Ad oggi, Sqoop è uno dei progetti di punta di Apache; dispone di un’interfaccia a linea di comando attraverso la quale è possibile eseguire le istruzioni per la movimentazione dei dati; supporta in modo nativo i database HSQLSB, MySQL, Oracle, PostgreSQL, Netezza e Teradata.

Software di Web Scraping

Il web scraping è il processo attraverso il quale è possibile raccogliere automaticamente dati dal Web. Esistono diversi tipi di livelli di automazione; per esempio esistono software, come Apache Tika, oppure software per il parser di pagine HTML, e così via.

Apache Tika è uno strumento scritto in Java per l’identificazione e l’estrazione di metadati e testo da numerosi documenti dai formati più diversi. Questo è` un software molto utile per il recupero di dati sia da fonti esterne (Web), sia da fonti interne, come per esempio la documentazione interna di un’azienda. I formati da cui Tika può estrarre dati e metadati sono vari: HTML, XML, PDF, Microsoft Office, Open Document, EPUB, RTF, file compressi, file audio, immagini e persino classi Java e archivi Jar. Tika non esegue solamente l’estrazione di metadati e testo, ma permette anche il riconoscimento della lingua in cui il documento è scritto.

Lettura di stream di dati

La valocità di produzione che caratterizza alcune tipologie di dati ha reso necessarie tecnologie per la cattura in tempo reale e il trasferimento continuo dei dati. Un esempio open source è Apache Flume, servizio distribuito per la raccolta, l’aggregazione e lo spostamento di grandi moli di dati. Un’altra piattaforma per la gestione di stream di dati è Microsoft StreamInsight.

Apache Flume è un sistema distribuito per la movimentazione di grandi quantità di dati da fonti di diverso tipo a diversi tipi di filesystem distribuiti, o altre destinazioni (HBASE, Logger, etc…). Flume è caratterizzato da una architettura semplice e flessibile basata sullo streaming di flussi di dati. L’architettura si basa sul concetto di agent, cioè una componente software che al suo interno gestisce autonomamente la raccolta dei dati provenienti dall’esterno, il passaggio dei dati attraverso il canale, ed infine, la lettura dei dati dal canale e l’instradamento verso la sorgente di destinazione. Un utilizzo piuttosto frequente consiste nel recuperare i dati di log da più web server e salvarli su filesystem distribuiti, dopo averli ricomposti.

I sistemi di Complex Event Processing (CEP) consentono di catturare eventi, anche ad alta frequenza, come per esempio tweet oppure dati inviati da sensori, in modo efficiente, combinandoli ed eventualmente analizzandoli in tempo reale, ovvero mentre sono recepiti dalle fonti, e fornire un risultato, salvandoli su una base di dati. Microsoft StreamInsight è una piattaforma per lo sviluppo di applicazioni di Complex Event Processing (CEP), un insieme di tecnologie per tracciare e analizzare stream di dati, anche provenienti da più fonti. StreamInsight consente di gestire un elevato numero di eventi in maniera efficiente e piuttosto semplice. Attraverso StreamInsight

è possibile sia analizzare i dati e determinare trend e pattern in tempo reale, sia salvare i dati su una o più destinazioni. Microsoft StreamInsight non è l’unico strumento di Complex Event Processing, vi sono altri fornitore che permettono di processare stream di flussi di dati, come Informatica RulePoint, Oracle Event Processing, SAP Event Stream Processor, Amazon Kinesis, e molti altri.

Gestione e Memorizzazione dei Big Data

Negli ultimi anni con l’avvento dei big data è emersa la necessità di lavorare con database sempre più flessibili, ma sopprattutto scalabili. Le tecnologie tradizionali, utilizzate nel contesto dei big data, pongono due problemi che non possono essere trascurati:

  • gestione di una grandissima mole di dati
  • presenza di dati non strutturati o semistrutturati

Questi due aspetti hanno portato allo sviluppo di nuovi modelli di gestione dei dati, che da un lato vanno a coprire queste specifiche esigenze ma dall’altro si allontanano dal modello relazionale.

Fra le varie tecnologie con le quali è possibile far fronte a queste problematiche, la più diffusa e conosciuta è la piattaforma Hadoop: software open source, affidabile e scalabile per il calcolo distribuito. I software di calcolo distribuito sfruttano la capacità computazionale di macchine distribuite, suddividendo tra loro l’esecuzione delle operazioni; in questo modo la capacit´a di ciascun elaboratore si somma a quella degli altri, consentendo di gestire grandi moli di dati. Affinchè ciascuna macchina esegua le operazioni di calcolo è fondamentale l’accesso ai dati, e quindi ad HDFS, il file system distribuito utilizzato da Hadoop. HDFS, diversamente dai tradizionali file system, consente la memorizzare di file di grandi dimensioni (nell’ordine dei Terabytes e Petabytes di dati) su macchine distribuite; sfrutta la replicazione dei dati per ridurre la latenza di accesso ai dati e per la tolleranza ai guasti; inoltre fa uso di commodity hardware per favorire la scalabilità all’aumentare della mole dei dati.

Database NoSql

I file system distribuiti rappresentano una possibile soluzione alla gestione e memorizzazione dei big data, ma non è l’unica; negli ultimi anni, l’esigenza di gestire i big data ha portato alla nascita di un nuovo modello, che prende il nome di NoSQL. L’espressione NoSql, che sta per “Not Only SQL” o “Not Relational“, non è contraria all’utilizzo del modello relazionale, ma fa riferimento a tutti quei database che si discostano dalle regole che caratterizzano i database ralazionali (RDBMS), strutturati intorno al concetto matematico di relazione o tabella.

Al crescere della quantità dei dati, i problemi di scalabilità e i costi legati ai database relazionali sono soltanto una parte degli svantaggi; molto spesso, quando ci si trova di fronte alla gestione di big data, anche la variabilità, ovvero la mancanza di una struttura fissa, rappresenta una problematica da non sottovalutare. I database NoSql, a differenza di quelli costruiti basandosi sul modello relazionale, non presuppongono una struttura rigida o uno schema, dove vengono descritte le proprietà che i dati dovranno avere e le relazioni tra loro. I database NoSql puntano sulla flessibilità e sulla capacità di gestire i dati con strutture difficilmente rappresentabili in formati tabellari.

La definizione di database NoSql, riportata sul sito ufficiale, mette in luce una serie di caratteristiche che contraddistinguono i database NoSql:

  • distributed
  • open-source
  • horizontally scalable
  • schema-free
  • easy replication support
  • simple API
  • eventually consistent / BASE model
  • not ACID property
  • huge amount of data

Non è strettamente necessario che i vari database NoSql rispecchino contemporaneamente tutte le suddette caratteristiche, anche solo alcune di queste possono essere rispettate.

La natura distribuita dei database NoSql fa si che le proprietà ACID (Atomicity, Consistency, Isolation, e Durability), che caratterizzano i database tradizionali, non possano essere applicate a tale contesto; questa è una diretta conseguenza del teorema CAP (Consistency, Availability, Partition Tolerance), il quale afferma l’impossibilità per un sistema distribuito di fornire simultaneamente consistenza, disponibilità e tolleranza di partizione, ma è in grado di soddisfare al massimo due di questi aspetti allo stesso tempo, non tutte e tre. Le tre proprietà appena citate vengono definite nel seguente modo:

  1. consistenza: a seguito di una modifica sui dati, ciascun nodo del sistema dovrà visualizzare la stessa versione dei dati;
  2. disponibilità: ogni nodo di un sistema distribuito deve sempre rispondere alla richiesta di dati a meno che questo non sia indisponibile;
  3. tolleranza di partizione: capacità di un sistema di essere tollerante all’aggiunta o alla rimozione di un nodo del sistema.

I database NoSQL pertanto non offrono garanzie ACID, tuttavia sfruttano proprietà più flessibili e adatte al contesto NoSQL, nello specifico quelle del modello BASE (Basically available, Soft state, Eventual consistency), secondo cui il sistema deve essere sempre disponibile, e la consistenza, che

non viene garantita ad ogni istante, al termine delle operazioni/esecuzioni deve essere verificata. Il modello BASE potrebbe non risultare adatto per ogni situazione, ma risulta essere un’alternativa flessibile al modello ACID per applicazioni che non richiedono espressivamente di rispettare le proprietà ACID. La caratteristica dei database NoSql di poter scalare orizzontalmente consente di fare a meno di hardware performante ad alto costo, sostituendolo invece con commodity hardware. Infatti, le dimensioni di un cluster su cui è installato un database NoSql possono essere aumentate o diminuite, aggiungendo o rimuovendo nodi a piacere, senza particolari problematiche di gestione, realizzando così una piena scalabilità orizzontale a costi moderati.

La “semplicità” legata ai database NoSql, che consente al sistema di scalare orizzontalmente, così da aggiungere nodi in maniera trasparente all’utente, è legata all’architettura hardware utilizzata. I sistemi comunemente utilizzati per ospitare database relazioni rientrano nella tipologia degli SMP (Symmetric MultiProcessing. Questi sono costituiti da più processori che condividono lo stesso sistema operativo, la stessa memoria RAM e lo stesso bus di Input/Output. I sistemi SMP sono molto efficienti nelle applicazioni OLTP, ma presentano limiti quando li si utilizza per elaborare i Big Data. Il limite è dato dal sovraccarico del bus di sistema che costituisce un inevitabile collo di bottiglia. I sistemi MPP (Massive Parallel Processing) si differenziano dagli SMP per il fatto che ogni processore utilizza risorse a esso dedicate, sia per quanto riguarda la RAM sia per quanto riguarda il bus di I/O. I processori comunicano tra di loro attraverso un’interfaccia di messaging. Le limitazioni dovute alle condivisioni del bus vengono meno, rendendo così le architetture MPP adatte alla gestione di grandi quantità di dati.

Come tutti i modelli, anche quello NoSql, oltre ai vantaggi, presenta svantaggi che devono essere tenuti in considerazione nel momento in cui si sceglie il modello da utilizzare in un determinato contesto. Da un lato i tempi di risposta, all’aumentare della mole dei dati, risultano essere più performanti rispetti a quelli riscontrati con i database relazionali, grazie all’assenza delle costose operazioni di join sui dati che caratterizzano gli ambienti SQL. Le prestazioni ottenute in lettura però, vanno a discapito della replicazione delle informazioni, anche se in realtà, i costi sempre meno proibitivi dei sistemi di storage rendono questo svantaggio poco importante.

Dall’altro lato, la mancanza si uno standard universale, come per esempio SQL, che caratterizza i database relazionali. Ogni database appartenente al mondo NoSql, invece, ha a disposizione un insieme di API, metodi di storing e accesso ai dati che differiscono a seconda dell’implementazione che si considera.

Non esiste un’unica tipologia di implementazione, infatti i database NoSql vengono classificati sulla base di come i dati sono memorizzati. A seconda di come vengono memorizzati i dati è possibile individuare diverse implementazione del modello NoSql. Le principali sono:

  • Column-oriented database
  • Key/value store
  • Document-oriented database
  • Graph database

Analisi e Processamento dei Big Data

La varietà, il volume e la velocità che caratterizzano i big data hanno progressivamente cambiato il modo di vedere e fare analisi sui dati. La numerosità e la varietà delle fonti che ad oggi possono essere utilizzate per alimentare i big data, hanno portato nuove opportunità per le organizzazioni, che dovranno o si sono già organizzate per gestire e analizzare tale mole di dati. I dati sono stati raccolti nel tempo e di questi sempre più sono raccolti in tempo reale; la chiave per trasformarli in risorse utile, sta tutta nella capacità di estrarre informazioni nuove ed di valore a supporto dei proccessi decisionali. Serve perciò comprendere quali strumenti e tecnologie utilizzare per ottenere queste informazioni.

In principio, le aziende estrapolavono informazioni e provvedevano ad esplorare e analizzare i dati a consuntivo mediante strumenti OLAP, SQL, Excel, etc. Negli ultimi anni, la competitività sempre maggiore e la velocita` con cui cambiano i fatti, ha fatto nascere tecniche di analisi predittive e di monitoring in tempo reale: si applicano strumenti di data mining e machine learning per la creazione di modelli che permettano di identificare patterns comportamentali e tendenze che possono essere utilizzati per prevedere eventi futuri e ottimizzare i processi di business. L’analisi avanzata dei big data potrebbe avere degli impatti rivoluzionari sul business e sui sistemi informativi di governi, imprese e individui; potrebbe contribuire a risolvere problemi che affliggono da molto tempo le aziende. Gli aspetti che caratterizzano i big data hanno portato allo sviluppo di nuovi strumenti, da poter applicare ed utilizzare per estrapolare valore dai dati. Questi nuovi strumenti, anche se paragonalibi agli strumenti di business analitycs, dovendo trattare grandi quantità di dati semistrutturati ad alta velocità, devono far fronte ad una serie di caratteristiche come, ad esempio, la flessibilità, la complessità e la velocità.

Nel contesto dei big data, molto spesso si parla di Big Data Analitycs: insieme di processi che applicano strumenti di business analitycs in grado di esaminare grandi quantità di dati, caratterizzati da una struttura non fissa, al fine di identificare patterns, correlazioni o andamenti nascosti nella moltitudine di dati grezzi. Gli aspetti che stanno alla base degli strumenti di business analitycs sono gli stessi che vengono applicati nel contesto dei big data, considerando però varietà, velocità e volume, non contemplati negli strumenti tradizionali, ma fondamentali per le performance dei processi in ambito big data.

Molti sono gli strumenti che possono essere applicati, ognuno con le proprie caratteristiche e il proprio obiettivo. In base alla piattaforma adottata in fase di gestione dei big data e a seconda di cosa si intende esaminare, individuare o valutare si sceglierà lo strumento di analitycs che meglio si addice. Fra i principali strumenti utilizzati in ambito big data analitycs è possibile individuare:

  • Pig
  • Hive
  • R
  • Presto
  • Impala
  • Hadoop MapReduce
  • Mahout
  • Drill
  • e altri ancora.

 

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *