keyboard_arrow_up

HDFS, il file system distribuito di Hadoop

Hadoop Distributed File System (HDFS) è un file system distribuito scritto in Java che può essere eseguito su qualsiasi hardware. Le differenze con gli altri file system distribuiti sono significative, infatti, HDFS è fault-tolerant, garantisce l’accesso ad alta velocità ai dati ed è adatto per applicazioni che elaborano grandi quantità di informazioni.

Modello

Le applicazioni, per l’accesso ai file, seguono il modello di write-once-read-many (una scrittura – molte letture). Infatti, una volta che un file viene creato, scritto e chiuso non viene più modificato. In questo modo non si dovrebbero presentare problemi di coerenza dei dati e favorire accessi ad alta velocità.

Applicazioni MapReduce e applicazioni web-crawler si abbinano perfettamente a questo modello.

Come lavora l’HDFS

L’HDFS è basato su un’architettura master/slave. Un cluster HDFS è costituito da un unico NameNode, un server master che gestisce le operazioni sul file system e da più DataNodes, solitamente uno per nodo, che gestiscono la memorizzazione delle informazioni sui singoli nodi.

HDFS-architecture HDFS-architecture

Nel dettaglio, il NameNode esegue azioni apertura, chiusura, e rinomina dei file e directory mentre DataNodes sono responsabili delle richieste di lettura e scrittura da parte dei client sul file system; quando le informazioni devono essere memorizzate, i file vengono suddivisi in uno o più blocchi e salvati in un gruppo di DataNodes. Solitamente, le dimensione dei file variano dai gigabyte ai terabyte.

NameNode e DataNode sono software progettati per essere eseguiti su macchine che, solitamente, eseguono un sistema operativo GNU/Linux. L’HDFS è stato sviluppato in Java; qualsiasi macchina che supporta Java può svolgere il compito di NameNode o DataNode. Una configurazione tipica è composta da una macchina con NameNode mentre, tutte le altre, sono DataNode. L’architettura non esclude la possibilità di eseguire più DataNodes sulla stessa macchina, ma in una vera e propria configurazione, questa scelta è rara.

Blocchi e replica dei dati

L’HDFS è progettato per salvare, in modo affidabile, file di grandi dimensioni lungo le macchine che compongono cluster. La memorizzazione di ogni file avviene in sequenza di blocchi; tutti i blocchi che compongono un file, tranne l’ultimo, sono delle stesse dimensioni. Tutti i blocchi, inoltre, vengono replicati per garantire la tolleranza ai guasti.
La dimensione di blocchi e il fattore di replica sono configurabili dall’applicazione in fase di creazione ed essere modificati successivamente; solitamente è di 64 MB.

Guasti Hardware

I guasti hardware, nei cluster, possono essere nella norma. Un’istanza HDFS può essere composta da centinaia o migliaia di server, ognuno dei quali contiene una parte di dati del sistema. Dato il gran numero di componenti e che ogni parte ha una probabilità non trascurabile di guasto, l’individuazione di anomalie e il ripristino automatico sono gli obiettivo architettuali del file system.

© FEDERICO BAGATO. All Rights Reserved. Cookie Policy