In diesem Blog dreht sich alles um HDFS Erasure Coding. In diesem Blog werden wir das Konzept der Erasure Coding in Hadoop diskutieren , Probleme des alten Replikationsschemas. Zwei Algorithmen für die Hadoop-Löschcodierung wie der XOR-Algorithmus und der Reed-Solomon-Algorithmus werden ebenfalls in diesem Blog besprochen.
Zuletzt werden wir die Architektur und die Vorteile der Löschcodierung in Hadoop HDFS sehen.
Problem mit der Replikation des alten Schemas
HDFS-Löschcodierung ist eine neue Funktion, die eingeführt wurde, um den Speicheraufwand im Vergleich zur 3-fachen Replikation um etwa 50 % zu reduzieren. Hadoop HDFS repliziert jeden Block dreimal für verschiedene Zwecke. Es ist eine sehr einfache Form der Redundanz zum Schutz vor Datenknotenausfällen.
Neben den Vorteilen hat es verschiedene Nachteile, dass es sehr teuer ist. Die 3-fache Replikation hat 200 % Overhead an Speicherplatz und anderen Ressourcen. Datensätze mit niedrigen I / O-Aktivität, zusätzlich Repliken im Normalbetrieb nur selten zugegriffen werden, verbrauchen aber noch andere Ressourcen.
Aus diesem Grund wurde Hadoop Erasure Coding entwickelt. Es bietet das gleiche Maß an Fehlertoleranz mit weniger Speicherplatz und 50 % Speicher-Overhead.
Beim Vergleich der verschiedenen Speicherschemata ist Folgendes wichtig:
- Datenhaltbarkeit (Anzahl gleichzeitiger Fehlertoleranz)
- Speichereffizienz
Bei der N-Wege-Replikation gibt es also eine N-1-Fehlertoleranz mit einer Speichereffizienz von 1/n.
Was ist HDFS Erasure Coding in Hadoop?
HDFS Erasure Coding verwendet RAID . RAID implementiert EC verwendet Stripping. Beim Strippen werden die Daten logisch in Form eines Blocks gespeichert. Speichert dann diese Blöcke auf der anderen Platte. Es berechnet die Parität für jeden Block und Speicher. Dies ist verschlüsselt. Durch Parität werden Fehler wiederhergestellt.
Zur Fehlertoleranz erweitert EC die Nachricht mit redundanten Daten. HDFS Erasure Coding arbeitet mit einheitlich großen Datenzellen. Der Codec nimmt eine Anzahl von Datenzellen als Eingabe. Und erzeugt dann Paritätszellen als Ausgabe.
Dieser gesamte Vorgang wird als Kodierung bezeichnet. Parität und Datenzelle zusammen werden als Löschcodierungsgruppe bezeichnet. Der Vorgang, bei dem verlorene Datenzellen über die verbleibenden Zellen rekonstruiert werden, wird als Dekodierung bezeichnet.
Zwei Algorithmen, die für HDFS Erasure Coding verfügbar sind, lauten wie folgt:
a) XOR-Algorithmus
Es ist die einfache Implementierung von Hadoop Erasure Coding.
Nehmen wir an, die Datenzellen X und Y und Z sind Datenzellen, dann ist die Paritätszelle XOR dieser drei Datenzellen x ⊕ y ⊕ z Während der XOR-Operation wird also nur ein Paritätsbit generiert, und wenn ein Bit verloren geht, kann es durch die verbleibenden Datenzellen und ein Paritätsbit wiederhergestellt werden.
Es ist sehr begrenzt, da es 1 Paritätsbit erzeugt, sodass die XOR-Operation nur 1 Fehler mit n Gruppengröße tolerieren kann.
„Im XOR-Betrieb beträgt die Fehlertoleranz 1 und die Speichereffizienz n-1/n, wenn die Gruppengröße ist n. ”
b) Reed-Solomon-Algorithmus
Reed-Solomon befasst sich mit der Beschränkung der XOR-Operation. Es verwendet lineare Algebra, um mehrere Paritätszellen zu erzeugen. RS verwendet zwei Parameter k und m, k ist eine Anzahl von Datenzellen und m ist eine Anzahl von Paritätszellen.
RS funktioniert durch Multiplizieren von k Datenzellen mit einer Generatormatrix (G), um ein erweitertes Codewort mit k Datenzellen und m Paritätszellen zu generieren. Ein Speicherausfall kann durch Multiplizieren des Inversen der Generatormatrix mit den erweiterten Codewörtern wiederhergestellt werden, solange k von k+m Zellen verfügbar sind.
„Mit Reed, Solomon Fehlertoleranz ist bis zu m Zellen und Speichereffizienz k/k+m, wobei k Datenzellen und m Paritätszellen sind.“
Entwurfsentscheidung und Architektur
EC-Striping hat mehrere Vorteile:
- Stripping ermöglicht Online-EC (Daten sofort in EC-Format schreiben), eine Konvertierungsphase vermeiden und sofort Speicherplatz sparen.
- Es verteilt eine kleine Datei an mehrere Datanodes. Es eliminiert das Bündeln mehrerer Dateien in einer einzigen Codierungsgruppe. Dadurch werden Dateioperationen wie das Löschen und die Migration zwischen föderierten Namespaces vereinfacht.
- Um kleine Dateien besser zu unterstützen, unterstützt EC Stripping. Zukünftig wird HDFS auch ein zusammenhängendes EC-Layout unterstützen.
EC hat viele neue Komponenten hinzugefügt:
- NameNode-Erweiterungen (ECManager ) – Stripe HDFS-Dateien sind logisch aus Blockgruppen zusammengesetzt. Jeder von ihnen enthält eine bestimmte Anzahl interner Blöcke. Um den Speicherverbrauch von Namenode durch diese zusätzlichen Blöcke zu reduzieren, wurde ein neues hierarchisches Blockbenennungsprotokoll eingeführt. EC leitet die ID einer Blockgruppe aus der ID eines beliebigen ihrer internen Blöcke ab. Dies ermöglicht die Verwaltung auf der Ebene der Blockgruppe statt des Blocks.
- Client-Erweiterungen (EC-Client) – Der Client kann Lese- und Schreiboperationen auf mehreren internen Blöcken in einer Blockgruppe parallel ausführen.
- DataNode-Erweiterungen (ECWorker)- DataNode führt einen zusätzlichen EC-Worker-Task für die Wiederherstellung fehlgeschlagener löschcodierter Blöcke aus. NameNode erkennt also die fehlgeschlagenen EC-Blöcke, Namenode gibt Datenknoten Anweisungen zur Wiederherstellung. Dann übergibt es die Wiederherstellungsaufgabe als Heartbeat-Antwort.
Vorteile der Löschcodierung
- Datenverfügbarkeit bei geringerer Kapazität: HDFS Löschcodes ermöglichen die Datenverfügbarkeit bei geringerer Kapazität. Replizieren Sie zunächst Blöcke in drei Replikaten. Der Speicherplatz von drei Replikaten ist also groß. Aber jetzt werden bei der Löschcodierung große Daten als Paritätsbit gespeichert, sodass die Speicherung den Speicherplatz reduziert.
- Leistung: Da EC Daten als Parität anstelle von 3 Replikaten speichert, bietet es eine bessere Leistung.
- Schnelle Wiederherstellung: Es erkennt und behebt HDFS-Blockfehler sowohl aktiv (im Hintergrund) als auch passiv (auf dem Lesepfad).
Schlussfolgerung
Zusammenfassend können wir sagen, dass die HDFS-Erasure-Codierung den Speicheraufwand um 50 % reduziert hat. EC reduziert den Overhead aufgrund von Paritätsbits. Daher diese HDFS-Funktionen Ermöglichen Sie die Apache Hadoop-Funktionalität.
Wenn Sie Fragen oder Vorschläge zu Erasure Coding in HDFS haben, kommentieren Sie uns bitte im unten angegebenen Abschnitt.