Hadoop HDFS Backup & DR Strategie

7

Wir bereiten die Implementierung unseres ersten Hadoop-Clusters vor. Als solches beginnen wir klein mit einem Vier-Knoten-Setup. (1 Hauptknoten und 3 Arbeitsknoten) Jeder Knoten verfügt über 6 TB Speicher. (6 x 1 TB Festplatten) Wir haben uns für ein SuperMicro 4-Knoten-Gehäuse entschieden, sodass sich alle vier Knoten eine einzige 4U-Box teilen.

Wir schauen uns nun an, wie diese Lösung für die Notfallwiederherstellung gesichert werden kann. (Denken Sie an Rack- oder Site-Verlust, nicht an Laufwerksverlust.) Die beste Lösung scheint eine Cluster-zu-Cluster-Kopie zu sein. Ich habe aber auch über Leute gelesen, die Daten von einer NAS- oder SMB-Freigabe kopieren. Außerdem werden wir den Masterknoten mit herkömmlichen Sicherungsmitteln sichern. Ich mache mir nur Sorgen um die HDFS-Daten. Hier sind meine Fragen:

1) Kann ich für die Cluster-zu-Cluster-Kopie einen EINZELNEN Knotencluster mit viel Speicherplatz einrichten, der als externes Replikat fungiert? Die Leistung ist mir egal, nur die Existenz und die Fähigkeit, den gesamten Datensatz zu speichern. (Wiederherstellungszeiten sind kein Problem, da dieser Cluster nicht für Missionen kritisch ist.) Kann die Kopie so geplant werden, dass sie nur einmal am Tag usw. ausgeführt wird?

2) Wie funktioniert dies bei der SMB- oder NAS-Option? Muss die Zielfestplatte HDFS formatiert sein? Muss ich jeden der drei Worker-Knoten vollständig sichern? Oder gibt es da draußen ein intelligentes Skript, das den Datensatz ohne Parität sichern kann? Ich bin mit dieser Lösung nicht sehr vertraut und habe nur online Verweise darauf gesehen. Ich hatte nicht viel Glück, Ressourcen oder Informationen zu finden.

Ich bin auch offen für andere DR-Optionen für Hadoop HDFS. Unser Ziel ist es, eine vollständige Kopie des HDFS-Datasets zu erhalten, damit wir es nach einem Rack- oder Site-Verlust wiederherstellen können.

Vielen Dank!

Matt Keller
quelle

Antworten:

1

Bei Option 1 können Sie distcp verwenden , um von einem Cluster in einen anderen zu kopieren. Der Sicherungscluster kann sicherlich ein einzelner Knotenserver sein, solange auf ihm ein Namensknoten und ein Datenknoten ausgeführt werden. Grundsätzlich möchten Sie im pseudoverteilten Modus arbeiten . Um das distcp regelmäßig auszuführen,

Um dies regelmäßig zu tun, würde ich ein Shell-Skript erstellen, das ungefähr Folgendes ausführt:

  1. Suchen Sie nach einer Sperrdatei
  2. Wenn die Sperrdatei vorhanden ist, retten Sie sie (und senden Sie optional eine Warnung, wenn die Sperrdatei zu lange existiert). Dies würde bedeuten, dass ein vorheriges Distcp entweder schlecht beendet und nicht entsperrt wurde oder dass das vorherige Distcp länger dauert als erwartet ).
  3. Wenn es nicht existiert, berühren Sie die Sperrdatei.
  4. Führen Sie das distcp aus.
  5. Überprüfen Sie den Status des distcp-Jobs, um sicherzustellen, dass er korrekt abgeschlossen wurde.
  6. Freischalten.

Ich schlage die Verwendung einer Sperrdatei vor, da in diesem speziellen Setup nicht mehrere Distcps ausgeführt werden sollen . Sie werden am Ende Ihren pseudoverteilten Cluster überwältigen. Ich würde auch den Standardreplikationsfaktor in der pseudoverteilten Clusterkonfiguration auf 1 setzen. Sie müssen keine Blöcke verdoppeln, wenn Sie dies nicht müssen (ich kann mich jedoch nicht erinnern, ob ein Pseudo-Cluster dies standardmäßig tut; YMMV).

distcp kann so gestaltet werden, dass es wie ein dummer Rsync funktioniert und nur die Dinge kopiert, die sich ändern.

Für Option 2 können Sie hadoop fs -copyToLocal verwenden. Der Nachteil dabei ist, dass es jedes Mal eine vollständige Kopie ist. Wenn Sie also / kopieren, wird bei jeder Ausführung alles kopiert.

Für die Hadoop-Metadaten möchten Sie die Datei fsimage kopieren und bearbeiten. Dieser Blog hat einen ziemlich vernünftigen Überblick darüber, was zu tun ist. Es ist auf die Verwendung von Cloudera ausgerichtet, sollte jedoch für alle Hadoop 1.0- oder 2.0-Cluster grundsätzlich gleich sein.

Travis Campbell
quelle
1

Hdfs wird standardmäßig repliziert, normalerweise auf mindestens 3 Knoten. Wenn Sie also 3 Knoten haben, werden die Daten bereits auf allen drei Knoten repliziert.

Natürlich sollten sich diese Knoten auf verschiedenen physischen Servern befinden. Dann ist es unwahrscheinlich, dass es fehlschlägt, oder alle 3 sollten gleichzeitig fehlschlagen.

Um Ihr aktuelles HDFS zu replizieren, können Sie dem HDFS-Dienst auf anderen Servern einfach Knoten hinzufügen, und die Daten werden repliziert. Erhöhen Sie die Fehlertoleranzeinstellung auf 4 oder mehr Knoten, um sicherzustellen, dass Daten mehr als die 3 ursprünglichen Knoten repliziert werden. Thrn Fahren Sie die anderen Knoten der einzelnen Einheit herunter und Ihre Daten werden auf allen Knoten aktiv bleiben.

MrE
quelle
Obwohl es sich um ein weit verbreitetes Missverständnis handelt, handelt es sich bei der Replikation NICHT um eine Sicherung . Es dient nur zur Steigerung der Effizienz und zur Gewährleistung der Kontinuität bei Hardwarefehlern. - Ein einfaches Beispiel dafür, warum dies keine ordnungsgemäße Sicherung ist: Wenn Sie versehentlich Dateien löschen, werden diese auf allen Knoten gelöscht und können nicht normal wiederhergestellt werden.
Dennis Jaheruddin