Lokale Hadoop-Jobs zu Dataproc migrieren

In diesem Leitfaden wird beschrieben, wie Sie Ihre Apache Hadoop-Jobs mit Dataproc zu Google Cloud verschieben können.

Dies ist der dritte von drei Leitfäden, in denen die Migration von lokalem Hadoop erläutert wird:

Hadoop-Jobs in Google Cloud ausführen

Sie können Dataproc zur Ausführung der meisten Hadoop-Jobs in Google Cloud verwenden. In der folgenden Liste ist das grundlegende Verfahren zusammengefasst:

  1. Aktualisieren Sie den Job so, dass er auf Ihre in Cloud Storage gespeicherten nichtflüchtigen Daten verweist.

  2. Erstellen Sie einen Dataproc-Cluster, in dem der Job ausgeführt werden soll. Bei dieser Art von temporärem Cluster zum einmaligen Gebrauch spricht man von einem sitzungsspezifischen Cluster.

  3. Senden Sie den Job an den sitzungsspezifischen Cluster.

  4. Überwachen Sie optional die Joblogs mit Cloud Logging oder Cloud Storage. Logs werden standardmäßig in Cloud Storage unter Verwendung des Staging-Buckets erfasst, den Sie beim Erstellen des Clusters angegeben haben.

  5. Überprüfen Sie in Cloud Storage die Ausgabe des Jobs.

  6. Löschen Sie den Cluster, wenn der Job abgeschlossen ist.

Unterstützte Jobs

Unter Dataproc wird Hadoop ausgeführt, sodass zahlreiche Arten von Jobs automatisch unterstützt werden. Wenn Sie mit Dataproc einen Cluster erstellen, werden standardmäßig folgende Technologien konfiguriert:

  • Hadoop
  • Spark
  • Hive
  • Pig

Dataproc stellt mehrere Versionen von Maschinen-Images zur Verfügung, auf denen verschiedene Versionen von Open-Source-Software vorinstalliert sind. Für die Ausführung zahlreicher Jobs ist lediglich die vorkonfigurierte Software auf einem Image erforderlich. Für manche Jobs müssen Sie möglicherweise andere Pakete installieren. Dataproc bietet ein Verfahren mit der Bezeichnung Initialisierungsaktion, mit dem Sie die Software anpassen können, die auf den Knoten des Clusters ausgeführt wird. Mit Initialisierungsaktionen können Sie Skripte zur Ausführung auf jedem neuen Knoten erstellen.

Speicherorte von Daten (URIs) aktualisieren

Durch den Cloud Storage-Connector, der auf Dataproc-Clusterknoten vorinstalliert ist, kann Cloud Storage von Jobs als Hadoop-kompatibles Dateisystem (Hadoop Compatible File System, HCFS) genutzt werden. Speichern Sie Ihre Daten in Cloud Storage, damit Sie von diesem Connector profitieren können. Dazu müssen Sie lediglich eine Änderung an Ihren Jobs vornehmen, nämlich in den URIs hdfs:// durch gs:// ersetzen.

Wenn Sie im Rahmen der Migration Ihre Daten reorganisieren, notieren Sie sich alle Quell- und Zielpfade, sodass Sie Ihre Jobs auf einfache Weise für die Zusammenarbeit mit der neuen Datenorganisation aktualisieren können.

Es ist möglich, die Daten im HDFS in nichtflüchtigen Clustern in der Cloud zu speichern. Dies wird jedoch nicht empfohlen. Weitere Informationen zum Verschieben Ihrer Daten finden Sie im Leitfaden Datenmigration.

Cluster zur Ausführung von Jobs konfigurieren

Der empfohlene Ansatz für die Ausführung von Jobs in Google Cloud besteht darin, bei Bedarf sitzungsspezifische Cluster zu erstellen, die Sie nach dem Abschluss der Jobs wieder löschen. Dieser Ansatz bietet Ihnen bei der Konfiguration von Clustern eine große Flexibilität. Sie können für jeden Job eine andere Konfiguration verwenden oder für Gruppen von Jobs verschiedene Standard-Clusterkonfigurationen erstellen.

Die grundlegenden Schritte für das Erstellen von Clustern finden Sie in der Dokumentation zu Dataproc. Im verbleibenden Teil dieses Abschnitts werden einige wichtige Überlegungen zu Clusterkonfigurationen erläutert, die Ihnen bei der Entscheidung über Ihr weiteres Vorgehen helfen.

Cluster dimensionieren

