Caratteristiche, funzionamento e architettura del framework Hadoop 

Caratteristiche, funzionamento e architettura del framework Hadoop

Il Framework Hadoop

Apache Hadoop è un framework open source, che permette di elaborare grandi set di dati, grazie alla capacità di sfruttare la potenza di calcolo e lo spazio di archiviazione di computer facenti parte di cluster, proponendo un modello di programmazione molto semplice. Il framework è progettato per scalare da un singolo server a migliaia di macchine, ognuna delle quali mette a disposizione le proprie risorse.

Hadoop ormai si può considerare a tutti gli effetti una pietra miliare nel mondo Big Data, uno strumento di riferimento che presenta le seguenti caratteristiche:

  1. Scalabilità: il framework permette di gestire ed elaborare ed archiviare grandi quantità di dati, grazie al fatto che l’elaborazione è distribuita su più host, detti nodi. E’ possibile inoltre integrare in maniera semplice nuovi nodi, in modo da aggiungere nuove risorse ai cluster.
  2. Affidabilità: i grandi data center per loro natura sono soggetti ad un numero di guasti considerevole, a causa dei malfunzionamenti che possono occorrere ai singoli nodi. Hadoop è stato sviluppato con l’idea che i guasti siano non l’eccezione, ma eventi comuni e pertanto tutti i componenti prevedono una gestione automatica interna di eventuali problemi. Una delle tipiche contromisure ai guasti, ad esempio è la replica automatica dei dati, che permette di reindirizzare l’elaborazione ad altri nodi, qualora uno cadesse. Questo approccio si sposa perfettamente con l’utilizzo di commodity hardware, cioè di componenti relativamente economici e molto diffusi e ciò porta anche all’abbattimento dei costi complessivi.
  3. Flessibilità: come abbiamo visto, la maggior parte dei dati elaborati in ambito aziendale è di tipo non strutturato. A differenza dei sistemi tradizionali di gestione delle basi dati, non è più sempre necessario definire la struttura delle informazioni prima di archiviarle: è possibile infatti salvare i dati in qualsiasi formato, strutturato e non, per poi gestirli nella maniera più opportuna durante successive elaborazioni.
  4. Costi: Hadoop è stato rilasciato sotto licenza Apache, ma viene offerta dal mercato la possibilità di usufruire di implementazioni commerciali a pagamento, come Cloudera e Hortonworks, in base alle proprie esigenze.

L’ecosistema Hadoop è costituito da diversi componenti che compongono un’infrastruttura di elaborazione basata su un file system distribuito, l’Hadoop Distributed File System (HDFS) e del paradigma di programmazione MapReduce. Vediamo ora nel dettaglio i principali componenti:

  1. Hadoop Common: è un layer di livello software che fornisce accesso al file system di Hadoop e in generale supporta tutti gli altri moduli Hadoop.
  2. Hadoop Distributed File System: è un file system distribuito tra i nodi all’interno di un cluster. Al fine di fronteggiare eventuali guasti dei nodi e quindi la possibile indisponibilità di alcuni dati, permette di replicarli in modo da massimizzarne la disponibilità. Inoltre è studiato per fornire throughput elevati e basse latenze durante operazioni di IO.
  3. Hadoop YARN: cluster. è il framework che consente di schedulare job e di gestire le risorse presenti nel
  4. Hadoop MapReduce: è un framework prodotto da Google che permette di elaborare in maniera distribuita e parallela sui nodi del cluster grandi set di dati.

Quando si parla di Hadoop, si fa riferimento tipicamente all’intero ecosistema che è nato grazie al grande successo del framework. Questo, infatti, si basa sui quattro componenti appena descritti, ma è stato via via arricchito da diversi moduli che offrissero diverse funzionalità all’utente, come Apache Flume, Apache ZooKeeper, Apache Hive e così via.

Architettura Hadoop

Un cluster è un insieme di due o più nodi connessi fra loro tramite reti ad alta velocità, dove per nodo si intende un host, cioè un computer. La dimensione dei cluster può variare, a seconda della necessità, da pochi nodi o da migliaia. Questi sono organizzati all’interno dei data center in rack, cioè scaffali, connessi fra loro tramite switch, che possono contenere un numero variabile di server (tipicamente fra 16 e 24). La figura seguente mostra un esempio di come possa essere organizzato un cluster Hadoop.

In un cluster Hadoop possiamo trovare due diverse categorie di nodi: master node e worker node.

I nodi master svolgono una funzione di supervisione e coordinamento delle attività principali. Fra questi troviamo il JobTracker, che ha il compito di gestire l’esecuzione distribuita delle applicazioni Map Reduce, ma anche il NameNode, che garantisce la gestione degli accessi al file system distribuito.

Caratteristiche, funzionamento e architettura del framework Hadoop

In ambiente distribuito è comune avere la necessità di ottenere maggiori risorse in caso di aumenti sul carico di lavoro e da qui nasce la necessità di affrontare il problema della scalabilità. Da questo punto di vista, si può scegliere di adottare uno di questi due approcci:

  1. Scalabilità Orizzontale (scale out): consiste nell’aggiungere più nodi al cluster. Questo tipo di approccio è adottato generalmente quando si hanno grosse disponibilità di commodity hardware, cioè di dispositivi molto diffusi e dal costo limitato, che sono potenzialmente rimpiazzabili da altri in caso di necessità. Concettualmente, è l’opposto dell’hardware dedicato, cioè di prodotti progettati ad hoc, che prevedono costi più alti, sono più difficili da reperire e per i quali è complesso trovare dispositivi compatibili in grado di sostituirli in caso di necessità.
  2. Scalabilità Verticale (scale up): questo secondo approccio consiste nel potenziare i singoli nodi con ulteriori risorse, migliorandone la memoria, lo spazio su disco, o il numero di CPU. Solitamente si adotta questa strategia nel caso in cui si decida di usare un numero limitato di host, ma altamente performanti.

Come scritto in precedenza, Hadoop rende facile l’aggiunta di nuovi nodi al cluster, proprio grazie alla scelta di sposare la strategia della scalabilità orizzontale. L’utente che utilizza Hadoop inoltre, non deve preoccuparsi di gestire lo scheduling e la sincronizzazione dei task nell’ambiente distribuito, che gli risulta trasparente e viene gestito internamente dal framework, potendo concentrarsi così direttamente sull’implementazione delle varie soluzioni software.

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 *