In diesem Artikel werden die empfohlenen Best Practices für Backups von Nicht-PowerScale Hadoop-Umgebungen auf einem Dell PowerScale-Cluster beschrieben. Mit seiner robusten Data Protection mit Erasure Coding, die eine Storage-Effizienz von mehr als 80 % bietet, ist Dell PowerScale ein ideales Backupziel für Daten, die sich auf einem Hadoop-Cluster befinden. DistCp (Distributed Copy) ist ein Standardtool, das in allen Hadoop-Distributionen und -Versionen enthalten ist. DistCp kann ganze Hadoop-Verzeichnisse kopieren. DistCp wird als MapReduce-Job ausgeführt, um Dateikopien parallel durchzuführen, wobei Ihre Systeme bei Bedarf vollständig genutzt werden. Es gibt auch eine Option, um die Bandbreite zu begrenzen, um die Auswirkungen auf andere Aufgaben einzuschränken.
UMGEBUNG
Dieser Artikel verwendet die folgende Testumgebung:
Da DistCp ein Standard-Hadoop-Tool ist, ist der in diesem Dokument beschriebene Ansatz bei den meisten, wenn nicht allen anderen Hadoop-Distributionen und -Versionen anwendbar.
Gehen Sie beim Lesen dieses Dokuments davon aus, dass sich die zu sichernden Daten auf dem PHD Hadoop HDFS-Cluster im folgenden Verzeichnis befinden: /mydata. In den Beispielen werden diese Daten auf dem PowerScale-Cluster in folgendem Verzeichnis gesichert: /ifs/hadoop/backup/mydata.
Abbildung 1: Backup eines Hadoop-Clusters auf Isilon
Der einfachste Backupbefehl ist folgender:
[gpadmin@phddas2-0 ~]$ hadoop distcp -skipcrccheck -update /mydata hdfs://all-nc-s-hdfs/backup/mydata
Sie können den obigen Befehl auf jedem Host ausführen, auf dem der Hadoop-Client (hadoop) installiert ist. Der Nutzer, der den Befehl ausführt, muss über Berechtigungen verfügen, um die Quelldateien zu lesen und die Zieldateien zu schreiben.
Die Optionen -skipcrccheck und -update müssen angegeben werden, um die CRC-Prüfung der Zieldateien zu vermeiden, die auf dem PowerScale-Cluster platziert werden. PowerScale speichert die Hadoop CRC nicht und die Berechnung wäre zu ressourcenintensiv. Daher sind diese Optionen erforderlich, um Fehler im Zusammenhang mit der CRC-Prüfung zu vermeiden.
Der nächste Parameter „/mydata“ ist der Quellpfad auf dem Hadoop-Quellcluster. Dieser kann auch „/“ lauten, um Ihren gesamten HDFS-Namespace zu sichern. Da der Pfad nicht vollständig qualifiziert ist, verwendet er den HDFS-NameNode, der im Parameter fs.defaultFS von core-site.xml angegeben ist.
Der letzte Parameter „hdfs://all-nc-s-hdfs/backup/mydata“ ist der Zielpfad auf Ihrem PowerScale-Cluster. Der Hostteil „all-nc-s-hdfs“ kann ein relativer oder vollständig qualifizierter DNS-Name sein, z. B. all-nc-s-hdfs.beispiel.com. Dies sollte der SmartConnect-Zonen-DNS-Name für Ihren PowerScale-Cluster sein. Der Verzeichnisteil „/backup/mydata“ ist relativ zum HDFS-Stammpfad, der in Ihrer PowerScale-Clusterzugriffszone definiert ist. Wenn Ihr HDFS-Stammpfad /ifs/hadoopist, dann verweist dieser Wert auf /ifs/hadoop/backup/mydata.
Dateien, deren Größe in den Quell- und Zielverzeichnissen identisch ist, werden als unverändert betrachtet und nicht kopiert. Insbesondere werden Datei-Zeitstempel nicht verwendet, um geänderte Dateien zu ermitteln. Weitere Informationen zu DistCp finden Sie im Handbuch zu Hadoop DistCp Version 2.
KOPIEREN VON BERECHTIGUNGEN
Standardmäßig werden der Eigentümer, die Gruppe und die Berechtigungen der Zieldateien auf die Standardeinstellungen für neue Dateien zurückgesetzt, die von dem Nutzer, der DistCp initiiert, erstellt werden. Alle Eigentümer, Gruppen und Berechtigungen, die für die Quelldatei definiert wurden, gehen verloren. Um diese Informationen aus den Quelldateien beizubehalten, verwenden Sie die Option -p. Da die Option -p chown/chgrp ausführen muss, muss der Benutzer, der DistCp initiiert, über Superuser-Rechte auf dem Zielsystem verfügen. Aus diesem Grund funktioniert der Root-Nutzer auf dem PowerScale-Cluster. Zum Beispiel: [root@phddas2-0 ~]$ hadoop distcp -skipcrccheck -update -pugp /mydata hdfs://all-nc-s-hdfs/backup/mydata
VERWENDEN VON SNAPSHOTS FÜR IHRE BACKUPQUELLE
Das Backup großer Datenvolumen kann viel Zeit in Anspruch nehmen. Dateien, die zu Beginn des DistCp-Prozesses vorhanden sind, wenn die Verzeichnisstruktur gescannt wird, sind möglicherweise nicht mehr vorhanden, wenn diese Datei kopiert wird. Diese Änderung an den Dateien erzeugt Fehler. Darüber hinaus kann eine Anwendung ein einziges konsistentes Point-in-Time-Backup erfordern, damit sie nutzbar ist. Um diese Probleme zu beheben, wird empfohlen, dass Sie einen HDFS-Snapshot Ihrer Quelle erstellen, um sicherzustellen, dass sich das Datenvolumen während des Backupprozesses nicht ändert. Dies steht in keinem Zusammenhang mit der SnapshotIQ-Funktion des PowerScale-Zielclusters.
Um HDFS-Snapshots zu verwenden, müssen Sie zunächst Snapshots für ein bestimmtes Verzeichnis zulassen:[gpadmin@phddas2-0 ~]$ hdfs dfsadmin -allowSnapshot /mydata
Allowing snapshot on /mydata succeeded
Erstellen Sie unmittelbar vor einem Backup mit DistCp den HDFS-Snapshot:
[gpadmin@phddas2-0 ~]$ hdfs dfs -createSnapshot /mydata backupsnap Erstellter Snapshot /mydata/.snapshot/backupsnap
Der Name dieses Snapshot ist backupsnap. Sie können über den HDFS-Pfad /mydata/.snapshot/backupsnap darauf zugreifen. Änderungen an Ihren HDFS-Dateien nach diesem Snapshot werden im nachfolgenden Backup nicht berücksichtigt. Sie können den Snapshot mit dem folgenden Befehl auf PowerScale sichern:
[gpadmin@phddas2-0 ~]$ hadoop distcp -skipcrccheck -update /mydata/.snapshot/backupsnap hdfs://all-nc-s-hdfs/backup/mydata
Wenn der Backupbefehl fertig ausgeführt wurde, können Sie den Snapshot löschen. Dadurch wird der Speicherplatz freigegeben, der verwendet wird, um ältere Versionen von Dateien zu speichern, die seit dem Snapshot geändert wurden:
[gpadmin@phddas2-0 ~]$ hdfs dfs -deleteSnapshot /mydata backupsnap
NUTZUNG VON PowerScale-SNAPSHOTS FÜR IHR BACKUPZIEL
Möglicherweise möchten Sie unabhängig von der Verwendung von Snapshots für Ihre Backupquelle mehrere Snapshots Ihres Backupzielverzeichnisses aufbewahren, um ältere Versionen von Dateien wiederherzustellen.
Um Snapshots auf PowerScale zu erstellen, müssen Sie über eine SnapshotIQ-Lizenz verfügen. Sie können Snapshots über die Webadministratorschnittstelle oder CLI erstellen. Um manuell einen einzelnen PowerScale-Snapshot mit der CLI zu erstellen, stellen Sie über SSH eine Verbindung zu einem beliebigen PowerScale-Node her und führen Sie folgenden Befehl aus:all-nc-s-1# isi snapshot snapshots create /ifs/hadoop/backup/mydata --name backup-2014-07-01 --expires 1D --verbose
Created snapshot backup-2014-07-01 with ID 6
Sie können diesen Befehl zu dem Backupprozess hinzufügen, der im Abschnitt „Planen von Backups“ weiter unten beschrieben wird.
Weitere Informationen zu PowerScale OneFS-Snapshots finden Sie im PowerScale OneFS-CLI-Administrationshandbuch für Ihre Version von OneFS: PowerScale OneFS Info Hubs
SYNCIQ-REPLIKATION FÜR MEHRERE PowerScale-CLUSTER
Nachdem das DistCp-Backup auf dem PowerScale-Cluster abgeschlossen ist, können Sie OneFS SyncIQ verwenden, um Snapshots über ein WAN auf anderen PowerScale-Cluster zu replizieren. Replizierte Snapshots können eine vielseitige und effiziente Komponente Ihrer Disaster-Recovery-Strategie darstellen.
Abbildung 2: SynIQ-Replikation für mehrere Isilon-Cluster
UMGANG MIT GELÖSCHTEN DATEIEN
Standardmäßig werden Dateien, die von dem Hadoop-Quellcluster gelöscht wurden, nicht vom Hadoop-Zielcluster gelöscht. Wenn Sie dies benötigen, fügen Sie das Argument -delete zum DistCp-Befehl hinzu. Bei Verwendung dieses Befehls wird empfohlen, Snapshots auf dem Backupziel zu verwenden, um die Recovery gelöschter Dateien zu ermöglichen.
PLANEN VON BACKUPS
Sie können die Schritte zum Sichern eines Hadoop-Clusters mithilfe verschiedener Methoden automatisieren und planen. Apache Oozie wird häufig zur Automatisierung von Hadoop-Aufgaben verwendet und unterstützt distCp direkt. CRON kann ebenfalls verwendet werden, um ein Shell-Skript auszuführen. Um die Ausführung von Befehlen in einer SSH-Sitzung zu automatisieren, aktivieren Sie kennwortloses SSH. Mit dem kennwortlosen SSH kann ein CRON-Benutzer eine Verbindung zu Ihrem Hadoop-Client und Ihrem PowerScale-Cluster herstellen (bei Verwendung von SnapshotIQ).
Die Backupzieldateien auf PowerScale sind aufgrund der Unterstützung von PowerScale für HDFS von Hadoop-Anwendungen auf die gleiche Weise wie die Quelldateien zugänglich. Sie können Ihre Backupdaten direkt verwenden, ohne sie davor in Ihrer ursprünglichen Hadoop-Quellumgebung wiederherstellen zu müssen. Diese Funktion spart Analysezeit. Beispiel: Angenommen, Sie führen einen MapReduce-Befehl wie diesen aus:hadoop jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar grep /mydata/mydataset1 output1 ABC
Mit dem folgenden Befehl können Sie den MapReduce-Job für das Backup-Datenvolumen auf PowerScale ausführen:hadoop jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar grep hdfs://all-nc-s-hdfs/backup/ /mydata/mydataset1 output1 ABC
Wenn Sie einen vollständig qualifizierten Hadoop-Pfad angeben möchten, anstatt den Parameter fs.defaultFS zu verwenden, wenden Sie sich an den Anbieter Ihrer Anwendung. Darüber hinaus bietet ein PowerScale-Cluster, der für Backup und Archivierung statt für hohe Performance entwickelt wurde, wahrscheinlich nicht die gleiche Performance wie Ihre primäre Hadoop-Umgebung. Es werden Tests empfohlen, bzw. können Sie sich an Dell PowerScale wenden, um die richtige Größe zu ermitteln.