Was ist verteilter Cache in Hadoop?

Hadoop ist ein Open-Source-Framework, das verteilten Speicher sowie die Verarbeitung großer Datenmengen mithilfe von HDFS und MapReduce verwendet. Es hat NameNodes, die die Metadaten speichern, und DataNodes, die die tatsächlichen Daten in HDFS speichern. Wenn wir die riesigen Datenmengen verarbeiten müssen, wird dies von einem Programm durchgeführt, das von den Benutzern geschrieben wurde, und dann wird die Verarbeitung in den DataNodes parallel durchgeführt. Im Hadoop-Framework gibt es bestimmte Dateien, die von den MapReduce-Jobs häufig benötigt werden. Wenn eine bestimmte Anzahl von Zuordnern ausgeführt wird, erhöht sich die Latenz jedes Mal, wenn die Dateien von HDFS gelesen werden müssen, ebenso wie die Suchzeit. Anstatt die Dateien jedes Mal zu lesen, wenn sie benötigt werden, können sie kopiert und an alle DataNodes gesendet werden. Dieser Mechanismus wird in Hadoop als Distributed Cache bezeichnet.

Arbeiten mit verteiltem Cache in Hadoop

  • Hadoop kopiert die Dateien, die durch die Optionen –files, -libjars und –archives angegeben werden, beim Starten eines Jobs in das HDFS. Anschließend kopiert der Node Manager die Dateien von HDFS in den Cache, sodass er bei Ausführung einer Aufgabe auf die Dateien zugreifen kann. Die Dateien können als lokalisiert bezeichnet werden, wenn sie in den Cache oder auf die lokale Festplatte kopiert werden.
  • Im Cache wird die Anzahl der Tasks, die jede Datei verwenden, vom Node Manager als Referenz verwaltet. Die Referenzanzahl der Dateien wird 1, bevor die Task ausgeführt wird. Nachdem die Aufgabe ausgeführt wurde, wird die Anzahl um 1 verringert. Wenn die Anzahl 0 wird, kann die Datei gelöscht werden, da sie nicht verwendet wird. Wenn der Cache eines Knotens eine bestimmte Größe erreicht, wird eine Datei gelöscht, damit die neuen Dateien gespeichert werden können. Die Größe des Caches kann in der Konfigurationseigenschaft geändert werden. Die Größe des verteilten Caches in Hadoop beträgt standardmäßig 10 GB.
  • Der MapReduce-Cache wird langsamer als der In-Process-Cache, wenn Overhead auftritt. Um diese Situation zu überwinden, kann der verteilte Cache die Objekte serialisieren, aber selbst dies hat nur wenige Probleme. Reflexion ist ein Prozess zur Untersuchung des Informationstyps während der Laufzeit, der sehr langsam ist. Außerdem wird es bei der Serialisierung sehr schwierig, den vollständigen Clusternamen und den Klassennamen zusammen mit Verweisen auf andere in den Mitgliedsvariablen vorhandene Instanzen zu speichern.

Implementierung von Hadoop in Distributed Cache

  • Um den verteilten Cache für eine Anwendung zu verwenden, müssen Sie sicherstellen, dass eine Datei auf die Knoten verteilt wird. Die Datei sollte zuerst verfügbar sein. Wir müssen also die Dateien in HDFS kopieren und auch überprüfen, ob auf die Datei über URIs zugegriffen werden kann, die über den Zugriff auf die Datei core-site.xml gefunden werden können. Anschließend kopiert der MapReduce-Job die Cache-Datei auf alle Knoten, bevor die Aufgaben auf diesen Knoten ausgeführt werden.
  • Um den verteilten Cache zu implementieren, müssen wir die Dateien in HDFS kopieren und können mithilfe des Befehls hdfs dfs –put /path/samplefile.jar überprüfen, ob dies erfolgt ist oder nicht. Außerdem muss die Auftragskonfiguration für die Anwendung eingerichtet und der Treiberklasse hinzugefügt werden.
  • Die Dateien, die nur vom Eigentümer gelesen werden können, werden in den privaten Cache verschoben, während der gemeinsam genutzte Cache die Dateien enthält, die von der Welt gelesen werden können. Die Datei, die zum Cache hinzugefügt wird, wird ohne Einschränkung auf allen Computern im Cluster als lokale Datei verwendet. Die folgenden API-Aufrufe können zum Hinzufügen der Dateien zum Cache verwendet werden.

