Come utilizzare Hadoop e perché è fondamentale per i Big Data

Mentre grandi quantità di dati non strutturati rappresentano una sfida costante per le infrastrutture IT, ci sono tecnologie che permettono di gestire e rendere utile e visibile un numero sempre più crescente di informazioni. In questo articolo parliamo dell'ecosistema di una di queste tecnologie, Apache Hadoop e ne analizzeremo i vantaggi, le caratteristiche ed i limiti fino ad arrivare alle più recenti implementazioni.

Introduzione

Ogni giorno assistiamo ad un costante aumento di dati provenienti da più fonti, strumenti o sistemi: i Big Data. Allo stesso tempo, la loro origine è sempre più complessa: aumentano i dati non strutturati e di conseguenza si evidenziano i limiti della gestione di database relazionali. Questo impone nuovi approcci, oltre che nuove professionalità, in grado di gestire e semplificare le informazioni. Tra le tecnologie in grado di soddisfare le esigenze dei Big Data, c’è Apache Hadoop, riconoscibile dal suo caratteristico elefantino giallo. Progettato come un framework per l'elaborazione di grandi quantità di dati, Hadoop è open source, fa parte del progetto Apache ed è scritto in Java. Viene utilizzato da molte aziende come British Airways, Uber, Netflix, la National Security Agency (NSA) degli Stati Uniti, da social network come Twitter o Facebook per analizzare il traffico di utenti e da una società come Visa per contribuire alla gestione delle frodi. Il progetto legato ad Hadoop ha subito negli anni diversi cambiamenti. Di base, fornisce due servizi: lo storage e il calcolo.

Il framework Hadoop è costituito da tre livelli principali:

  • Hadoop HDFS (Distributed File System) è l'unità di archiviazione;
  • Hadoop MapReduce è l'unità di elaborazione;
  • Hadoop YARN (Yet Another Resource Negotiator) è l'unità di gestione delle risorse.

Come nasce il progetto

Alla fine del 2003, Google rilasciò due documenti accademici in cui si descrivevano Google File System (GFS) e MapReduce. I documenti fornivano una piattaforma per l’elaborazione dei dati sulla quale potevano essere implementate più applicazioni di elaborazione. Contemporaneamente, Douglas Cutting che lavorava sul crawler web open source Nutch, iniziò ad interessarsi alle implementazioni open source delle idee di Google e poco dopo nacque Hadoop, inizialmente come progetto derivato di Lucene (API gratuita ed open source per il reperimento di informazioni) e poi come progetto indipendente legato ad Apache Software Foundation. Douglas Cutting che nel 2006 è diventato prima dipendente Yahoo! per poi passare a Cloudera ha continuato a guidare il progetto Hadoop insieme ad un team di ingegneri implementandolo con miglioramenti ed estensioni. Famosa la sua dichiarazione durante la conferenza Hadoop World: "Le mie aspettative erano più moderate di quelle che abbiamo visto, di sicuro".

Figura 1: Il logo Hadoop ispirato all'elefantino giallo preferito dal figlio di Douglas Cutting

Perché i Big Data?

Hadoop permette di distribuire set di dati molto grandi su cluster di server di base e di elaborarli in parallelo, motivo principale a renderlo uno strumento utile per gestire e analizzare molte informazioni. Inoltre, divide o partiziona i dati in blocchi e poi assegna i dati a nodi diversi per effettuare l'analisi. In questo modo si ottiene un processo separato che rende possibile la gestione di tutti i dati non strutturati come file video, audio o immagini che non possono essere mappati tramite schemi tipici di database relazionali. L'elaborazione parallela dei dati, poi, permette una maggiore velocità di analisi. Altra caratteristica è che i cluster possono essere ridimensionati per permettere di aggiungere altri cluster e, se un nodo si guasta, sono disponibili copie aggiuntive dei dati su altri nodi.

Possiamo riassumere le sue principali caratteristiche in 5 punti fondamentali:

  • Veloce: gli utenti possono eseguire query complesse in pochi secondi;
  • Conveniente: Hadoop è un framework di dati open source;
  • Resiliente: i dati archiviati in un nodo vengono replicati in altri nodi del cluster, garantendo tolleranza agli errori;
  • Scalabile: funziona in un ambiente distribuito e permette di aggiungere facilmente più server;
  • Diversità: l'HDFS di Hadoop può memorizzare diversi formati di dati, strutturati, semi strutturati e non strutturati.

Bisogna, però, considerare alcuni limiti. Il processo per eseguire una query nel file system di Hadoop, l'utilizzo di MapReduce con Java non è così intuitivo; inoltre, l'ecosistema è costituito da molti componenti e può risultare complessa una gestione completa. MapReduce inoltre risulta limitato soprattutto per le attività in tempo reale. 

Ecosistema Hadoop

Hadoop Distributed File System

