Che cos'è la cache distribuita in Hadoop?

Hadoop è un framework open source che utilizza l'archiviazione distribuita e l'elaborazione di enormi set di dati tramite HDFS e MapReduce. Ha NameNodes che memorizzano i metadati e DataNodes che memorizzano i dati effettivi in ​​HDFS. Quando abbiamo bisogno di elaborare enormi set di dati, viene eseguito da un programma scritto dagli utenti e quindi l'elaborazione viene eseguita in parallelo in DataNodes. Nel framework Hadoop, ci sono alcuni file necessari frequentemente per i lavori MapReduce. Se è in esecuzione il numero di mapper, ogni volta che è necessario leggere i file da HDFS, la latenza aumenta man mano che aumenta anche il tempo di ricerca. Quindi, invece di leggere i file ogni volta che sono necessari, i file possono essere copiati e inviati a tutti i DataNode. Questo meccanismo si chiama Cache distribuita in Hadoop.

Funzionamento della cache distribuita in Hadoop

  • Hadoop copia i file specificati dalle opzioni come –files, -libjars e –archives su HDFS all'avvio di un lavoro. Quindi Node Manager copierà i file da HDFS nella cache in modo che quando un'attività viene eseguita, possa accedere ai file. I file possono essere definiti localizzati quando vengono copiati nella cache o sul disco locale.
  • Nella cache, il conteggio del numero di attività che utilizzano ciascun file viene gestito come riferimento da Node Manager. Il conteggio dei riferimenti dei file diventa 1 prima dell'esecuzione dell'attività. Ma dopo che l'attività è stata eseguita, il conteggio diminuisce di 1. Quando il conteggio diventa 0, il file può essere eliminato in quanto non viene utilizzato. Quando la cache di un nodo raggiunge le sue dimensioni determinate, l'eliminazione di un file viene eseguita in modo tale da poter ospitare i nuovi file. La dimensione della cache può essere modificata nella proprietà di configurazione. La dimensione della cache distribuita in Hadoop è di default 10 GB.
  • MapReduce diventa più lento della cache in-process se ha un sovraccarico. Per ovviare a questa situazione, la cache distribuita può serializzare gli oggetti ma anche questo ha pochi problemi. La riflessione è un processo utilizzato per indagare il tipo di informazioni durante il runtime che è molto lento. Inoltre, diventa molto difficile nella serializzazione in cui memorizza il nome completo del cluster, il nome della classe e i riferimenti ad altre istanze presenti nelle variabili membro.

Implementazione di Hadoop nella cache distribuita

  • Per utilizzare la cache distribuita per un'applicazione, è necessario assicurarsi che, al fine di distribuire un file tra i nodi; il file dovrebbe essere prima disponibile. Quindi dobbiamo copiare i file su HDFS e dobbiamo anche verificare che il file sia accessibile tramite URI che possono essere trovati accedendo a core-site.xml. Quindi il processo MapReduce copia il file cache in tutti i nodi prima che le attività inizino a essere eseguite su tali nodi.
  • Quindi, per implementare la cache distribuita, dobbiamo copiare i file su HDFS e possiamo verificare se ciò avviene o meno tramite il comando hdfs dfs –put /path/samplefile.jar. Inoltre, è necessario impostare la configurazione del lavoro per l'applicazione e questo deve essere aggiunto alla classe del driver.
  • I file che sono leggibili solo dal proprietario, vanno nella cache privata mentre la cache condivisa ha i file leggibili in tutto il mondo. Il file che viene aggiunto alla cache viene utilizzato senza alcun vincolo in tutte le macchine del cluster come file locale. Le chiamate API di seguito possono essere utilizzate per aggiungere i file nella cache.

Codice:

DistributedCache.addCacheFile(URI, conf);
DistributedCache.setCacheFiles(URIs, conf);

La condivisione dei file della cache distribuita sui nodi slave dipende dal fatto che i file della cache distribuita siano privati ​​o pubblici. I file privati ​​della cache distribuita vengono memorizzati nella directory locale dell'utente, che è privata per l'utente e questi file sono richiesti dai lavori dell'utente. Nel caso dei file della cache distribuita pubblica, i file vengono memorizzati nella cache della directory globale. L'accesso ai file in caso di cache pubblica è impostato in modo che siano visibili a tutti gli utenti. Inoltre, il file della cache distribuita diventa privato o pubblico a seconda dell'autorizzazione sul file system.

Vantaggi della cache distribuita in Hadoop

Con l'uso della cache distribuita, molte funzioni vantaggiose vengono aggiunte al framework Hadoop. Di seguito sono riportati i vantaggi dell'utilizzo della cache distribuita:

1. Cache distribuita in Single Point of Failure

In caso di errore di un nodo, non verrà eseguito l'intero errore della cache. Perché la cache distribuita viene eseguita come processo autonomo o indipendente tra i vari nodi. Quindi, se l'errore della cache si verifica su un nodo, ciò non significa che anche la cache completa dovrebbe fallire.

2. Coerenza dei dati

Utilizzando l'algoritmo hash, si può determinare quali coppie chiave-valore appartengono a quale nodo. Inoltre, la cache distribuita in Hadoop monitora o tiene traccia della modifica del timestamp apportata ai file della cache e segnala che fino a quando il lavoro non viene eseguito, un file non dovrebbe cambiare. Quindi i dati non diventano mai incoerenti a causa del singolo stato del cluster di cache.

3. Archiviazione di dati complessi

La cache distribuita nel framework Hadoop offre il vantaggio di memorizzare nella cache i file di sola lettura come file di testo, file jar, ecc. E quindi trasmetterli ai nodi di dati. Per questo motivo, una copia del file viene archiviata in ciascun nodo dati. Con la funzione cache distribuita, i file complessi come un vaso, ecc. Vengono distribuiti e archiviati.

Conclusione

La cache distribuita offre efficienza perché i file vengono copiati una volta per ogni processo. Inoltre, ha la capacità di memorizzare nella cache gli archivi che non sono archiviati su slave. L'utilizzo della cache distribuita è un ulteriore vantaggio e dipende dallo sviluppatore per utilizzare al meglio questa funzionalità.

Articoli consigliati

Questa è una guida alla cache distribuita in Hadoop. Qui discutiamo di Cos'è la cache distribuita in Hadoop, il suo lavoro, l'implementazione e i vantaggi. Puoi anche consultare i nostri altri articoli correlati per saperne di più -

  1. Vantaggi di Hadoop
  2. Installa Hadoop
  3. Che cos'è Head in Git?
  4. Apache Hadoop Ecosystem
  5. Variabili in JavaScript

Categoria: