Fehler bei der Batch- und Sitzungserstellung beheben

In diesem Dokument finden Sie eine Anleitung zur Behebung häufiger Probleme, die verhindern, dass Google Cloud Serverless for Apache 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 werden häufige Ursachen für Fehler beim Starten von Batches und Sitzungen mit Tipps zur Fehlerbehebung aufgeführt, die Ihnen bei der Lösung der Probleme helfen.

Unzureichende Berechtigungen für Dienstkonten

Das Dienstkonto, das von Ihrem Serverless for Apache Spark-Batch oder Ihrer Sitzung verwendet wird, erfordert bestimmte IAM-Rollen , die Berechtigungen für den Serverless for Apache Spark-Betrieb und den Zugriff auf Google Cloud Ressourcen enthalten. Wenn dem Dienstkonto die erforderlichen Rollen fehlen, kann die Initialisierung des Spark-Treibers für den Batch oder die Sitzung fehlschlagen.

  • Erforderliche Worker-Rolle: Das Batch- oder Sitzungsdienstkonto muss die Dataproc-Worker-Rolle (roles/dataproc.worker) haben. Diese Rolle enthält die Mindestberechtigungen, die für Serverless 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 Dienst konto Rollen für diese Dienste:
    • Cloud Storage: Die Rolle Storage Object Viewer (roles/storage.objectViewer) ist für das Lesen und die Rolle Storage Object Creator (roles/storage.objectCreator) oder die Rolle Storage Object Admin (roles/storage.admin) für das Schreiben erforderlich.
    • BigQuery: Die Rolle BigQuery Data Viewer (roles/bigquery.dataViewer) ist für das Lesen und die Rolle BigQuery Data Editor (roles/bigquery.dataEditor) ist für das Schreiben 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 Batch- oder Sitzungs Dienstkonto. 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 Batch- oder Sitzungsdienstkonto und prüfen Sie, ob es die für den Betrieb erforderlichen Rollen hat. Weisen Sie alle fehlenden Rollen zu.

Unzureichendes Kontingent

Das Überschreiten von projekt- oder regionsspezifischen Kontingenten für Google Cloud Serverless for Apache Spark oder andere Google Cloud Ressourcen kann verhindern, dass neue Batches oder Sitzungen gestartet werden.

Tipps zur Fehlerbehebung:

  • Auf der Seite Google Cloud Serverless for Apache Spark-Kontingente 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 private Google-Zugriff, oder Firewallregeln können verhindern, dass der Spark-Treiber initialisiert 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 -Subnetz 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 private Google-Zugriff für das Subnetz 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 Grenzen liegen und mit den verfügbaren DCUs übereinstimmen. Übermäßig große Werte für diese Eigenschaften können zu Ressourcen erschöpfung und Initialisierungsfehlern führen. Entfernen Sie alle unnötigen oder experimentellen Spark-Eigenschaften, um das Debuggen 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 Batch- oder Sitzungsdienstkonto aufgerufen werden können.

Logs prüfen

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

  1. Rufen Sie in der Google Cloud Console die Seite Cloud Logging auf.
  2. Filtern Sie nach Serverless for Apache Spark-Batches oder -Sitzungen:
    1. Wählen Sie im Drop-down-Menü Ressource die Option Cloud Dataproc Batch oder Cloud Dataproc 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.