Cos'è Hadoop Distributed File System (HDFS)?

14 giugno 2024

Autori

Cos'è HDFS?

Hadoop Distributed File System (HDFS) è un file system che gestisce set di dati di grandi dimensioni che possono essere eseguiti su hardware commerciale. HDFS è il sistema di archiviazione dati più diffuso per Hadoop e può essere utilizzato per scalare un singolo cluster Apache Hadoop fino a centinaia e persino migliaia di nodi. Gestendo in modo efficiente i big data con un throughput elevato, HDFS può essere utilizzato come pipeline di dati ed è ideale per supportare una complessa analytics dei dati.

HDFS è basato su un framework open source ed è uno dei componenti principali di Apache Hadoop; gli altri sono MapReduce YARN. HDFS non deve essere confuso o sostituito con Apache HBase, un sistema di gestione di database non relazionale e basato su colonne che utilizza HDFS e può supportare meglio le esigenze di dati in tempo reale grazie al suo motore di elaborazione in-memory.

Design 3D di palline che rotolano su una pista

Le ultime notizie e insight sull'AI


Scopri notizie e insight selezionati da esperti in materia di AI, cloud e molto altro nella newsletter settimanale Think. 

Vantaggi di HDFS

Tolleranza ai guasti e ripristino rapido dai guasti hardware

Poiché un'istanza HDFS può essere costituita da migliaia di server, il guasto di almeno uno dei server rappresenta sempre una possibilità. HDFS è stato progettato per rilevare i guasti e ripristinarli automaticamente e rapidamente. La replica dei dati con più copie su più nodi aiuta a proteggersi dalla perdita di dati. HDFS conserva almeno una copia su un rack diverso da tutte le altre copie. Questo data storage in un grande cluster tra nodi aumenta l'affidabilità. Inoltre, HDFS può creare snapshot di storage per salvare le informazioni PIT (point-in-time).

Accesso ai dati in streaming

HDFS è concepito più per l'elaborazione in batch che per l'uso interattivo, pertanto l'enfasi nella progettazione è posta su elevate velocità di trasmissione dei dati, che consentono l'accesso in streaming ai set di dati.

Supporto di grandi set di dati

HDFS supporta applicazioni che utilizzano set di dati nell'ordine dei gigabyte e dei terabyte. HDFS offre un'elevata larghezza di banda di dati aggregati e può scalare fino a centinaia di nodi in un singolo cluster e aiutare a gestire i sistemi di calcolo ad alte prestazioni (HPC). I data lake sono spesso memorizzati su HDFS. Anche i data warehouse utilizzavano HDFS, ma ora questa tendenza è in calo, a causa della complessità operativa percepita.

Convenienza

Poiché i dati vengono archiviati virtualmente, è possibile ridurre i costi per l'archiviazione dei metadati del file system e del namespace del file system.

Portabilità

Per facilitarne l'adozione, HDFS è progettato per essere trasferibile su più piattaforme hardware e per essere compatibile con vari sistemi operativi sottostanti, tra cui Linux, macOS e Windows. Inoltre, i data lake Hadoop sono in grado di supportare database non strutturati, semi-strutturati e strutturati, per la massima flessibilità. Sebbene Hadoop sia programmato in Java, altri linguaggi (tra cui C++, Perl, Python e Ruby) ne consentono l'uso nella data science.

Velocità di elaborazione

HDFS usa un'architettura cluster per garantire una velocità effettiva elevata. Per ridurre il traffico di rete, il file system Hadoop memorizza i dati nei DataNodes in cui vengono eseguiti i calcoli, anziché spostare i dati in un'altra posizione per il calcolo.

Scalabilità

Grazie alle funzionalità di scalabilità orizzontale e verticale, HDFS può essere rapidamente adattato alle esigenze di dati di un'organizzazione. Un cluster può comprendere centinaia o migliaia di nodi.

AI Academy

È la gestione dei dati il segreto dell’AI generativa?

Scopri perché i dati di alta qualità sono fondamentali per un uso efficace dell'AI generativa.

Architettura HDFS: cos'è e come funziona

HDFS ha un'architettura director/worker.

  • Un cluster HDFS include un NameNode, che è il server director. Il NameNode tiene traccia dello stato di tutti i file, delle autorizzazioni dei file e della posizione di ogni blocco. Il software NameNode gestisce il namespace del file system che a sua volta traccia e controlla l'accesso dei client ai file ed esegue operazioni come aprire, chiudere e rinominare directory e file.

    Il namespace del file system divide anche i file in blocchi e associa i blocchi ai DataNode, ovvero la parte worker del sistema. Configurando un solo NameNode per cluster, l'architettura del sistema semplifica la gestione dei dati e la memorizzazione dei dati HDFS. Inoltre, viene garantita una maggiore sicurezza, impedendo ai dati dell'utente di passare attraverso il NameNode.

  • Nella maggior parte dei casi è presente un DataNode per ogni nodo in un cluster che gestisce lo storage dei dati all'interno del nodo. Il software DataNode gestisce la creazione, l'eliminazione e la replica dei blocchi, oltre alle richieste di lettura e scrittura. Ogni DataNode memorizza separatamente i dati HDFS nel proprio file system locale con ogni blocco come file separato. I DataNode sono i nodi worker (o daemon Hadoop, che eseguono processi in background) e possono essere eseguiti su hardware commerciali se un'organizzazione punta a risparmiare.

