Vuoi sapere come Hadoop archivia enormi quantità di dati in modo affidabile e tollerante ai guasti?
In questo tutorial HDFS, discuteremo uno dei componenti principali di Hadoop, ovvero Hadoop Distributed File System (HDFS).
Per prima cosa, vedremo un'introduzione al FileSystem distribuito. Quindi studieremo il file system distribuito Hadoop. L'articolo spiega il motivo dell'utilizzo di HDFS, dell'architettura HDFS e dei blocchi in HDFS.
L'articolo elenca anche alcune delle funzionalità di Hadoop HDFS. Inoltre, verrai a conoscenza dei messaggi di heartbeat in Hadoop HDFS.
Questo tutorial HDFS fornisce la guida introduttiva completa allo storage Hadoop HDFS più affidabile.
Iniziamo innanzitutto con un'introduzione al FileSystem distribuito.
FileSystem distribuito
Quando il set di dati supera la capacità di archiviazione di una singola macchina, diventa obbligatorio partizionare il set di dati su più macchine separate. Il filesystem che gestisce i dati attraverso la rete di macchine è chiamato filesystem distribuito .
Un filesystem distribuito è un filesystem che ci consente di archiviare dati su più macchine o nodi in un cluster e consente a più utenti di accedere ai dati.
Poiché il DFS è basato sulla rete, tutte le complicazioni della programmazione di rete entrano in gioco, rendendo un file system distribuito più complesso del normale file system. Una delle maggiori sfide in DFS è tollerare l'errore del nodo senza subire la perdita di dati.
Hadoop viene fornito con un filesystem distribuito chiamato Hadoop Distributed Filesystem per l'archiviazione di grandi quantità di dati fornendo al contempo tolleranza agli errori e alta disponibilità.
Curioso di conoscere HDFS? Quindi ora, iniziamo con il tutorial HDFS.
Esercitazione HDFS – Introduzione
Hadoop Distributed FileSystem (HDFS) è un file system distribuito basato su java utilizzato in Hadoop per archiviare una grande quantità di dati strutturati o non strutturati, di dimensioni variabili da GigaBytes a PetaBytes, su un cluster di hardware di base. È lo storage più affidabile conosciuto fino ad oggi sul pianeta.
In HDFS, i dati vengono archiviati in più posizioni, quindi se una delle macchine si guasta, i dati possono essere recuperati da un'altra macchina contenente la copia dei dati. Pertanto è altamente tollerante ai guasti e non garantisce la perdita di dati anche in caso di guasto dell'hardware.
È il componente principale di Hadoop, insieme a MapReduce, YARN e altre utilità comuni.
Segue un Write-Once-Read-Many filosofia che semplifica la coerenza dei dati e consente l'accesso a velocità effettiva elevata.
Perché HDFS?
Nel mondo IT di oggi, quasi il 75% dei dati mondiali risiede in Hadoop HDFS. È dovuto al seguente motivo:
- HDFS archivia i dati sull'hardware di base, per cui non sono necessarie macchine di fascia alta per l'archiviazione di big data. Fornisce così uno spazio di archiviazione economico per l'archiviazione di big data.
- HDFS segue il modello di elaborazione dei dati più efficiente che è il modello Write-Once-Read-Many-Times. Viene copiato un set di dati generato da varie fonti, quindi le varie analisi vengono eseguite su quel set di dati nel tempo. Quindi, è meglio per l'elaborazione in batch.
- HDFS può archiviare dati di qualsiasi dimensione generati da qualsiasi fonte in qualsiasi formato, strutturato o non strutturato.
- Il suo modello write-one-read-many allenta i requisiti di controllo della concorrenza. È possibile accedere ai dati più volte senza alcun problema relativo alla coerenza dei dati.
- HDFS funziona sul presupposto della località dei dati che lo spostamento del calcolo sui dati è molto più semplice e veloce rispetto allo spostamento dei dati nell'unità di calcolo. HDFS facilita l'individuazione della logica di elaborazione vicino ai dati anziché spostare i dati nello spazio dell'applicazione. In questo modo riduce la congestione della rete e i tempi di risposta complessivi.
Quindi, andando avanti in questo tutorial HDFS, passiamo all'architettura HDFS.
Architettura HDFS
Hadoop DFS segue master-slave architettura. L'HDFS è costituito da due tipi di nodi che sono nodi master e nodi slave. Il nodo master gestisce lo spazio dei nomi del file system, ovvero memorizza i metadati sui blocchi di file.
I nodi slave memorizzano i dati utente e sono responsabili dell'elaborazione dei dati in base alle istruzioni del nodo master.
Master HDFS
Master in HDFS è il fulcro di Hadoop HDFS. Sono le macchine di fascia alta che memorizzano i metadati relativi a tutti i file archiviati in HDFS. Gestisce e mantiene lo spazio dei nomi del filesystem e fornisce istruzioni ai nodi slave.
Il NomeNode è il nodo principale in Hadoop HDFS.
Slave HDFS
I nodi slave sono responsabili della memorizzazione dei dati aziendali effettivi. Sono le normali macchine di configurazione (hardware di base) che memorizzano ed elaborano i set di dati su istruzione del nodo master.
I DataNode sono i nodi slave in Hadoop HDFS.
Nome HDFS
NameNode è il nodo principale. Gestisce le operazioni dello spazio dei nomi del filesystem come l'apertura/chiusura, la ridenominazione di file e directory. NameNode associa i blocchi di dati ai DataNode e registra ogni modifica apportata allo spazio dei nomi del filesystem.
Nodo dati HDFS
I DataNode sono i nodi slave che gestiscono le richieste di lettura/scrittura dai client HDFS. DataNodes crea, elimina e replica i blocchi di dati secondo le istruzioni del nodo del nome di governo.
Ti chiedi come vengono archiviati i dati in HDFS?
Blocchi in HDFS
HDFS divide i file in blocchi di dimensioni blocchi chiamati blocchi di dati. Questi blocchi sono archiviati in più DataNode nel cluster. La dimensione del blocco predefinita è 128 MB. Possiamo configurare la dimensione del blocco predefinita, a seconda della configurazione del cluster.
Per il cluster con macchine di fascia alta, la dimensione del blocco può essere mantenuta grande (come 256 Mb o più). Per il cluster con macchine con configurazione come 8Gb di RAM, la dimensione del blocco può essere ridotta (come 64 Mb).
Inoltre, HDFS crea repliche di blocchi in base al fattore di replica (un numero che definisce le copie totali di un blocco di un file). Per impostazione predefinita, il fattore di replica è 3. Significa che 3 copie di ogni blocco vengono create e archiviate su più nodi.
Se uno qualsiasi dei DataNode ha esito negativo, il blocco viene recuperato da un altro DataNode contenente una replica di un blocco. Questo rende la tolleranza ai guasti di HDFS.
Hai pensato a come NameNode scopre l'errore di DataNode?
Errore DataNode
Tutti i DataNode in Hadoop HDFS inviano continuamente un piccolo messaggio heartbeat (segnali) a NameNode per dire "I am Alive" ogni 3 secondi.
Se NameNode non riceve un messaggio heartbeat da un particolare DataNode per più di 10 minuti, considera quel DataNode come morto e inizia a creare una replica dei blocchi che erano disponibili su quel DataNode.
NameNode indica ai DataNode contenenti una copia di tali dati di replicare tali dati su altri DataNode per bilanciare la replica. In questo modo, NameNode rileva un errore di DataNode.
Vuoi sapere come NameNode posiziona le repliche su diversi DataNode? Esploriamo la consapevolezza del rack in HDFS per ottenere una risposta alla domanda precedente.
Consapevolezza del rack in HDFS
Hadoop HDFS archivia i dati nel cluster di hardware di base. Per fornire la tolleranza agli errori, le repliche dei blocchi vengono create e archiviate su DataNode diversi.
NameNode posiziona le repliche dei blocchi su più DataNode seguendo l'algoritmo Rack Awareness per garantire che non ci siano perdite di dati anche se DataNode o l'intero rack si interrompono. Il NameNode posiziona la prima replica sul DataNode più vicino.
Memorizza la seconda replica su DataNode diversi sullo stesso rack e la terza replica su DataNode diversi su un rack diverso.
Se il fattore di replica è 2, posiziona la seconda replica su un DataNode diverso su un rack diverso in modo che se un rack completo si disattiva, anche il sistema sarà altamente disponibile.
Lo scopo principale di una politica di posizionamento delle repliche compatibile con il rack è migliorare la tolleranza ai guasti, l'affidabilità dei dati e la disponibilità.
Successivamente, nel tutorial HDFS, discutiamo alcune funzionalità chiave di Hadoop HDFS.
Caratteristiche importanti di Hadoop HDFS
1. Alta disponibilità
È un file system ad alta disponibilità. In questo file system, i dati vengono replicati tra i nodi del cluster Hadoop creando una replica dei blocchi sugli altri slave presenti nel cluster HDFS. Quindi, ogni volta che un utente desidera accedere a questi dati, può accedere ai propri dati dagli slave, che contengono i suoi blocchi.
2. Tolleranza ai guasti
La tolleranza ai guasti in Hadoop HDFS è la forza operativa di un sistema in condizioni sfavorevoli. È altamente tollerante ai guasti. Il framework Hadoop divide i dati in blocchi.
Successivamente, crea più copie di blocchi su macchine diverse nel cluster. Pertanto, quando una macchina nel cluster si arresta, un client può accedere facilmente ai propri dati dall'altra macchina, che contiene la stessa copia dei blocchi di dati.
3. Alta affidabilità
HDFS fornisce un'archiviazione dati affidabile. Può memorizzare dati nell'intervallo di 100 petabyte. HDFS archivia i dati in modo affidabile su un cluster. Divide i dati in blocchi. Quindi, il framework Hadoop archivia questi blocchi sui nodi presenti nel cluster.
HDFS inoltre archivia i dati in modo affidabile creando una replica di ogni singolo blocco presente nel cluster. Quindi fornisce una struttura di tolleranza ai guasti.
4. Replica
La replica dei dati è una caratteristica unica di HDFS. La replica risolve il problema della perdita di dati in condizioni sfavorevoli come guasti hardware, crash dei nodi, ecc. HDFS mantiene il processo di replica a intervalli di tempo regolari.
Continua inoltre a creare repliche dei dati utente su diverse macchine presenti nel cluster. Quindi, quando un nodo si interrompe, l'utente può accedere ai dati da altre macchine. Pertanto, non vi è alcuna possibilità di perdere i dati dell'utente.
5. Scalabilità
Memorizza i dati su più nodi nel cluster. Pertanto, ogni volta che i requisiti aumentano, puoi ridimensionare il cluster. In HDFS sono disponibili due meccanismi di scalabilità:scalabilità verticale e orizzontale.
6. Stoccaggio distribuito
Le funzionalità HDFS sono ottenute tramite l'archiviazione e la replica distribuite. Memorizza i dati in modo distribuito tra i nodi. In Hadoop, i dati sono suddivisi in blocchi e archiviati sui nodi presenti nel cluster.
Successivamente, crea la replica di ogni singolo blocco e archivia su altri nodi. Quando la singola macchina nel cluster si arresta in modo anomalo, possiamo accedere facilmente ai nostri dati dagli altri nodi che contengono la sua replica.
Successivamente, nel tutorial HDFS, discutiamo alcune utili operazioni HDFS.
Operazione HDFS
Hadoop HDFS ha molte somiglianze con il file system Linux. Possiamo eseguire quasi tutte le operazioni che possiamo fare con un file system locale come creare una directory, copiare il file, modificare i permessi, ecc.
Fornisce inoltre diversi diritti di accesso come lettura, scrittura ed esecuzione a utenti, gruppi e altri.
1. Leggi Operazione
Quando il client HDFS vuole leggere qualsiasi file da HDFS, il client interagisce prima con NameNode. NameNode è l'unico posto in cui vengono archiviati i metadati. NameNode specifica l'indirizzo degli slave in cui sono archiviati i dati. Quindi, il client interagisce con i DataNode specificati e legge i dati da lì.
Il client HDFS interagisce con l'API del file system distribuito. Quindi, invia una richiesta a NameNode per inviare una posizione di blocco. NameNode prima controlla se il client ha privilegi sufficienti per accedere ai dati o no? Successivamente, NameNode condividerà l'indirizzo in cui i dati sono archiviati nel DataNode.
NameNode fornisce un token al client, che mostra al DataNode per la lettura del file per motivi di sicurezza. Quando un client va a DataNode per leggere il file, dopo aver controllato il token, DataNode consente al client di leggere quel particolare blocco.
Dopo che il client apre il flusso di input e inizia a leggere i dati dai DataNode specificati. Pertanto, in questo modo, il client legge i dati direttamente da DataNode.
2. Operazione di scrittura
Per scrivere un file, il client interagisce prima con NameNode. HDFS NameNode fornisce l'indirizzo del DataNode su cui i dati devono essere scritti dal client.
Quando il client termina la scrittura del blocco, il DataNode inizia a replicare il blocco in un altro DataNode. Quindi copia il blocco nel terzo DataNode. Una volta creata la replica richiesta, invia un riconoscimento finale al client. L'autenticazione è la stessa dell'operazione di lettura.
Il client invia solo 1 copia dei dati indipendentemente dal nostro fattore di replica, mentre i DataNode replicano i blocchi. La scrittura di file non è costosa perché scrive più blocchi parallelamente più blocchi su più DataNode.
Riepilogo
Nella conclusione del tutorial HDFS, possiamo affermare che Hadoop HDFS archivia i dati in modo distribuito nel cluster di hardware di base.
Hadoop HDFS è un sistema di archiviazione altamente affidabile, tollerante ai guasti e ad alta disponibilità noto fino ad oggi. Segue l'architettura master-slave in cui NameNode è il nodo principale e i DataNode sono i nodi slave.
Inoltre, HDFS divide il file di input del client in blocchi di dimensioni 128 MB, che possiamo configurare secondo le nostre esigenze. Memorizza anche repliche di blocchi per fornire tolleranza agli errori.
NameNode segue la politica di consapevolezza del rack per l'inserimento di repliche su DataNode per garantire che nessun dato venga perso in caso di guasto della macchina o guasto dell'hardware. Inoltre, i DataNode inviano un messaggio heartbeat a NameNode per assicurarsi che siano attivi.
Durante la lettura o la scrittura del file, il client interagisce prima con il NameNode.
L'Hadoop HDFS è un sistema di storage scalabile, affidabile, distribuito, tollerante ai guasti e ad alta disponibilità per l'archiviazione di big data.