Ce document fournit des conseils pour résoudre les problèmes courants qui empêchent le démarrage des charges de travail par lot et des sessions interactivesGoogle Cloud Serverless pour Apache Spark.
Présentation
En général, lorsqu'un lot ou une session ne démarre pas, le message d'erreur suivant s'affiche :
Driver compute node failed to initialize for batch in 600 seconds
Ce message d'erreur indique que le pilote Spark n'a pas pu démarrer dans le délai d'attente par défaut de 600 secondes (10 minutes). Les causes courantes sont liées aux autorisations du compte de service, à la disponibilité des ressources, à la configuration du réseau ou aux propriétés Spark.
Causes d'échec du démarrage des sessions et des lots, et étapes de dépannage
Les sections suivantes listent les causes courantes d'échec des lots et des démarrages de session, et fournissent des conseils de dépannage pour vous aider à résoudre les problèmes.
Autorisations de compte de service insuffisantes
Le compte de service utilisé par votre lot ou session Serverless pour Apache Spark nécessite des rôles IAM spécifiques qui incluent des autorisations pour l'opération Serverless pour Apache Spark et l'accès aux ressources Google Cloud . Si le compte de service ne dispose pas des rôles nécessaires, le pilote Spark du lot ou de la session peut ne pas s'initialiser.
- Rôle de nœud de calcul requis : le compte de service de lot ou de session doit disposer du rôle Nœud de calcul Dataproc (
roles/dataproc.worker
). Ce rôle contient les autorisations minimales requises pour que Serverless pour Apache Spark provisionne et gère les ressources de calcul. - Autorisations d'accès aux données : si votre application Spark lit ou écrit des données dans Cloud Storage ou BigQuery, le compte de service a besoin de rôles liés à ces services :
- Cloud Storage : le rôle
Storage Object Viewer
(roles/storage.objectViewer
) est nécessaire pour la lecture, et le rôleStorage Object Creator
(roles/storage.objectCreator
) ouStorage Object Admin
(roles/storage.admin
) est nécessaire pour l'écriture. - BigQuery : le rôle
BigQuery Data Viewer
(roles/bigquery.dataViewer
) est nécessaire pour la lecture et le rôleBigQuery Data Editor
(roles/bigquery.dataEditor
) est nécessaire pour l'écriture.
- Cloud Storage : le rôle
- Autorisations de journalisation : le compte de service a besoin d'un rôle avec l'autorisation d'écrire des journaux dans Cloud Logging. En général, le rôle
Logging Writer
(roles/logging.logWriter
) est suffisant.
Conseils de dépannage
- Identifiez le compte de service du lot ou de la session. S'il n'est pas spécifié, le compte de service Compute Engine par défaut est utilisé.
- Accédez à la page IAM et administration > IAM dans la console Google Cloud , recherchez le compte de service de lot ou de session, puis vérifiez qu'il dispose des rôles nécessaires aux opérations. Attribuez les rôles manquants.
Quota insuffisant
Le dépassement des quotas spécifiques à un projet ou à une région pour Google Cloud Serverless pour Apache Spark ou d'autres ressources Google Cloud peut empêcher le démarrage de nouveaux lots ou sessions.
Conseils de dépannage
Consultez la page QuotasGoogle Cloud Serverless pour Apache Spark pour comprendre les limites concernant les lots simultanés, les DCU et le stockage aléatoire.
- Vous pouvez également utiliser la commande
gcloud compute quotas list
pour afficher l'utilisation et les limites actuelles de votre projet et de votre région :gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
- Vous pouvez également utiliser la commande
Si vous atteignez régulièrement les limites de quota, envisagez de demander une augmentation de quota via la console Google Cloud .
Problèmes de configuration réseau
Des paramètres réseau incorrects, tels que la configuration du VPC, l'accès privé à Google ou les règles de pare-feu, peuvent empêcher le pilote Spark de s'initialiser ou de se connecter aux services nécessaires.
Conseils de dépannage
Vérifiez que le réseau VPC et le sous-réseau spécifiés pour votre lot ou votre session sont correctement configurés et disposent de suffisamment d'adresses IP disponibles.
Si votre lot ou votre session doivent accéder aux API et services Google sans passer par l'Internet public, vérifiez que l'accès privé à Google est activé pour le sous-réseau.
Examinez vos règles de pare-feu VPC pour vérifier qu'elles ne bloquent pas par inadvertance la communication interne ni la sortie vers les API Google ou les services externes requis par votre application Spark.
Problèmes liés aux propriétés Spark non valides ou au code d'application
Des propriétés Spark mal configurées, en particulier celles liées aux ressources du pilote, ou des problèmes dans le code de votre application Spark peuvent entraîner des échecs de démarrage.
Conseils de dépannage
Vérifiez les valeurs
spark.driver.memory
etspark.driver.cores
. Vérifiez qu'elles se situent dans des limites raisonnables et qu'elles correspondent aux UC disponibles. Des valeurs excessivement élevées pour ces propriétés peuvent entraîner un épuisement des ressources et des échecs d'initialisation. Supprimez les propriétés Spark inutiles ou expérimentales pour simplifier le débogage.Essayez d'exécuter une application Spark "Hello World" pour déterminer si le problème est lié à la configuration de votre environnement ou à la complexité ou aux erreurs de code.
Vérifiez que tous les fichiers JAR d'application, les fichiers Python ou les dépendances spécifiés pour votre lot ou votre session se trouvent au bon endroit dans Cloud Storage et sont accessibles par le compte de service du lot ou de la session.
Vérifier les journaux
Pour diagnostiquer les échecs de création de lots, il est essentiel d'examiner les journaux détaillés dans Cloud Logging.
- Accédez à la page Cloud Logging dans la console Google Cloud .
- Filtrez les résultats pour les lots ou les sessions Serverless pour Apache Spark :
- Dans le menu déroulant Ressource, sélectionnez
Cloud Dataproc Batch
ouCloud Dataproc Session
. - Filtrez la liste sur
batch_id
ousession_id
pour le lot ou la session ayant échoué. Vous pouvez également filtrer parproject_id
etlocation
(région).
- Dans le menu déroulant Ressource, sélectionnez
- Recherchez les entrées de journal contenant
jsonPayload.component="driver"
. Ces journaux contiennent souvent des messages d'erreur ou des traces de pile spécifiques qui peuvent identifier la raison de l'échec de l'initialisation du pilote avant l'expiration du délai de 600 secondes.