Hadoop Distributed File System (HDFS)
HDFS
HDFS (Hadoop Distributed File System) è il sistema di archiviazione principale utilizzato dalle applicazioni Hadoop. Questo framework open-source trasferisce rapidamente i dati tra i nodi ed è spesso utilizzato dalle aziende che hanno bisogno di gestire e conservare Big Data. HDFS è un componente chiave di molti sistemi Hadoop, perché fornisce un mezzo per la gestione dei Big Data e ne supporta l'analisi.
Sono molte le aziende in tutto il mondo che utilizzano HDFS, ma cos'è esattamente e perché è necessario? Vediamo nel dettaglio cos'è HDFS e perché è utile alle aziende.
Che cos'è HDFS?
HDFS sta per Hadoop Distributed File System (HDFS). È un file system distribuito progettato per l'esecuzione su hardware commerciali.
HDFS è tollerante ai guasti ed è progettato per essere distribuito su hardware commerciali a basso costo. HDFS fornisce accesso ai dati delle applicazioni con un throughput elevato, è adatto alle applicazioni con set di dati di grandi dimensioni e consente l'accesso in streaming ai dati del file system in Apache Hadoop.
Che cos'è Hadoop? E come si differenzia da HDFS? La differenza fondamentale è che Hadoop è il framework open-source in grado di memorizzare, elaborare e analizzare i dati, mentre HDFS è il file system di Hadoop che fornisce l'accesso a quei dati. Questo significa essenzialmente che HDFS è un modulo di Hadoop.
Diamo un'occhiata all'architettura HDFS.
Come possiamo vedere, l'architettura di HDFS è basata su NameNode e DataNode. Il NameNode è l'hardware che contiene il sistema operativo e il software GNU/Linux. Il file system distribuito di Hadoop funge da server master e può gestire i file, controllarne l'accesso da parte di un client e supervisionarne le operazioni come rinominare, aprire e chiudere i file stessi.
Un DataNode è un hardware dotato del sistema operativo GNU/Linux e del software DataNode. A ogni nodo di un cluster HDFS corrisponde un DataNode. Questi nodi permettono di controllare l'archiviazione dei dati del loro sistema, possono eseguire operazioni sui file system se il client lo richiede nonché creare, replicare e bloccare i file su istruzione del NameNode.
HDFS si pone i seguenti obiettivi:
- Gestione di set di dati di grandi dimensioni - Organizzare e archiviare set di dati può essere un compito difficile. HDFS si usa per gestire le applicazioni che lavorano con set di dati di dimensioni imponenti. Per questo, HDFS deve poter avere centinaia di nodi per cluster.
- Rilevamento dei guasti - HDFS deve disporre di una tecnologia in grado di scansionare e rilevare i guasti in modo rapido ed efficace, in quanto include numerosi componenti hardware commerciali. Il guasto dei componenti è un problema comune.
- Efficienza hardware - Quando si lavora con set di dati di grandi dimensioni, HDFS può ridurre il traffico di rete e aumentare la velocità di elaborazione.
La storia di HDFS
Quali sono le origini di Hadoop? Il progetto di HDFS si basa sul Google File System. Originariamente costruito come infrastruttura per il progetto del motore di ricerca web Apache Nutch, successivamente è diventato parte dell'ecosistema Hadoop.
Agli albori di Internet, l'esigenza di cercare informazioni sulle pagine web ha portato alla nascita dei primi web crawler. Da questi sono derivati diversi motori di ricerca, come Yahoo e Google.
Nello stesso periodo ha visto la luce anche un altro motore di ricerca, Nutch, che si prefiggeva di distribuire dati e calcoli su più computer contemporaneamente. Il progetto Nutch è poi passato a Yahoo ed è stato diviso in due parti. Apache Spark e Hadoop sono ora due entità distinte. Mentre Hadoop è stato progettato per gestire l'elaborazione batch, Spark è nato per gestire in modo efficiente i dati in tempo reale.
Oggi, la struttura e il framework di Hadoop sono gestiti dalla Apache Software Foundation, una community globale di sviluppatori di software e collaboratori.
HDFS è nato in questo contesto ed è stato progettato per sostituire le soluzioni di archiviazione hardware con un metodo migliore e più efficiente: un sistema di archiviazione virtuale. Al suo arrivo sulla scena, MapReduce era l'unico motore di elaborazione distribuita in grado di utilizzare HDFS. Oggi anche componenti di data services alternativi ad Hadoop, come HBase e Solr, utilizzano HDFS per l'archiviazione dei dati.
Che ruolo ha HDFS nel mondo dei Big Data?
Cosa sono i Big Data e come entra in gioco HDFS? Il termine "big data" si riferisce a tutti i dati difficili da memorizzare, elaborare e analizzare. I big data HDFS sono dati organizzati nel sistema di archiviazione HDFS.
Come abbiamo visto, Hadoop è un framework che utilizza l'elaborazione parallela e lo storage distribuito. Può essere utilizzato per ordinare e archiviare i Big Data, che non possono essere archiviati in modo tradizionale.
Di fatto, è il software più utilizzato per gestire i Big Data ed è stato scelto da aziende come Netflix, Expedia e British Airways che utilizzano con successo Hadoop per l'archiviazione dei dati. HDFS ha un ruolo cruciale nel mondo dei Big Data, perché rappresenta il modo in cui oggi molte aziende scelgono di archiviare i propri dati.
I Big Data organizzati dai servizi HDFS hanno cinque caratteristiche chiave:
- Velocità. La velocità con cui i dati vengono generati, raccolti e analizzati.
- Volume. La quantità di dati generati.
- Varietà. Il tipo di dati (strutturati, non strutturati, ecc.)
- Veridicità. La qualità e l'accuratezza dei dati.
- Valore. Come utilizzare questi dati nei processi aziendali per ottenere informazioni dettagliate.
Vantaggi del file system distribuito Hadoop (HDFS)
Come sottoprogetto open-source all'interno di Hadoop, HDFS offre cinque vantaggi fondamentali a chi lavora con i Big Data:
- Tolleranza ai guasti. HDFS è stato progettato per rilevare i guasti e ripristinarsi automaticamente e rapidamente, garantendo continuità e affidabilità.
- Velocità, perché grazie all'architettura a cluster, può mantenere 2 GB di dati al secondo.
- Accesso a più tipi di dati, in particolare ai dati in streaming. Essendo progettato per gestire grandi quantità di dati per l'elaborazione batch, permette un'elevata velocità di trasmissione dei dati ed è quindi ideale per supportare dati in streaming.
- Compatibilità e portabilità. Progettato per essere utilizzato su una varietà di hardware e compatibile con diversi sistemi operativi, HDFS offre agli utenti la possibilità di scegliere una configurazione personalizzata. Questi vantaggi sono particolarmente significativi quando si lavora con i Big Data e sono resi possibili dal modo in cui HDFS gestisce i dati.
Questo grafico mostra la differenza tra un file system locale e HDFS.
- Scalabile. Le risorse possono essere scalate in base alle dimensioni del proprio file system. HDFS include meccanismi di scalabilità verticale e orizzontale.
- Prossimità dei dati. Nel file system di Hadoop, i dati risiedono nei nodi, in questo modo non c'è la necessità di spostarli nell'unità di calcolo. Accorciando la distanza tra i dati e il processo di elaborazione, si riduce la congestione della rete e si rende il sistema più efficace ed efficiente.
- Economicamente vantaggioso. Quando pensiamo ai dati, siamo portati ad associarli a hardware costosi e a un uso eccessivo della larghezza di banda. Quando un componente hardware si guasta, la riparazione può essere molto onerosa. Con HDFS, i dati sono archiviati in modo economico perché virtuale, riducendo drasticamente i costi di archiviazione dei metadati e dello spazio dei nomi del file system. Inoltre, poiché HDFS è open-source, le aziende non devono preoccuparsi di pagare per una licenza.
- Archiviazione di grandi quantità di dati. L'archiviazione è l'obiettivo primario di HDFS: parliamo di dati di ogni tipo e dimensione, ma in particolare di grandi quantità di dati provenienti da aziende che faticano ad archiviarli. Questo comprende sia i dati strutturati sia quelli non strutturati.
- Flessibile. A differenza di quanto avviene con altri database più tradizionali, non è necessario elaborare i dati raccolti prima di archiviarli. È possibile memorizzare tutti i dati che si desidera, con l'opportunità di decidere in seguito cosa si vuole fare con essi e come utilizzarli. Questo vale anche per dati non strutturati come testo, video e immagini.
Come utilizzare HDFS
Come si usa HDFS? HDFS è composto da un NameNode principale e diversi DataNode che girano tutti su un cluster hardware di largo consumo. Questi nodi sono organizzati nello stesso luogo all'interno del data center. Successivamente, i dati vengono suddivisi in blocchi che vengono distribuiti tra i diversi DataNode per l'archiviazione. Per ridurre il rischio di perdita dei dati, i blocchi vengono spesso replicati su vari nodi. Le repliche fungono da backup in caso di perdita di dati.
Consideriamo ora i NameNode. Il NameNode è il nodo all'interno del cluster che sa cosa contengono i dati, a quale blocco appartengono, la dimensione del blocco e la sua posizione. I NameNode sono utilizzati anche per controllare l'accesso ai file, compresa la possibilità di scrivere, leggere, creare, rimuovere e replicare i dati tra i vari nodi.
Al bisogno, il cluster può anche essere adattato in tempo reale, in base alla capacità del server, elemento che può essere utile quando si verifica un picco di dati. I nodi possono essere aggiunti o tolti a seconda delle necessità.
Passiamo ora ai DataNode. I DataNode sono in costante comunicazione con i NameNode per verificare se devono iniziare e completare un'attività. Grazie a questa continua collaborazione, il NameNode è sempre aggiornato sullo stato di ciascun DataNode.
Quando viene individuato un DataNode che non funziona come dovrebbe, il NameNode è in grado di riassegnare automaticamente il compito a un altro nodo funzionante nello stesso blocco di dati. Allo stesso modo, i DataNode sono anche in grado di comunicare tra loro, il che significa che possono collaborare durante le operazioni standard sui file. Dal momento che è sempre a conoscenza dei DataNode e delle loro prestazioni, il NameNode è fondamentale per la manutenzione del sistema.
I blocchi di dati sono replicati su più DataNode e accessibili dal NameNode.
Per utilizzare HDFS è necessario installare e configurare un cluster Hadoop. Può trattarsi di una configurazione a nodo singolo, più adatta ai nuovi utenti, oppure di un cluster configurato per grandi cluster distribuiti. Per operare e gestire il sistema sarà poi necessario familiarizzare con i comandi HDFS, come quelli di seguito elencati.
Comando |
Descrizione |
-rm |
Rimuove un file o una directory |
-ls |
Elenca i file con le relative autorizzazioni e altri dettagli |
-mkdir |
Crea un percorso con il nome di una directory in HDFS |
-cat |
Mostra il contenuto del file |
-rmdir |
Elimina una directory |
-put |
Carica su HDFS un file o una cartella da un disco locale |
-rmr |
Elimina il file identificato dal percorso o dalla cartella e sottocartelle |
-get |
Sposta un file o una cartella da HDFS a un file locale |
-count |
Calcola il numero di file, il numero di directory e la dimensione dei file |
-df |
Mostra lo spazio libero |
-getmerge |
Unisce più file in HDFS |
-chmod |
Modifica i permessi dei file |
-copyToLocal |
Copia i file nel sistema locale |
-Stat |
Stampa le statistiche relative al file o alla directory |
-head |
Visualizza il primo kilobyte di un file |
-usage |
Restituisce la guida per un singolo comando |
-chown |
Assegna un nuovo proprietario e gruppo di un file |
Come funziona HDFS?
Come già detto, HDFS utilizza NameNode e DataNode. HDFS consente il trasferimento rapido dei dati tra i nodi di elaborazione. Quando HDFS riceve i dati, è in grado di suddividere le informazioni in blocchi che vengono poi distribuiti a diversi nodi di un cluster.
I blocchi di dati vengono distribuiti tra i DataNode per l'archiviazione e possono anche essere replicati sui nodi, il che permette un'efficiente elaborazione parallela. Attraverso vari comandi è possibile accedere ai dati, spostarli e visualizzarli. I comandi HDFS DFS come "-get " e "-put" consentono di recuperare e spostare i dati secondo necessità.
HDFS è inoltre progettato per essere altamente vigile ed è in grado di rilevare rapidamente i guasti. Il file system utilizza la replica dei dati per garantire che ogni dato venga salvato più volte e lo assegna poi a singoli nodi, facendo sì che almeno una delle copie si trovi su un rack diverso da quello delle altre.
Ciò significa che quando un DataNode non invia più segnali al NameNode, il NameNode lo rimuove dal cluster e opera senza di esso. Se il DataNode riprende a funzionare, potrà essere assegnato a un nuovo cluster. Inoltre, poiché i blocchi di dati sono replicati su diversi DataNode, la rimozione di uno di essi non comporterà alcun tipo di corruzione dei file.
Componenti HDFS
I componenti principali di Hadoop sono tre: Hadoop HDFS, Hadoop MapReduce e Hadoop YARN. Vediamo quale apporto fornisce ciascuno di questi componenti ad Hadoop:
- Hadoop HDFS - Hadoop Distributed File System (HDFS) è l'unità di archiviazione di Hadoop.
- Hadoop MapReduce - Hadoop MapReduce è l'unità di elaborazione di Hadoop. Questo framework software viene utilizzato per scrivere applicazioni che elaborano grandi quantità di dati.
- Hadoop YARN - Hadoop YARN è un componente di Hadoop per la gestione delle risorse. Elabora ed esegue i dati archiviati in HDFS per l'elaborazione in modalità batch, stream, interattiva e la realizzazione di grafici.
Come creare un file system HDFS
Vuoi sapere come creare un file system HDFS? I passaggi indicati di seguito ti guideranno alla creazione del sistema, alla sua modifica e all'eventuale rimozione.
Richiamare l'elenco delle directory di HDFS
Il percorso della tua home directory in HDFS dovrebbe essere /user/yourUserName. Per visualizzarne il contenuto, immetti:
Dal momento che hai appena iniziato, in questa fase non vedrai nulla. Quando vuoi visualizzare il contenuto di una directory non vuota, immetti:
Vedrai i nomi delle home directory di tutti gli altri utenti di Hadoop.
Creare una directory in HDFS
Ora puoi creare una directory di prova. Chiamiamola testHDFS. Apparirà all'interno di HDFS. Immetti il seguente comando:
Dovrai ora verificare che la directory esista, utilizzando lo stesso comando che avevi inserito per richiamare l'elenco delle directory di HDFS. La directory testHDFS dovrebbe apparire nell'elenco.
Esegui una nuova verifica usando il nome di percorso completo HDFS della tua home directory. Immetti:
Controlla che il comando funzioni correttamente prima di procedere con le fasi successive.
Copiare un file
Per copiare un file del file system locale su HDFS, inizia creando il file che vuoi copiare. Per farlo, immetti:
Verrà creato un nuovo file chiamato testFile, che include i caratteri "HDFS test file". Per verificarlo, immetti:
ls
Quindi, per verificare che il file sia stato creato, immetti:
A questo punto dovrai copiare il file in HDFS. Per copiare file da Linux a HDFS, dovrai utilizzare:
Nota che è necessario usare il comando "-copyFromLocal" perché il comando "-cp" è usato per copiare file all'interno di HDFS.
Ora ti basterà confermare che il file sia stato copiato correttamente. Per farlo, immetti i seguenti comandi:
Spostare e copiare file
Durante la copia, il file di prova è stato inserito nella home directory di base. Ora puoi spostarlo nella directory testHDFS che avevi già creato. Immetti:
La prima parte del comando sposta il file di prova dalla directory home di HDFS a quella di prova che hai creato. La seconda parte mostra che il file non si trova più nella home directory di HDFS, e la terza conferma che è stata spostata nella directory HDFS di prova.
Per copiare un file, immetti:
Controllare l'utilizzo del disco
Il controllo dello spazio su disco è utile quando si utilizza HDFS. Per eseguirlo, immetti il seguente comando:
Potrai vedere quanto spazio stai utilizzando nella tua home directory HDFS. Puoi anche visualizzare la quantità di spazio disponibile su tutti i cluster HDFS immettendo:
Rimuovere un file o una directory
Può capitare di dover eliminare un file o una directory in HDFS. Per eseguire questa operazione, immetti il comando:
Noterai che nell'elenco appaiono ancora la directory testHDFS e il file testFile2 che avevi creato in precedenza. Rimuovi la directory immettendo:
Verrà visualizzato un messaggio di errore, formulato più o meno in questi termini: "rmdir: testhdfs: Directory is not empty". Questo perché, per poter essere eliminata, una directory deve essere vuota. Puoi usare il comando "rm" per aggirare questo problema e rimuovere una directory con tutti i file che contiene. Immetti:
Come installare HDFS
Hadoop può essere installato in configurazione a nodo singolo o a più nodi. A seconda delle tue esigenze, potrai utilizzare un cluster mononodo o multinodo.
Un cluster mononodo significa che è in esecuzione un solo DataNode. NameNode, DataNode, gestore delle risorse e gestore dei nodi si trovano tutti su un'unica macchina.
Per alcuni settori industriali, questa configurazione è più che sufficiente. Ad esempio in campo medico, se si stanno conducendo degli studi e si ha bisogno di raccogliere, ordinare ed elaborare dei dati in sequenza, un cluster mononodo rappresenta una buona soluzione. Può gestire facilmente dati su piccola scala, piuttosto che dati distribuiti su molte centinaia di macchine. Per installare un cluster mononodo:
- Scarica il pacchetto Java 8. Salva il file nella tua home directory.
- Estrai il file tar di Java.
- Scarica il pacchetto Hadoop 2.7.3.
- Estrai il file tar di Hadoop.
- Aggiungi i percorsi di Hadoop e Java nel file bash (.bashrc).
- Modifica i file di configurazione di Hadoop.
- Apri core-site.xml e dichiarane la proprietà.
- Modifica il file hdfs-site.xml .xml e dichiarane la proprietà.
- Modifica il file mapred-site.xml e dichiarane la proprietà.
- Modifica il file yarn-site.xml e dichiarane la proprietà.
- Modifica hadoop-env.sh e aggiungi il percorso Java.
- Vai alla home directory di Hadoop e formatta il NameNode.
- Vai alla directory hadoop-2.7.3/sbin e avvia tutti i demoni.
- Verifica che tutti i servizi Hadoop siano in esecuzione.
A questo punto l'installazione di HDFS dovrebbe essere conclusa.
Come accedere ai file HDFS
Il livello di sicurezza di HDFS è molto alto, cosa tutt'altro che sorprendente considerato che il sistema archivia ed elabora dati. Essendo uno storage virtuale distribuito sul cluster, HDFS ti permette di vedere sul tuo file system solo i metadati, e non i dati veri e propri.
Per accedere ai file HDFS puoi scaricare sul tuo file system locale il file "jar" da HDFS. Potrai inoltre accedere a HDFS anche tramite la sua interfaccia utente web. Ti basterà aprire il browser e digitare "localhost:50070" nella barra di ricerca. Da qui potrai visualizzare l'interfaccia utente web di HDFS e spostarti sulla scheda Utilities a destra. Fai clic su "browse file system" per visualizzare un elenco completo dei file presenti sul tuo HDFS.
Esempi di comandi HDFS DFS
Ecco alcuni esempi dei comandi Hadoop più comuni.
Esempio A
Per eliminare una directory è necessario immettere il seguente comando, tenendo presente che questa operazione può essere eseguita solo se i file sono vuoti:
OPPURE
Esempio B
Quando si hanno più file in un sistema HDFS, si può usare il comando "-getmerge". Questo consente di unire più file in un file unico, che può quindi essere scaricato nel file system locale. Per eseguire questa operazione, immetti il seguente comando:
OPPURE
Esempio C
Per caricare in locale un file da HDFS, puoi usare il comando "-put". Specifica la posizione di origine e il nome del file da copiare su HDFS. Immetti il seguente comando:
OPPURE
Esempio D
Il comando "count" viene utilizzato per calcolare il numero di directory e file e le dimensioni dei file su HDFS. Immetti:
OPPURE
Esempio E
Il comando "chown" permette di cambiare proprietario e gruppo di un file. Per attivarlo, immetti:
OPPURE
Cos'è lo storage HDFS?
Come abbiamo visto, in HDFS i dati sono archiviati in blocchi. Questi blocchi sono la più piccola unità di dati che il file system può memorizzare. Una volta che i file sono stati elaborati e suddivisi in blocchi, questi ultimi vengono prelevati e distribuiti sul cluster e replicati per sicurezza. Tipicamente, ogni blocco viene replicato tre volte. Questo diagramma mostra come HDFS archivia i Big Data.
La prima copia si trova sul DataNode, la seconda è archiviata su un DataNode separato all'interno del cluster e la terza su un DataNode di un cluster diverso. È, in pratica, una misura di sicurezza a tripla protezione. In questo modo, se per qualche motivo una replica si danneggiasse, i dati non sarebbero perduti per sempre.
Il NameNode conserva informazioni importanti, come il numero di blocchi e la posizione in cui sono archiviate le repliche. Un DataNode, invece, memorizza i dati veri e propri e può creare, rimuovere e replicare blocchi a comando. È strutturato così:
Ciò determina dove i DataNode debbano memorizzare i propri blocchi.
Come vengono memorizzati i dati in HDFS?
Il file system HDFS è costituito da un insieme di servizi Master (NameNode, NameNode secondario e DataNode). Il NameNode e il NameNode secondario gestiscono i metadati HDFS. I DataNode ospitano i dati HDFS sottostanti.
Il NameNode tiene traccia di quali DataNode ospitano il contenuto di un determinato file in HDFS. HDFS divide i file in blocchi e memorizza ogni blocco su un DataNode. Al cluster vengono collegati più DataNode. Il NameNode distribuisce quindi sul cluster le repliche di questi blocchi di dati. Inoltre, indica all'utente o all'applicazione dove trovare le informazioni desiderate.
Per quali utilizzi è stato progettato il file system distribuito di Hadoop (HDFS)?
Quando ci si chiede per quali utilizzi sia stato progettato il file system distribuito di Hadoop, la risposta è: prima di tutto, per i Big Data. Può dunque rivelarsi prezioso per le grandi aziende che avrebbero altrimenti grosse difficoltà a gestire e archiviare i dati della loro attività e dei clienti.
Con Hadoop è possibile archiviare e unire i dati di varia natura: transazionali, scientifici, dei social media, pubblicitari o relativi alle macchine. Questi dati sono inoltre disponibili per ricavarne informazioni dettagliate sulle performance aziendali e analitiche.
Progettato per immagazzinare dati, HDFS è in grado di gestire anche dati grezzi, sui quali si basano comunemente le analisi condotte da chi opera nei settori della scienza e della medicina. Questi repository di dati grezzi sono chiamati data lake. HDFS permette di affrontare le sfide più difficili senza alcuna restrizione.
Inoltre, dal momento che Hadoop è stato progettato principalmente per gestire in vari modi enormi volumi di dati, può essere utilizzato anche per eseguire algoritmi a scopo analitico. Hadoop aiuta così le aziende a elaborare e analizzare i dati in modo più efficiente, consentendo loro di scoprire nuove tendenze e rilevare anomalie. Oggi, alcune aziende stanno addirittura rimuovendo determinati set di dati dai data warehouse per spostarli su Hadoop, che rende più facile archiviare tutto ciò di cui si ha bisogno in un unico posto facilmente accessibile.
Se parliamo di dati transazionali, Hadoop è anche in grado di gestire milioni di transazioni. Grazie alle sue capacità di storage e di elaborazione, può essere utilizzato per archiviare e analizzare i dati dei clienti. Consente inoltre di effettuare analisi approfondite per individuare le tendenze e i modelli emergenti, fornendo così informazioni essenziali al raggiungimento degli obiettivi aziendali. Ricordiamo che Hadoop viene costantemente aggiornato con dati nuovi e permette di confrontare i dati nuovi con quelli vecchi per vedere cosa è cambiato e perché.
Considerazioni su HDFS
Per impostazione predefinita, HDFS è configurato con la replica 3x, il che significa che di ciascun set di dati verranno realizzate due copie aggiuntive. Se da un lato questo migliora la probabilità di avere a disposizione dati localizzati per l'elaborazione, dall'altro aumenta i costi di archiviazione.
- HDFS funziona meglio quando viene configurato con uno storage collegato localmente. Questa soluzione garantisce le migliori prestazioni per il file system.
- L'aumento della capacità di HDFS richiede l'aggiunta di nuovi server (con i relativi requisiti di potenza di calcolo, memoria e disco), non solo di supporti di memorizzazione.
HDFS vs. archiviazione a oggetti nel cloud
Come dicevamo, la capacità di HDFS è strettamente collegata alle risorse di calcolo. L'aumento della capacità di archiviazione comporta un aumento delle risorse della CPU, anche se quest'ultima non è necessaria. Quando si aggiungono altri DataNode a HDFS, è necessaria un'operazione di riequilibrio per distribuire i dati esistenti nei nuovi server aggiunti.
Questa operazione può richiedere del tempo. Scalare un cluster Hadoop in un ambiente on-premise può essere difficile anche dal punto di vista dei costi e dello spazio. HDFS utilizza uno storage collegato localmente che può fornire vantaggi in termini di prestazioni I/O, a condizione che YARN possa eseguire l'elaborazione sui server dove i dati sono memorizzati.
In ambienti a elevato utilizzo, è possibile che la maggior parte delle attività di lettura/scrittura dei dati avvenga in rete piuttosto che localmente. L'archiviazione a oggetti nel cloud si basa su tecnologie quali Azure Data Lake Storage, AWS S3 o Google Cloud Storage. È indipendente dalle risorse di calcolo che vi accedono e permette quindi ai clienti di archiviare nel cloud volumi molto maggiori di dati.
I clienti che hanno l'esigenza di immagazzinare dati nell'ordine di petabyte possono scegliere l'archiviazione a oggetti nel cloud. Tuttavia, tutte le operazioni di lettura e scrittura sull'archivio cloud avverranno tramite la rete. Di conseguenza, è importante che le applicazioni che accedono ai dati sfruttino la cache, ove possibile, o includano una logica per ridurre al minimo le operazioni I/O.