My IBM Accedi Iscriviti
Cos'è Hadoop Distributed File System (HDFS)?

Cos'è Hadoop Distributed File System (HDFS)?

Esplora le soluzioni dati cloud di IBM Iscriviti per ricevere gli aggiornamenti sull'AI
Illustrazione con collage di pittogrammi di nuvole e un grafico a torta

Data di aggiornamento: 14 giugno 2024
Autore: Jim Holdsworth

Cos'è HDFS?

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 analisi di dati complesse.

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

AI generativa e apprendimento automatico (ML) per le imprese

Scopri i principali vantaggi dell’AI generativa e come le organizzazioni possono potenziare il proprio business.

Contenuti correlati Registrati per ricevere l'ebook sugli storage dei dati AI
Vantaggi di HDFS

Vantaggi di HDFS

Tolleranza ai guasti e rapido ripristino da guasti hardware

Poiché un'istanza HDFS può essere costituita da migliaia di server, il guasto di almeno uno dei server è sempre una possibilità. HDFS è stato progettato per rilevare i guasti e ripristinarli automaticamente e rapidamente. La data replication 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 archiviati 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.

Architettura HDFS: cos'è e come funziona

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 DataNodes, che è 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, con ogni file in una sequenza di blocchi. Ogni blocco viene memorizzato in un file della stessa dimensione, ad eccezione del blocco finale, che si riempie man mano 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 vengano 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

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 vantaggio dalla localizzazione dei dati, che è fondamentale 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 archiviare i dati in quantità sufficienti per addestrare i modelli ML e quindi per accedere a questi enormi set di dati.

Qualsiasi organizzazione che acquisisce, archivia 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 archiviati in modo efficiente per un trattamento e una ricerca più reattivi.

  • Marketing: i dati provenienti dai sistemi di gestione delle relazioni con i clienti (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 l'archiviazione e l'analisi delle grandi quantità di dati generati.

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

  • 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 manutenzioni predittive, indicare opzioni promettenti di espansione della rete e analizzare il comportamento dei clienti.
La storia di HDFS

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 e 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

Soluzioni correlate

Un archivio dati aperto, ibrido e controllato

È ora disponibile watsonx.data, un archivio dati adatto allo scopo creato su un'architettura open data lakehouse per scalare i workload di AI, per tutti i dati, ovunque.

Esplora watsonx.data
Promuovi analytics migliori e più veloci con le soluzioni di big data di IBM

IBM e Cloudera hanno stretto una partnership per offrire una distribuzione Hadoop di livello aziendale leader del settore, che comprende un ecosistema integrato di prodotti e servizi per supportare analisi più rapide su larga scala.

Esplora le opportunità offerte dai big data con IBM
Risorse

Risorse

La trinità delle piattaforme dati: competitiva o complementare?

Stanno emergendo almeno tre diverse soluzioni di piattaforme dati. Scopri la relazione tra data lakehouse, data fabric e data mesh.

Conoscere i big data oltre l'hype

Leggi questa breve introduzione alla nuova generazione di architetture di dati. Introduce il ruolo del cloud e delle tecnologie NoSQL e discute degli aspetti pratici della sicurezza, della privacy e della governance.

Che cos'è Presto?

Offre alle organizzazioni di tutte le dimensioni un modo rapido ed efficiente per analizzare i big data da varie fonti, inclusi i sistemi on-premise e il cloud.

Fasi successive

Scala i workload AI per tutti i tuoi dati, ovunque, con IBM watsonx.data, uno storage dei dati adatto allo scopo costruito su un'architettura open data lakehouse.

Esplora watsonx.data Prenota una demo live
Note a piè di pagina

1 Apache software foundation (link esterno a ibm.com)