Code:

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

Die gemeinsame Nutzung verteilter Cache-Dateien auf den Slave-Knoten hängt davon ab, ob die verteilten Cache-Dateien privat oder öffentlich sind. Die privaten Distributed Cache-Dateien werden im lokalen Verzeichnis des Benutzers zwischengespeichert, das für den Benutzer privat ist, und diese Dateien werden für die Jobs des Benutzers benötigt. Bei den öffentlich verteilten Cachedateien werden die Dateien im globalen Verzeichnis zwischengespeichert. Der Zugriff auf Dateien im Falle eines öffentlichen Caches wird so eingerichtet, dass sie für alle Benutzer sichtbar sind. Außerdem wird die verteilte Cachedatei abhängig von der Berechtigung für das Dateisystem privat oder öffentlich.

Vorteile von verteiltem Cache in Hadoop

Mit der Verwendung des verteilten Cache werden dem Hadoop-Framework viele vorteilhafte Funktionen hinzugefügt. Nachfolgend sind die Vorteile der Verwendung von verteiltem Cache aufgeführt:

1. Verteilter Cache im Single Point of Failure

Wenn ein Knoten ausfällt, führt dies nicht zum vollständigen Ausfall des Caches. Weil der verteilte Cache als eigenständiger oder unabhängiger Prozess auf den verschiedenen Knoten ausgeführt wird. Wenn der Cache-Fehler also an einem Knoten auftritt, bedeutet dies nicht, dass auch der gesamte Cache fehlschlagen sollte.

2. Datenkonsistenz

Durch die Verwendung des Hash-Algorithmus kann festgestellt werden, welche Schlüssel-Wert-Paare zu welchem ​​Knoten gehören. Außerdem überwacht oder verfolgt der verteilte Cache in Hadoop die an den Cache-Dateien vorgenommenen Zeitstempeländerungen und meldet, dass eine Datei bis zur Ausführung des Jobs nicht geändert werden sollte. Daher werden die Daten aufgrund des einzelnen Status des Cache-Clusters niemals inkonsistent.

3. Speicherung komplexer Daten

Der verteilte Cache im Hadoop-Framework bietet den Vorteil, dass schreibgeschützte Dateien wie Textdateien, JAR-Dateien usw. zwischengespeichert und dann an Datenknoten gesendet werden. Aus diesem Grund wird in jedem Datenknoten eine Kopie der Datei gespeichert. Mit der Distributed-Cache-Funktion werden komplexe Dateien wie ein JAR usw. verteilt und gespeichert.

Fazit

Der verteilte Cache sorgt für Effizienz, da die Dateien für jeden Job einmal kopiert werden. Außerdem kann es die auf Slaves nicht archivierten Archive zwischenspeichern. Die Verwendung von verteiltem Cache ist ein zusätzlicher Bonus und hängt davon ab, ob der Entwickler diese Funktion optimal nutzt.

Empfohlene Artikel

Dies ist eine Anleitung zum verteilten Cache in Hadoop. Hier diskutieren wir, was Distributed Cache in Hadoop ist, seine Arbeit, Implementierung und Vorteile. Sie können auch unsere anderen verwandten Artikel durchgehen, um mehr zu erfahren -

  1. Vorteile von Hadoop
  2. Installieren Sie Hadoop
  3. Was ist Head in Git?
  4. Apache Hadoop-Ökosystem
  5. Variablen in JavaScript

Kategorie: