HBase
 sql >> Database >  >> NoSQL >> HBase

Introduzione alla cache distribuita in Hadoop

In questo tutorial ti forniremo una descrizione dettagliata di una cache distribuita in Hadoop . Prima di tutto capiremo brevemente cos'è Hadoop, poi vedremo cos'è la cache distribuita in Hadoop.

Tratteremo anche il funzionamento e l'implementazione di Hadoop Distributed Cache. Infine in questo blog vedremo anche i vantaggi e gli svantaggi della memorizzazione nella cache distribuita in Hadoop.

Introduzione ad Hadoop

È un meccanismo fornito dal framework MapReduce per memorizzare nella cache i file necessari alle applicazioni. Può memorizzare nella cache file come file di testo/dati di sola lettura e tipi più complessi come archivi, file jar ecc.

Prima di iniziare con la cache distribuita, discutiamo prima che cos'è Hadoop?

Hadoop è un framework di programmazione open source basato su Java. Supporta l'elaborazione e l'archiviazione di set di dati estremamente grandi in un ambiente distribuito. Hadoop segue la topologia Master-Slave.

Master è NameNode e Slave è DataNode. Datanode archivia i dati effettivi in ​​ HDFS . Ed esegue operazioni di lettura e scrittura secondo la richiesta del client. Namenode memorizza i metadati.

In Apache Hadoop, i blocchi di dati vengono elaborati in parallelo tra i Datanode, utilizzando un programma scritto dall'utente. Se vogliamo accedere ad alcuni file da tutti i Datanode, inseriremo quel file nella cache distribuita.

Cos'è la cache distribuita in Hadoop?

Cache distribuita in Hadoop è una struttura fornita dal framework MapReduce. La cache distribuita può memorizzare nella cache i file quando richiesto dalle applicazioni. Può memorizzare nella cache solo file di testo, archivi, file jar ecc.

Dopo aver memorizzato nella cache un file per il nostro lavoro, Apache Hadoop lo renderà disponibile su ogni nodo di dati in cui sono in esecuzione le attività di mappatura/riduzione. Pertanto, possiamo accedere ai file da tutti i datanode nel nostro lavoro MapReduce.

Dimensione della cache distribuita

Per impostazione predefinita, la dimensione della cache distribuita è 10 GB. Se vogliamo regolare la dimensione della cache distribuita, possiamo regolare utilizzando local .cache .dimensioni.

Attuazione

Un'applicazione che utilizzerà la cache distribuita per distribuire un file:

  • Dovrebbe prima assicurarsi che il file sia disponibile.
  • Dopodiché, assicurati anche che sia possibile accedere al file tramite URL. Gli URL possono essere hdfs:// o https://.

Dopo la suddetta convalida, se il file è presente sugli URL citati. L'utente Hadoop lo menziona come un file di cache nella cache distribuita. Il processo Hadoop MapReduce copierà il file della cache su tutti i nodi prima di avviare le attività su quei nodi.

Segui la procedura seguente:

a) Copia il file richiesto nell'HDFS:

$ hdfs dfs-put/user/dataflair/lib/jar_file.jar

b) Imposta JobConf dell'applicazione:

DistributedCache.addFileToClasspath(nuovo percorso ("/user/dataflair/lib/jar-file.jar"), conf).

c) Aggiungilo nella classe Pilota.

Vantaggi della cache distribuita

  • Un singolo punto di errore- Poiché la cache distribuita viene eseguita su molti nodi. Quindi, il guasto di un singolo nodo non si traduce in un guasto completo della cache.
  • Coerenza dei dati- Tiene traccia dei timestamp di modifica dei file di cache. Quindi, notifica che i file non devono cambiare fino a quando non viene eseguito un lavoro. Utilizzando l'algoritmo di hash, il motore della cache può sempre determinare su quale nodo risiede un particolare valore-chiave. Come sappiamo, c'è sempre un singolo stato del cluster di cache, quindi non è mai incoerente.
  • Archivia dati complessi – Distribuisce file di testo semplici e di sola lettura. Memorizza anche tipi complessi come barattoli, archivi. Questi risultati vengono quindi annullati dall'archiviazione nel nodo slave.

Svantaggio della cache distribuita

Una cache distribuita in Hadoop ha un sovraccarico che la renderà più lenta di una cache in-process:

a) Serializzazione degli oggetti – Deve serializzare gli oggetti. Ma il meccanismo di serializzazione ha due problemi principali:

  • Molto ingombrante – La serializzazione archivia il nome completo della classe, il cluster e i dettagli dell'assembly. Memorizza anche i riferimenti ad altre istanze nelle variabili membro. Tutto ciò rende la serializzazione molto ingombrante.
  • Molto lento – La serializzazione usa la riflessione per controllare il tipo di informazioni in fase di esecuzione. La riflessione è un processo molto lento rispetto al codice precompilato.

Conclusione

In conclusione alla cache distribuita, possiamo dire che è una funzionalità fornita da MapReduce. Memorizza nella cache i file quando necessario dalle applicazioni. Può memorizzare nella cache solo file di testo, archivi, file jar ecc.

Per impostazione predefinita, la dimensione della cache distribuita è 10 GB. Se trovi questo blog o hai domande relative alla cache distribuita in Hadoop, non esitare a condividere con noi.