Beim Festlegen eines neuen Clusters müssen Sie zuerst entscheiden, welche virtuelle Hardware dafür verwendet werden soll. Die Berechnung der perfekten Clusterkonfiguration kann sich als schwierig erweisen, da jeder Job eigene Anforderungen und Besonderheiten mit sich bringt. Experimentieren Sie mit verschiedenen Konfigurationen, um für den jeweiligen Job die richtige Einrichtung herauszufinden.

Wenn Sie einen Cluster einrichten, müssen Sie auf jeden Fall Folgendes festlegen:

  • Die Anzahl von zu verwendenden Knoten
  • Den Typ der virtuellen Maschine, die für Ihren primären Knoten (Master) verwendet werden soll
  • Den Typ der virtuellen Maschine, die für den Worker-Knoten verwendet werden soll

Knotentypen werden durch die Anzahl virtueller CPUs und die Kapazität ihres verfügbaren Speichers bestimmt. Die Definitionen entsprechen den Maschinentypen von Compute Engine. Normalerweise lässt sich ein Knotentyp finden, der der Konfiguration der lokalen Knoten entspricht, von denen aus die Migration erfolgt. Ausgehend von dieser Konfiguration können Sie einen Cluster einrichten, der dem lokalen Cluster ähnelt. Anschließend ist es am sinnvollsten, die Konfiguration anzupassen und die Auswirkungen auf die Jobausführung zu überwachen. Wenn Sie einmal damit angefangen haben, die Konfiguration von Jobs zu optimieren, werden Sie nach und nach ein Gefühl dafür entwickeln, wie Sie mit weiteren Jobs in Ihrem System zu verfahren haben.

Denken Sie daran, dass Sie den Cluster nach Bedarf skalieren können, die Spezifikation muss also nicht von Anfang an perfekt sein.

Optionen für primären Datenträger auswählen

Sie können die Größe des von den Worker-Knoten verwendeten primären Datenträgers festlegen. Die richtigen Optionen für einen Cluster hängen von den Jobtypen ab, die darauf ausgeführt werden sollen. Verwenden Sie den Standardwert und werten Sie die Ergebnisse aus, sofern Sie nicht wissen, dass Ihre Jobs zu einer ungewöhnlich hohen Auslastung des primären Datenträgers führen könnten.

Wenn der Job datenträgerintensiv ist und auf einzelnen Knoten langsam ausgeführt wird, können Sie Speicherplatz für den primären Datenträger hinzufügen. Bei besonders datenträgerintensiven Jobs, insbesondere solchen mit zahlreichen einzelnen Lese- und Schreibvorgängen, können Sie die Leistung möglicherweise verbessern, wenn Sie lokale SSDs hinzufügen. Fügen Sie SSDs mit so viel Speicherplatz hinzu, wie zur lokalen Ausführung erforderlich ist. Die Verzeichnisse für die lokale Ausführung werden unabhängig von deren Anzahl auf die hinzugefügten SSDs verteilt.

Präemptive Worker-Knoten verwenden

Die Verarbeitungsleistung für Jobs können Sie auf kostengünstige Weise steigern, wenn Sie Clustern präemptive Worker-Knoten hinzufügen. Für diese Knoten werden präemptive virtuelle Maschinen verwendet.

Bevor Sie sich für den Einsatz von Knoten auf Abruf entscheiden, müssen sich darüber im Klaren sein, dass sie unzuverlässig sind. Dataproc versucht, Knoten auf Abruf reibungslos zu verwalten, jedoch können Jobs fehlschlagen, wenn sie zu viele Knoten verlieren. Nutzen Sie Knoten auf Abruf nur für Jobs, die fehlertolerant sind oder eine so geringe Priorität haben, dass Ihr Geschäft nicht beeinträchtigt wird, wenn gelegentlich ein Job fehlschlägt.

Berücksichtigen Sie das Verhältnis von regulären Knoten zu Knoten auf Abruf, wenn Sie sich für die Nutzung von Worker-Knoten auf Abruf entscheiden. Eine allgemeingültige Formel, mit der die besten Ergebnisse erzielt werden, gibt es nicht. Doch je mehr Knoten auf Abruf Sie im Verhältnis zu regulären Knoten verwenden, desto wahrscheinlicher ist es in der Regel, dass der Job über zu wenig Knoten zum Abschließen der Aufgabe verfügt. Das beste Verhältnis zwischen Knoten auf Abruf und regulären Knoten für einen Job können Sie nur herausfinden, wenn Sie mit verschiedenen Verhältnissen experimentieren und die Ergebnisse analysieren.

