Fehler bei der Batch- und Sitzungserstellung beheben

In diesem Dokument finden Sie eine Anleitung zur Fehlerbehebung bei häufigen Problemen, die verhindern, dass Managed Service for Apache Spark-Spark-Batcharbeitslasten und interaktive Sitzungen gestartet werden.

Übersicht

Wenn ein Batch oder eine Sitzung nicht gestartet werden kann, wird in der Regel die folgende Fehlermeldung angezeigt:

Driver compute node failed to initialize for batch in 600 seconds

Diese Fehlermeldung gibt an, dass der Spark-Treiber nicht innerhalb des Standard-Timeouts von 600 Sekunden (10 Minuten) gestartet werden konnte. Häufige Ursachen sind Berechtigungen für Dienstkonten, Ressourcenverfügbarkeit, Netzwerkkonfiguration oder Spark-Eigenschaften.

Ursachen für Fehler beim Starten von Batches und Sitzungen und Schritte zur Fehlerbehebung

In den folgenden Abschnitten sind häufige Ursachen für Fehler beim Starten von Batches und Sitzungen aufgeführt. Außerdem finden Sie Tipps zur Fehlerbehebung, mit denen Sie die Probleme beheben können.

Unzureichende Berechtigungen für Dienstkonten

Das Dienstkonto, das von Ihrem Managed Service for Apache Spark-Batch oder Ihrer Sitzung verwendet wird, erfordert bestimmte IAM-Rollen mit Berechtigungen für den Betrieb von Managed Service for Apache Spark und den Zugriff auf Google Cloud Ressourcen. Wenn dem Dienstkonto die erforderlichen Rollen fehlen, kann der Spark-Treiber für den Batch oder die Sitzung nicht initialisiert werden.

  • Erforderliche Worker-Rolle: Das Dienstkonto für den Batch oder die Sitzung muss die Rolle Managed Service for Apache Spark-Worker (roles/dataproc.worker) haben. Diese Rolle enthält die Mindestberechtigungen, die für Managed Service for Apache Spark zum Bereitstellen und Verwalten von Compute-Ressourcen erforderlich sind.
  • Berechtigungen für den Datenzugriff: Wenn Ihre Spark-Anwendung Daten aus Cloud Storage oder BigQuery liest oder in diese schreibt, benötigt das Dienstkonto Rollen für diese Dienste:
    • Cloud Storage: Für das Lesen ist die Rolle Storage Object Viewer (roles/storage.objectViewer) erforderlich und für das Schreiben die Rolle Storage Object Creator (roles/storage.objectCreator) oder die Rolle Storage Object Admin (roles/storage.admin) erforderlich.
    • BigQuery: Für das Lesen ist die Rolle BigQuery Data Viewer (roles/bigquery.dataViewer) erforderlich und für das Schreiben die Rolle BigQuery Data Editor (roles/bigquery.dataEditor) erforderlich.
  • Logging-Berechtigungen: Das Dienstkonto benötigt eine Rolle mit der Berechtigung, Logs in Cloud Logging zu schreiben. In der Regel reicht die Logging Writer Rolle (roles/logging.logWriter) aus.

Tipps zur Fehlerbehebung:

  • Ermitteln Sie das Dienstkonto für den Batch oder die Sitzung . Wenn es nicht angegeben ist, wird standardmäßig das Compute Engine-Standarddienstkonto verwendet.
  • Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung > IAM auf, suchen Sie nach dem Dienstkonto für den Batch oder die Sitzung und prüfen Sie, ob es die für den Betrieb erforderlichen Rollen hat. Weisen Sie alle fehlenden Rollen zu.

Unzureichendes Kontingent

Wenn die projekt- oder regionsspezifischen Kontingente für Managed Service for Apache Spark oder andere Google Cloud Ressourcen überschritten werden, können keine neuen Batches oder Sitzungen gestartet werden.

