Data di aggiornamento: 14 giugno 2024
Autore: Jim Holdsworth
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.
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).
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.
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.
Poiché i dati vengono archiviati virtualmente, è possibile ridurre i costi per l'archiviazione dei metadati del file system e del namespace del file system.
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.
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.
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.
HDFS ha un'architettura director/worker.
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.
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.
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.
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.
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.
È 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.
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.
Stanno emergendo almeno tre diverse soluzioni di piattaforme dati. Scopri la relazione tra data lakehouse, data fabric e data mesh.
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.
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.
1 Apache software foundation (link esterno a ibm.com)