Hinweis: Für präemptive Worker-Knoten sind keine SSDs verfügbar. Wenn Sie auf Ihren dedizierten Knoten SSDs verwenden, entsprechen die präemptiven Worker-Knoten in allen Aspekten den dedizierten Knoten, abgesehen davon, dass ihnen keine SSDs zur Verfügung stehen.

Aktive Jobs

Dataproc bietet mehrere Schnittstellen, mit denen Sie Ihre Jobs starten können. In der Produktdokumentation werden diese Schnittstellen beschrieben. In diesem Abschnitt werden Optionen und Vorgänge beschrieben, die bei der Ausführung von Hadoop-Jobs in Google Cloud berücksichtigt werden müssen.

Jobausgaben abrufen

Bei Jobs, die Sie unter Dataproc ausführen, gibt es in der Regel mehrere Ausgabetypen. Viele Arten von Ausgaben werden direkt von den Jobs geschrieben, z. B. in Dateien in einem Cloud Storage-Bucket oder einem anderen Cloudprodukt wie BigQuery. Außerdem erfasst Dataproc Logs und Konsolenausgaben und legt diese in Cloud Storage im Staging-Bucket ab, der dem Cluster zugeordnet ist, in dem der Job ausgeführt wird.

Neustartfähige Jobs verwenden

Wenn Sie einen Job senden, können Sie ihn so konfigurieren, dass er automatisch neu gestartet wird, wenn ein Problem auftritt. Diese Option eignet sich für Jobs, die von sehr variablen Ressourcen oder Umständen abhängig sind. Jobs, bei denen Daten über potenziell unzuverlässige Kanäle (wie das öffentliche Internet) gestreamt werden, sind z. B. besonders anfällig für Störungen wie Zeitüberschreitungsfehler und ähnliche Netzwerkprobleme. Führen Sie Jobs als neustartfähig aus, wenn Situationen denkbar sind, in denen ein Job fehlschlagen, kurze Zeit später aber erfolgreich ausgeführt werden könnte.

Cluster skalieren

Mit Dataproc ist das Hinzufügen oder Entfernen von Knoten in Clustern zu jeder Zeit und auch selbst dann mühelos möglich, wenn gerade Jobs ausgeführt werden. Die Dokumentation zu Dataproc enthält ausführliche Anleitungen zum Skalieren von Clustern. Zur Skalierung gehört auch die Option für die ordnungsgemäße Außerbetriebnahme von Knoten. Durch diese Option ist es möglich, dass Knoten laufende Vorgänge abschließen können, bevor sie gelöscht werden.

Jobs im Zeitverlauf verwalten

Die Verwaltung einzelner Jobs ist in der Regel nicht komplex, allerdings kann ein Hadoop-System Dutzende oder Hunderte von Jobs umfassen. Mit der Zeit nimmt die Anzahl von Logs, Ausgabedateien und anderen Informationen zu jedem Job stark zu. Dadurch kann es schwierig werden, bestimmte Informationen zu finden. Mit folgenden Maßnahmen können Sie die Verwaltung Ihrer Jobs in Zukunft vereinfachen:

  • Verwenden Sie zur Identifizierung von Jobs, Clustern und anderen Ressourcen benutzerdefinierte Labels. Mit Labels können Sie einen Filter verwenden, um später nach Ressourcen zu suchen. Dataproc unterstützt benutzerdefinierte Labels nach dem standardmäßigen Google Cloud-Labelsystem. Wenn Sie also eine Ressource mit einem Label versehen, kann Ihnen dies bei der Verwaltung dieser Ressource in anderen GCP-Diensten helfen.
  • Organisieren Sie Ihre Cloud Storage-Buckets so, dass unterschiedliche Typen von Jobs separat geführt werden. Durch die Gruppierung von Daten in Buckets, die Ihrer Unternehmensstruktur oder Ihren Funktionsbereichen entsprechen, lässt sich außerdem die Verwaltung von Berechtigungen vereinfachen.
  • Legen Sie Cluster für einzelne Jobs oder für eng verwandte Gruppen von Jobs fest. Es ist weitaus einfacher, die Einrichtung für Ihre sitzungsspezifischen Cluster zu aktualisieren, wenn Sie jede Konfiguration nur für ordnungsgemäß dimensionierte Jobs verwenden.

Weitere Informationen