Tipps zur Fehlerbehebung:

  • Auf der Seite Kontingente für Managed Service for Apache Spark finden Sie Informationen zu den Limits für gleichzeitige Batches, DCUs und Shuffle-Speicher.

    • Mit dem Befehl gcloud compute quotas list können Sie auch die aktuelle Nutzung und die Limits für Ihr Projekt und Ihre Region aufrufen:
      gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
      
  • Wenn Sie wiederholt Kontingentlimits erreichen, können Sie über die Google Cloud Console eine Kontingent erhöhung anfordern.

Probleme mit der Netzwerkkonfiguration

Falsche Netzwerkeinstellungen wie die VPC-Konfiguration, der privater Google-Zugriff oder Firewallregeln können verhindern, dass der Spark-Treiber initialisiert wird oder eine Verbindung zu erforderlichen Diensten herstellt.

Tipps zur Fehlerbehebung:

  • Prüfen Sie, ob das für Ihren Batch oder Ihre Sitzung angegebene VPC-Netzwerk und Subnetzwerk richtig konfiguriert sind und genügend IP-Adressen verfügbar sind.

  • Wenn Ihr Batch oder Ihre Sitzung auf Google APIs und -Dienste zugreifen muss, ohne das öffentliche Internet zu durchlaufen, prüfen Sie, ob der privater Google-Zugriff für das Subnetzwerk aktiviert ist.

  • Prüfen Sie Ihre VPC-Firewallregeln, um sicherzustellen, dass sie nicht versehentlich die interne Kommunikation oder den ausgehenden Traffic zu Google APIs oder externen Diensten blockieren, die für Ihre Spark-Anwendung erforderlich sind.

Probleme mit ungültigen Spark-Eigenschaften oder Anwendungscode

Falsch konfigurierte Spark-Eigenschaften, insbesondere solche, die sich auf Treiberressourcen beziehen, oder Probleme im Spark-Anwendungscode können zu Startfehlern führen.

Tipps zur Fehlerbehebung:

  • Prüfen Sie die Werte für spark.driver.memory und spark.driver.cores. Prüfen Sie, ob sie innerhalb angemessener Limits liegen und mit den verfügbaren DCUs übereinstimmen. Übermäßig große Werte für diese Eigenschaften können zu Ressourcenerschöpfung und Initialisierungsfehlern führen. Entfernen Sie alle unnötigen oder experimentellen Spark-Eigenschaften, um die Fehlerbehebung zu vereinfachen.

  • Führen Sie eine „Hello World“-Spark-Anwendung aus, um festzustellen, ob das Problem an der Einrichtung Ihrer Umgebung oder an der Komplexität oder an Fehlern im Code liegt.

  • Prüfen Sie, ob sich alle für Ihren Batch oder Ihre Sitzung angegebenen JAR-Dateien, Python-Dateien oder Abhängigkeiten der Anwendung korrekt in Cloud Storage befinden und vom Dienstkonto für den Batch oder die Sitzung aufgerufen werden können.

Logs prüfen

Ein wichtiger Schritt bei der Diagnose von Fehlern bei der Batcherstellung ist die Prüfung der detaillierten Logs in Cloud Logging.

  1. Rufen Sie in der Google Cloud Console die Seite Cloud Logging auf.
  2. Filtern Sie nach Managed Service for Apache Spark-Batches oder -Sitzungen:
    1. Wählen Sie im Drop-down-Menü Ressource die Option Cloud Managed Service for Apache Spark Batch oder Cloud Managed Service for Apache Spark Session aus.
    2. Filtern Sie nach batch_id oder session_id für den fehlgeschlagenen Batch oder die fehlgeschlagene Sitzung. Sie können auch nach project_id und location (Region) filtern.
  3. Suchen Sie nach Logeinträgen mit jsonPayload.component="driver". Diese Logs enthalten oft spezifische Fehlermeldungen oder Stacktraces, die die Ursache für den Fehler bei der Treiberinitialisierung vor dem 600-Sekunden-Timeout aufzeigen können.