In diesem Tutorial stellen wir Ihnen eine detaillierte Beschreibung eines verteilten Caches in Hadoop zur Verfügung . Zuerst werden wir kurz verstehen, was Hadoop ist, dann werden wir sehen, was Distributed Cache in Hadoop ist.
Wir werden auch die Funktionsweise und Implementierung von Hadoop Distributed Cache behandeln. Zuletzt werden wir in diesem Blog auch die Vor- und Nachteile des verteilten Cachings in Hadoop sehen.
Einführung in Hadoop
Es ist ein Mechanismus, den das MapReduce-Framework bereitstellt, um Dateien zwischenzuspeichern, die von den Anwendungen benötigt werden. Es kann Dateien wie schreibgeschützte Text-/Datendateien und komplexere Typen wie Archive, JAR-Dateien usw. zwischenspeichern.
Bevor wir mit Distributed Cache beginnen, lassen Sie uns zuerst diskutieren, was Hadoop ist?
Hadoop ist ein Java-basiertes Open-Source-Programmier-Framework. Es unterstützt die Verarbeitung und Speicherung extrem großer Datensätze in einer verteilten Umgebung. Hadoop folgt der Master-Slave-Topologie.
Master ist NameNode und Slave ist DataNode. Datanode speichert tatsächliche Daten in HDFS . Und es führt Lese- und Schreibvorgänge gemäß der Anforderung für den Client durch. Namenode speichert Metadaten.
In Apache Hadoop werden Datenblöcke mithilfe eines vom Benutzer geschriebenen Programms parallel zwischen Datanodes verarbeitet. Wenn wir auf einige Dateien von allen Datanodes zugreifen möchten, legen wir diese Datei in den verteilten Cache.
Was ist verteilter Cache in Hadoop?
Verteilter Cache in Hadoop ist eine Einrichtung, die vom MapReduce-Framework bereitgestellt wird. Der verteilte Cache kann Dateien zwischenspeichern, wenn dies von den Anwendungen benötigt wird. Es kann schreibgeschützte Textdateien, Archive, JAR-Dateien usw. zwischenspeichern.
Sobald wir eine Datei für unseren Job zwischengespeichert haben, stellt Apache Hadoop sie auf allen Datenknoten zur Verfügung, auf denen Map/Reduce-Aufgaben ausgeführt werden. Somit können wir auf Dateien von allen Datenknoten in unserem MapReduce-Job zugreifen.
Größe des verteilten Caches
Standardmäßig beträgt die verteilte Cachegröße 10 GB. Wenn wir die Größe des verteilten Caches anpassen möchten, können wir dies mit local anpassen .zwischenspeichern .Größe.
Implementierung
Eine Anwendung, die den verteilten Cache verwendet, um eine Datei zu verteilen:
- Sollte zuerst sicherstellen, dass die Datei verfügbar ist.
- Stellen Sie danach auch sicher, dass auf die Datei über URLs zugegriffen werden kann. URLs können entweder hdfs:// oder https://. sein
Nach der obigen Überprüfung, ob die Datei auf den genannten URLs vorhanden ist. Der Hadoop-Benutzer erwähnt, dass es sich um eine Cache-Datei für den verteilten Cache handelt. Der Hadoop MapReduce-Job kopiert die Cache-Datei auf alle Knoten, bevor Aufgaben auf diesen Knoten gestartet werden.
Gehen Sie wie folgt vor:
a) Kopieren Sie die erforderliche Datei in das HDFS:
$ hdfs dfs-put/user/dataflair/lib/jar_file.jar
b) Richten Sie die JobConf der Anwendung ein:
DistributedCache.addFileToClasspath(neuer Pfad („/user/dataflair/lib/jar-file.jar“), conf).
c) Fügen Sie es in der Treiberklasse hinzu.
Vorteile des verteilten Caches
- Single Point of Failure- Da verteilte Caches über viele Knoten laufen. Daher führt der Ausfall eines einzelnen Knotens nicht zu einem vollständigen Ausfall des Caches.
- Datenkonsistenz- Es verfolgt die Änderungszeitstempel von Cache-Dateien. Anschließend teilt es mit, dass die Dateien nicht geändert werden sollen, bis ein Job ausgeführt wird. Mithilfe des Hashalgorithmus kann die Cache-Engine immer bestimmen, auf welchem Knoten sich ein bestimmter Schlüsselwert befindet. Wie wir wissen, gibt es immer einen einzigen Zustand des Cache-Clusters, also ist er nie inkonsistent.
- Speichern Sie komplexe Daten – Es verteilt einfache, schreibgeschützte Textdateien. Es speichert auch komplexe Typen wie Gläser, Archive. Diese Errungenschaften werden dann auf dem Slave-Knoten aus dem Archiv entfernt.
Nachteil des verteilten Caches
Ein verteilter Cache in Hadoop hat einen Overhead, der ihn langsamer macht als ein In-Process-Cache:
a) Objektserialisierung – Es muss Objekte serialisieren. Aber der Serialisierungsmechanismus hat zwei Hauptprobleme:
- Sehr sperrig – Die Serialisierung speichert den vollständigen Klassennamen, Cluster und Assemblydetails. Es speichert auch Verweise auf andere Instanzen in Mitgliedsvariablen. All dies macht die Serialisierung sehr umfangreich.
- Sehr langsam – Die Serialisierung verwendet Reflektion, um die Art der Informationen zur Laufzeit zu untersuchen. Reflektion ist im Vergleich zu vorkompiliertem Code ein sehr langsamer Prozess.
Schlussfolgerung
Abschließend zum verteilten Cache können wir sagen, dass es sich um eine Einrichtung handelt, die von MapReduce bereitgestellt wird. Es speichert Dateien, wenn sie von den Anwendungen benötigt werden. Es kann schreibgeschützte Textdateien, Archive, JAR-Dateien usw. zwischenspeichern.
Standardmäßig beträgt die verteilte Cachegröße 10 GB. Wenn Sie diesen Blog finden oder Fragen zu Distributed Cache in Hadoop haben, teilen Sie uns dies bitte mit.