Sia NameNode che DataNode sono software scritti per funzionare su un'ampia varietà di sistemi operativi (OS), che spesso è il sistema operativo GNU/Linux. Nella creazione di HDFS è stato utilizzato il linguaggio Java, il che significa che qualsiasi macchina che supporta Java può utilizzare anche il software NameNode o DataNode.

Le distribuzioni avranno spesso una singola macchina dedicata che esegue il software NameNode. Quindi, qualsiasi altra macchina nel cluster esegue una singola istanza del software DataNode. Se necessario, ma utilizzato solo di rado, è possibile configurare più di un DataNode su una singola macchina.

Quando i dati vengono importati in HDFS, vengono suddivisi in blocchi e distribuiti a diversi nodi in un cluster. Con i dati memorizzati in più DataNode, i blocchi possono essere replicati su altri nodi per consentire l'elaborazione parallela. Il Distributed File System (DFS) include comandi per accedere, recuperare, spostare e visualizzare rapidamente i dati. Grazie alle repliche dei blocchi di dati su più DataNode, è possibile rimuovere una copia senza rischiare di danneggiare i file delle altre copie. La dimensione predefinita di un blocco HDFS è 128 MB (Hadoop 2.x), che può sembrare eccessiva, ma consente di ridurre al minimo i tempi di ricerca e ridurre i metadati necessari.

Per ridurre al minimo i rischi e velocizzare l'elaborazione, quando un DataNode smette di segnalare il NameNode, quel DataNode viene rimosso dal cluster e le operazioni continuano senza di esso. Se quel DataNode diventa successivamente operativo, viene assegnato a un nuovo cluster.

HDFS fornisce file flessibili di accesso ai dati tramite varie interfacce: un'API Java nativa è fornita con HDFS, mentre un wrapper in linguaggio C è disponibile per l'API Java; inoltre, è possibile utilizzare un browser HTTP per cercare tra i file di un'istanza HDFS.

Il namespace del file system

HDFS è organizzato secondo una gerarchia di file tradizionale in cui l'utente può creare directory che contengono più file. La gerarchia del namespace del file system è simile a quella dei file system tradizionali, dove l'utente crea e rimuove i file, li sposta tra le directory e può rinominarli.

Il namespace del file system è gestito da NameNode, che conserva i record di tutte le modifiche apportate al namespace del file system. Il numero totale di repliche da salvare per qualsiasi applicazione può essere specificato qui. Questo numero è il fattore di replica per quel file. Il fattore di replica può essere impostato al momento della creazione del file e successivamente modificato in base alle esigenze.

Replica dei dati

Per fornire uno storage affidabile, HDFS memorizza i file di grandi dimensioni in più posizioni in un cluster di grandi dimensioni, dove ogni file si trova in una sequenza di blocchi. Ogni blocco viene memorizzato in un file della stessa dimensione, ad eccezione del blocco finale, che si riempie via via che vengono aggiunti i dati.

Per una maggiore protezione, i file HDFS possono essere scritti una sola volta da un solo scrittore alla volta. Per garantire che tutti i dati siano replicati secondo le istruzioni, il NameNode riceve un heartbeat (un report di stato periodico) e un blockreport (l'ID del blocco, il generation stamp e la lunghezza di ogni replica di blocchi) da ogni DataNode collegato al cluster. La ricezione di un heartbeat indica che il DataNode funziona correttamente.

Il NameNode seleziona l'ID del rack per ogni DataNode utilizzando un processo chiamato Hadoop Rack Awareness per aiutare a prevenire la perdita di dati in caso di guasto di un intero rack. Ciò consente anche di utilizzare la larghezza di banda di più rack durante la lettura dei dati.

Esempi e casi d'uso di HDFS

Consideriamo un file che include i numeri di telefono di un intero paese. I numeri delle persone con un cognome che inizia con A potrebbero essere memorizzati sul server 1, con B sul server 2 e così via. Con Hadoop, parti di questo elenco telefonico verrebbero archiviate in un singolo cluster e, per ricostruire l'intero elenco, un'applicazione avrebbe bisogno dei blocchi di ogni server nel cluster.

Per garantire un'elevata disponibilità in caso di guasto di un server, HDFS replica queste parti più piccole in altri due server per impostazione predefinita. (Questa ridondanza può essere aumentata o ridotta per ogni singolo file o per l'intero ambiente. Ad esempio, un cluster Hadoop di sviluppo in genere non necessita di alcuna ridondanza di dati).

Questa ridondanza consente inoltre al cluster Hadoop di suddividere il lavoro in blocchi più piccoli ed eseguire tali processi su tutti i server del cluster per una migliore scalabilità. Infine, un'organizzazione trae beneficio dalla localizzazione dei dati, che è critico quando si lavora con set di dati di grandi dimensioni.

HDFS può anche abilitare l'intelligenza artificiale (AI) e il machine learning (ML) scalando in modo efficace. In primo luogo, per memorizzare i dati in quantità sufficienti per addestrare i modelli ML e quindi per accedere a questi enormi set di dati.

Qualsiasi organizzazione che acquisisce, memorizza e utilizza set di dati di grandi dimensioni, fino ai petabyte, potrebbe prendere in considerazione l'utilizzo di HDFS. Alcuni casi d'uso relativi a diversi settori mostrano come potrebbe essere implementato HDFS.

  • Energia: un'azienda elettrica che utilizza le PMU (Phasor Measurement Units) per monitorare le prestazioni delle smart grid nelle proprie reti di trasmissione, può accumulare enormi volumi di dati, con migliaia di record al secondo. HDFS potrebbe essere il file system conveniente e altamente disponibile su cui fare affidamento.

  • Assistenza sanitaria: il volume delle cartelle cliniche cresce di giorno in giorno. I dati delle apparecchiature mediche e dei sensori dei pazienti possono essere raccolti e memorizzati in modo efficiente per un trattamento e una ricerca più reattivi.

  • Marketing: i dati provenienti dai sistemi di gestione delle relazioni con il cliente (CRM), dai sistemi point-of-sale (PoS), dalle risposte alle campagne e dai social media, in gran parte non strutturati, devono essere raccolti per l'analisi e per guidare le future iniziative di marketing. I cluster HDFS possono fornire una soluzione economica per la memorizzazione e l'analisi delle grandi quantità di dati generati.

  • Petrolio e metano: un cluster HDFS può aiutare a unificare tutti i dati che arrivano in vari formati, al fine di renderli disponibili per l'analytics dei big data. Questo può includere tutto, dai modelli 3D della Terra ai video, agli acquisti dei clienti e ai dati dei sensori delle attrezzature.

  • Retail: per comprendere meglio i propri clienti, i rivenditori possono raccogliere e analizzare dati provenienti da più fonti. Questo include i dati di vendita, le interazioni con il servizio clienti e i social media, sia i dati non strutturati che quelli strutturati, per sviluppare nuove strategie di coinvolgimento.

  • Telecomunicazioni: HDFS può aiutare le aziende di telecomunicazioni a creare percorsi di rete affidabili, condurre manutenzione predittiva, indicare opzioni promettenti di espansione della rete e analizzare il comportamento dei clienti.

La storia di HDFS

L'origine di Hadoop, secondo i cofondatori Mike Cafarella e Doug Cutting, risale a un articolo di Google File System, pubblicato nel 2003. A questo seguì un secondo articolo, "MapReduce: Simplified Data Processing on Large Clusters". Fu avviato lo sviluppo di un primo motore di ricerca denominato Apache Nutch, ma nel 2006 il lavoro fu trasferito a Yahoo sotto la supervisione di Doug Cutting.

Hadoop prende il nome da un elefante giocattolo appartenente al figlio di Cutting. (Da qui il logo.) Il codice iniziale di Hadoop si basava in gran parte su Nutch, ma superava i suoi limiti di scalabilità, e conteneva sia le prime versioni di HDFS che di MapReduce.

La suite di programmi dell'ecosistema Hadoop continua a crescere. Oltre a HDFS, ci sono anche:HBase (un database NoSQL), Mahout, Spark MLLib (librerie di algoritmi per il machine learning), MapReduce (elaborazione dei dati basata sulla programmazione), Oozie (pianificatore di processi), PIG e HIVE (servizi di elaborazione dei dati basati su query), Solar and Lucene (per la ricerca e l'indicizzazione), Spark (elaborazione dei dati, in-memory), YARN (Yet Another Resource Negotiator) e Zookeeper (coordinamento dei cluster).

Il software open source all'interno dell'ecosistema Hadoop è ora gestito dalla Apache Software Foundation1, una comunità mondiale di sviluppatori di software.

Soluzioni correlate
Software e soluzioni per la gestione dei dati

Progetta una strategia dati che elimini i silo, riduca la complessità e migliori la qualità dei dati per esperienze eccezionali di clienti e dipendenti.

Esplora le soluzioni di gestione dei dati
IBM watsonx.data™

Watsonx.data ti consente di scalare l'analytics e l'AI con tutti i tuoi dati, ovunque risiedano, attraverso uno storage dei dati aperto, ibrido e governato.

Scopri watsonx.data
Servizi di consulenza per dati e analytics

Sblocca il valore dei dati enterprise con IBM Consulting, creando un'organizzazione basata su insight in grado di generare vantaggi aziendali.

Esplora i servizi di analytics
Fai il passo successivo

Progetta una strategia dati che elimini i silo, riduca la complessità e migliori la qualità dei dati per esperienze eccezionali di clienti e dipendenti.

Esplora le soluzioni di gestione dei dati Scopri watsonx.data
Note a piè di pagina