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

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ôle Storage Object Creator (roles/storage.objectCreator) ou Storage 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ôle BigQuery Data Editor (roles/bigquery.dataEditor) est nécessaire pour l'écriture.
  • 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

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"
      
  • 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 et spark.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.

  1. Accédez à la page Cloud Logging dans la console Google Cloud .
  2. Filtrez les résultats pour 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 la liste sur 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 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.