In diesem Dokument finden Sie Informationen zur Behebung häufiger Probleme, die verhindern, dassGoogle Cloud Serverless 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 Standardzeitlimits von 600 Sekunden (10 Minuten) gestartet werden konnte. Häufige Ursachen hängen mit Dienstkontoberechtigungen, Ressourcenverfügbarkeit, Netzwerkkonfiguration oder Spark-Eigenschaften zusammen.
Ursachen für Fehler beim Starten von Batches und Sitzungen und Schritte zur Fehlerbehebung
In den folgenden Abschnitten werden häufige Ursachen für Batch- und Sitzungsstartfehler aufgeführt. Außerdem finden Sie Tipps zur Fehlerbehebung, mit denen Sie die Probleme beheben können.
Unzureichende Dienstkontoberechtigungen
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-Vorgang 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 Dienstkonto für Batch oder Sitzung 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 Rechenressourcen erforderlich sind. - Berechtigungen für den Datenzugriff: Wenn Ihre Spark-Anwendung Daten aus Cloud Storage oder BigQuery liest oder in Cloud Storage oder BigQuery 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 RolleStorage Object Creator
(roles/storage.objectCreator
) oder die RolleStorage Object Admin
(roles/storage.admin
). - BigQuery: Zum Lesen ist die Rolle
BigQuery Data Viewer
(roles/bigquery.dataViewer
) erforderlich und zum Schreiben die RolleBigQuery Data Editor
(roles/bigquery.dataEditor
).
- Cloud Storage: Für das Lesen ist die Rolle
- Logging-Berechtigungen: Das Dienstkonto benötigt eine Rolle mit der Berechtigung, Logs in Cloud Logging zu schreiben. Normalerweise ist die Rolle
Logging Writer
(roles/logging.logWriter
) ausreichend.
Tipps zur Fehlerbehebung:
- Ermitteln Sie das Dienstkonto für den Batch oder die Sitzung. Wenn nicht angegeben, 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 Batch oder Sitzung und prüfen Sie, ob es die für Vorgänge erforderlichen Rollen hat. Weisen Sie fehlende Rollen zu.
Unzureichendes Kontingent
Wenn Sie projekt- oder regionsspezifische Kontingente für Google Cloud Serverless for Apache Spark oder andere Google Cloud Ressourcen überschreiten, können keine neuen Batches oder Sitzungen gestartet werden.
Tipps zur Fehlerbehebung:
Auf der Seite Google Cloud Serverless für Apache Spark-Kontingente finden Sie Informationen zu den Limits für gleichzeitige Batches, DCUs und Shuffle-Speicher.
- Sie können auch den Befehl
gcloud compute quotas list
verwenden, um die aktuelle Nutzung und die Limits für Ihr Projekt und Ihre Region aufzurufen:gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
- Sie können auch den Befehl
Wenn Sie wiederholt Kontingentlimits erreichen, sollten Sie über die Google Cloud -Konsole eine Kontingenterhöhung anfordern.
Probleme mit der Netzwerkkonfiguration
Falsche Netzwerkeinstellungen wie VPC-Konfiguration, privater Google-Zugriff oder Firewallregeln können verhindern, dass der Spark-Treiber initialisiert oder eine Verbindung zu erforderlichen Diensten hergestellt wird.
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 für Ihren Batch oder Ihre Sitzung auf Google APIs und Dienste zugegriffen werden muss, ohne das öffentliche Internet zu durchlaufen, prüfen Sie, ob der privater 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-Properties, insbesondere solche, die sich auf Treiberressourcen beziehen, oder Probleme in Ihrem Spark-Anwendungscode können zu Startfehlern führen.
Tipps zur Fehlerbehebung:
Prüfen Sie die Werte für
spark.driver.memory
undspark.driver.cores
. Prüfen Sie, ob sie innerhalb angemessener Grenzen liegen und mit den verfügbaren DCUs übereinstimmen. Zu 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 das Debugging 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 Anwendungs-JARs, Python-Dateien oder Abhängigkeiten, die für Ihren Batch oder Ihre Sitzung angegeben sind, korrekt in Cloud Storage befinden und vom Dienstkonto des Batches oder der Sitzung 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.
- Rufen Sie in der Google Cloud Console die Seite Cloud Logging auf.
- Nach Serverless for Apache Spark-Batches oder -Sitzungen filtern:
- Wählen Sie im Drop-down-Menü Ressource die Option
Cloud Dataproc Batch
oderCloud Dataproc Session
aus. - Filtern Sie nach
batch_id
odersession_id
für den fehlgeschlagenen Batch oder die fehlgeschlagene Sitzung. Sie können auch nachproject_id
undlocation
(Region) filtern.
- Wählen Sie im Drop-down-Menü Ressource die Option
- Suchen Sie nach Logeinträgen mit
jsonPayload.component="driver"
. Diese Logs enthalten oft spezifische Fehlermeldungen oder Stacktraces, die den Grund für den Fehler bei der Treiberinitialisierung vor dem 600-Sekunden-Zeitlimit aufzeigen können.