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 interactives Managed Service pour Apache Spark.
Présentation
En règle générale, 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'expiration 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 réseau ou aux propriétés Spark.
Causes d'échec du démarrage des lots et des sessions, et étapes de dépannage
Les sections suivantes listent les causes courantes d'échec du démarrage des lots et des sessions, ainsi que 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 votre session Managed Service pour Apache Spark nécessite des rôles IAM spécifiques qui incluent des autorisations pour l'opération Managed Service pour Apache Spark et l'accès aux Google Cloud ressources. 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 du lot ou de la session doit disposer du rôle de nœud de calcul Managed Service pour Apache Spark (
roles/dataproc.worker). Ce rôle contient les autorisations minimales nécessaires pour que Managed Service 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 dans Cloud Storage ou BigQuery, le compte de service a besoin de rôles liés à ces services :
- Cloud Storage : le
Storage Object Viewerrôle (roles/storage.objectViewer) est nécessaire pour la lecture, et leStorage Object Creatorrôle (roles/storage.objectCreator) ou leStorage Object Adminrôle (roles/storage.admin) est nécessaire pour l'écriture. - BigQuery : le
BigQuery Data Viewerrôle (roles/bigquery.dataViewer) est nécessaire pour la lecture, et leBigQuery Data Editorrôle (roles/bigquery.dataEditor) est nécessaire pour l'écriture.
- Cloud Storage : le
- Autorisations de journalisation : le compte de service a besoin d'un rôle disposant de l'autorisation d'écrire des journaux dans Cloud Logging. En règle générale, le
Logging Writerrôle (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 par défaut de Compute Engine est utilisé par défaut.
- Accédez à la page **IAM et administration > IAM** dans la Google Cloud console, recherchez le compte de service du lot ou de la session, puis vérifiez qu'il dispose des rôles nécessaires pour les opérations. Attribuez les rôles manquants.
Quota insuffisant
Le dépassement des quotas spécifiques au projet ou à la région pour Managed Service pour Apache Spark ou d'autres Google Cloud ressources peut empêcher le démarrage de nouveaux lots ou sessions.
Conseils de dépannage
Consultez la page Quotas Managed Service pour Apache Spark pour comprendre les limites concernant les lots simultanés, les DCU et l'espace de stockage aléatoire.
- Vous pouvez également utiliser la commande
gcloud compute quotas listpour 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 Google Cloud console.
Problèmes de configuration réseau
Des paramètres réseau incorrects, tels que la configuration VPC, l'accès privé à Google ou les règles de pare-feu, peuvent empêcher l'initialisation du pilote Spark ou sa connexion 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.
Si votre lot ou votre session doit 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.
Vérifiez vos règles de pare-feu VPC pour vous assurer qu'elles ne bloquent pas par inadvertance la communication interne ou 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.memoryetspark.driver.cores. Assurez-vous qu'elles se situent dans des limites raisonnables et qu'elles correspondent aux DCU disponibles. Des valeurs excessivement élevées pour ces propriétés peuvent entraîner une saturation des ressources et des échecs d'initialisation. Supprimez toutes 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 s'il est dû à la complexité ou à des erreurs de code.
Vérifiez que tous les fichiers JAR, fichiers Python ou dépendances d'application spécifiés pour votre lot ou votre session sont correctement situés dans Cloud Storage et sont accessibles par le compte de service du lot ou de la session.
Consulter les journaux
Une étape essentielle pour diagnostiquer les échecs de création de lots consiste à examiner les journaux détaillés dans Cloud Logging.
- Accédez à la page Cloud Logging dans la Google Cloud console.
- Filtrez les lots ou les sessions Managed Service pour Apache Spark :
- Dans le menu déroulant Ressource, sélectionnez
Cloud Managed Service for Apache Spark BatchouCloud Managed Service for Apache Spark Session. - Filtrez par
batch_idousession_idpour le lot ou la session ayant échoué. Vous pouvez également filtrer parproject_idetlocation(région).
- Dans le menu déroulant Ressource, sélectionnez
- Recherchez les entrées de journal avec
jsonPayload.component="driver". Ces journaux contiennent souvent des messages d'erreur spécifiques ou des traces de pile qui peuvent identifier la raison de l'échec d'initialisation du pilote avant l'expiration du délai de 600 secondes.