HDFS è il componente per l'archiviazione dei dati in modo distribuito. Divide i dati in più blocchi, per impostazione predefinita fino a un massimo di 128 MB. La dimensione predefinita del blocco può essere modificata in base alla velocità di elaborazione e alla distribuzione dei dati. Ha un'architettura master-slave con due componenti principali: NameNode e DataNode. Il primo è il nodo principale che ospita i metadati nel disco e nella RAM. Contiene informazioni sui vari DataNode, la loro posizione, la dimensione di ogni blocco. I DataNode conservano i blocchi di dati effettivi e inviano report sui blocchi al NameNode ogni 10 secondi. Il DataNode memorizza e recupera i blocchi quando il NameNode lo richiede. Legge e scrive la richiesta del client ed esegue la creazione, l'eliminazione e la replica di blocchi in base alle istruzioni del NameNode. C'è un solo NameNode attivo che, come detto, gestisce i DataNode e memorizza tutti i metadati, mentre possono esserci più DataNode che memorizzano i dati effettivi.

Figura 2: Master e Slave Nodes

MapReduce

MapReduce è l'unità di elaborazione, un modello di programmazione che consente di ridimensionare i dati non strutturati su centinaia o migliaia di server commodity in un cluster Apache Hadoop. Un modello di programmazione in grado di suddividere ogni richiesta in richieste più piccole che vengono inviate a molti piccoli server per rendere possibile l'uso più scalabile della CPU. Introdotto originariamente da Google come metodo per risolvere una classe di problemi di dimensioni petabyte/terabyte, è composto da due fasi: Map Phase e Reduce Phase. La prima fase è quella a cui vengono inviati i dati di input per essere mappati e produrre valori di output. Nella fase di riordino e ordinamento, l'output della fase di mappatura viene preso e raggruppato in blocchi di dati simili. Infine, vengono aggregati i valori di output della fase di rimescolamento. Quindi restituisce un singolo valore di output. Gli sviluppatori possono scrivere codici MapReduce in più linguaggi come Java, C++ e Python. MapReduce offre diverse funzionalità e vantaggi per aiutare a ottenere informazioni dettagliate da vasti volumi di dati.

Figura 3: Input/output MapReduce

YARN

Gestisce le risorse del cluster e gestisce le applicazioni. YARN, introdotto con il passaggio da Hadoop 1 alla versione 2 alloca RAM, memoria e altre risorse a diverse applicazioni. Include:

  • ResourceManager (master): gestisce l'assegnazione di risorse come CPU, memoria e larghezza di banda di rete;
  • ApplicationMaster (uno per applicazione);
  • NodeManager (slave): segnala l'utilizzo delle risorse al Resource Manager.

L'introduzione di YARN ha risolto alcuni problemi di MapReduce apportando significativi vantaggi legati a:

  • Scalabilità: puoi avere una dimensione del cluster superiore a 10.000 nodi ed eseguire più di 100.000 attività simultanee;
  • Compatibilità: le applicazioni sviluppate per Hadoop 1 vengono eseguite su YARN senza interruzioni o problemi di disponibilità;
  • Utilizzo delle risorse: YARN consente l'allocazione dinamica delle risorse del cluster per migliorare l'utilizzo delle risorse;
  • Multitenancy: YARN può utilizzare motori di accesso ai dati open source e proprietari, eseguire analisi in tempo reale e query ad hoc.

Con Hadoop 3 sono state introdotte altre funzionalità. Per prima cosa consente di avere più name node e viene ridotto il sovraccarico di archiviazione con la codifica di cancellazione. Inoltre, consente l'utilizzo dell'hardware GPU all'interno del cluster, il che rappresenta un vantaggio sostanziale per l'esecuzione di algoritmi di Deep Learning su un cluster Hadoop.

HBase parte dell'ecosistema Hadoop

L'archiviazione e l'elaborazione di dati come, ad esempio, email, file JSON, .csv, è una sfida sempre più importante, una possibile soluzione è rappresentata da un database non distribuito, basato su colonne e non relazionale come Apache HBase che sfrutta l'archiviazione dati distribuita fornita da Google File System. HBase si compone di più tabelle e queste tabelle sono costituite da molte righe di dati con più famiglie di colonne ognuna costituita da una coppia chiave-valore. Infatti, HBase è un tipo di database NoSQL ed è classificato come archivio chiave-valore: il valore è identificato con una chiave, sia la chiave che i valori sono byte array, il che significa che i formati binari possono essere archiviati facilmente ed i valori sono memorizzati in ordini di chiavi. In pratica, HBase è un database in cui le tabelle non hanno schema. Può essere utilizzato quando si cercano dati di piccole dimensioni da set di dati di grandi dimensioni. Alcune delle aziende che utilizzano HBase sono Facebook, Netflix, Yahoo, Adobe e Twitter. Facebook, ad esempio, l'ha adottato per la necessità di potenziare un sistema in grado di gestire due tipi di modelli di dati: un set di dati in continua crescita con accesso sporadico e un set di dati in continua crescita e altamente volatile.

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2410 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

2 Commenti

  1. Giuseppe Garofalo 23 Febbraio 2022
  2. Roberta Fiorucci 1 Marzo 2022

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend