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 Google Cloud le démarrage des charges de travail par lot et des sessions interactives Spark de Serverless 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 répertorient 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 Serverless pour Apache Spark nécessite des rôles IAM spécifiques qui incluent des autorisations pour le fonctionnement de Serverless 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 Nœud de calcul Dataproc (roles/dataproc.worker). Ce rôle contient les autorisations minimales nécessaires 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 dans Cloud Storage ou BigQuery, le compte de service a besoin de rôles liés à ces services:
    • Cloud Storage : le rôle `Lecteur des objets Storage` (roles/storage.objectViewer) est nécessaire pour la lecture, et le rôle `Créateur des objets Storage` (roles/storage.objectCreator) ou le rôle `Administrateur des objets Storage` (roles/storage.admin) est nécessaire pour l'écriture.Storage Object ViewerStorage Object CreatorStorage Object Admin
    • 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 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 à un projet ou à une région pour Google Cloud Serverless 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 Google Cloud Quotas de Serverless 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 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 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 ou au code d'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, 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.

Vérifier les journaux

Une étape essentielle pour diagnostiquer les échecs de création de lots 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 lots ou les sessions Serverless pour Apache Spark :
    1. Dans le menu déroulant Ressource, sélectionnez Cloud Dataproc Batch ou Cloud Dataproc Session.
    2. Filtrez par batch_id ou session_id pour le 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.