Résoudre les problèmes de création de lots et de sessions

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 traitement par 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 traitements par lot et des sessions, et étapes de dépannage

Les sections suivantes listent les causes courantes d'échec du démarrage des traitements par lot 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 traitement par 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 traitement par lot ou de la session peut ne pas s'initialiser.

  • Rôle de nœud de calcul requis : le compte de service du traitement par 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 requises 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 Viewer rôle (roles/storage.objectViewer) est nécessaire pour la lecture, et le Storage Object Creator rôle (roles/storage.objectCreator) ou le Storage Object Admin rôle (roles/storage.admin) est nécessaire pour l'écriture.
    • BigQuery : le BigQuery Data Viewer rôle (roles/bigquery.dataViewer) est nécessaire pour la lecture, et le BigQuery Data Editor rôle (roles/bigquery.dataEditor) est nécessaire pour l'écriture.
  • 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 Writer rôle (roles/logging.logWriter) est suffisant.

Conseils de dépannage

  • Identifiez le compte de service du traitement par 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 traitement par 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 à un projet ou à une région pour Managed Service pour Apache Spark ou d'autres Google Cloud ressources peut empêcher le démarrage de nouveaux traitements par lot ou de nouvelles sessions.

Conseils de dépannage

  • Consultez la page Quotas Managed Service pour Apache Spark pour comprendre les limites concernant les traitements par lot simultanés, les DCU et l'espace de 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"
      
  • 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 traitement par lot ou votre session sont correctement configurés et disposent de suffisamment d'adresses IP.

  • Si votre traitement par 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 ou au code de l'application non valides

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 et spark.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, les fichiers Python ou les dépendances d'application spécifiés pour votre traitement par lot ou votre session se trouvent au bon endroit dans Cloud Storage et qu'ils sont accessibles par le compte de service du traitement par lot ou de la session.

Consulter les journaux

Une étape essentielle pour diagnostiquer les échecs de création de traitements par lot consiste à examiner les journaux détaillés dans Cloud Logging.

  1. Accédez à la page Cloud Logging dans la Google Cloud console.
  2. Filtrez les traitements par lot ou les sessions Managed Service pour Apache Spark :
    1. Dans le menu déroulant Ressource, sélectionnez Cloud Managed Service for Apache Spark Batch ou Cloud Managed Service for Apache Spark Session.
    2. Filtrez par batch_id ou session_id pour le traitement par lot ou la session ayant échoué. Vous pouvez également filtrer par project_id et location (région).
  3. 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.