Résoudre les problèmes liés aux tâches Dataproc

Cette page fournit des informations pour vous aider à surveiller et à déboguer les tâches Dataproc, et à comprendre les messages d'erreur des tâches Dataproc.

Surveillance et débogage des tâches

Utilisez Google Cloud CLI'API REST Dataproc et la console Google Cloud pour analyser et déboguer les tâches Dataproc.

CLI gcloud

Pour examiner le statut d'une tâche en cours d'exécution, procédez comme suit :

gcloud dataproc jobs describe job-id \
    --region=region

Pour afficher les résultats du pilote de la tâche, consultez la section Afficher le résultat du job.

API REST

Appelez jobs.get pour examiner les champs JobStatus.State, JobStatus.Substate, JobStatus.details et YarnApplication d'une tâche.

Console

Pour afficher les résultats du pilote de la tâche, consultez la section Afficher le résultat du job.

Pour afficher le journal de l'agent dataproc dans Logging, sélectionnez Dataproc Cluster→Cluster Name→Cluster UUID (Cluster Dataproc > Nom du cluster > UUID) dans le sélecteur de cluster de l'explorateur de journaux.

Utilisez ensuite le sélecteur de journaux pour sélectionner les journaux google.dataproc.agent.

Afficher les journaux de tâches dans Logging

Si une tâche échoue, vous pouvez accéder aux journaux des tâches dans Logging.

Déterminer l'émetteur d'une tâche

La recherche des détails d'une tâche affichera l'émetteur de la tâche dans le champ submittedBy. Par exemple, le résultat de la tâche suivant montre que user@domain a envoyé l'exemple de tâche à un cluster.

...
placement:
  clusterName: cluster-name
  clusterUuid: cluster-uuid
reference:
  jobId: job-uuid
  projectId: project
status:
  state: DONE
  stateStartTime: '2018-11-01T00:53:37.599Z'
statusHistory:
- state: PENDING
  stateStartTime: '2018-11-01T00:33:41.387Z'
- state: SETUP_DONE
  stateStartTime: '2018-11-01T00:33:41.765Z'
- details: Agent reported job success
  state: RUNNING
  stateStartTime: '2018-11-01T00:33:42.146Z'
submittedBy: user@domain

Messages d'erreur

La tâche n'a pas été acquise

Cela indique que l'agent Dataproc sur le nœud maître n'a pas pu acquérir la tâche à partir du plan de contrôle. Cela se produit souvent en raison de problèmes de mémoire saturée ou de réseau. Si le job s'est exécuté correctement auparavant et que vous n'avez pas modifié les paramètres de configuration du réseau, l'erreur OOM est la cause la plus probable. Elle est souvent due à l'envoi de nombreux jobs s'exécutant simultanément ou de jobs dont les pilotes consomment beaucoup de mémoire (par exemple, les jobs qui chargent de grands ensembles de données en mémoire).

Aucun agent actif n'a été trouvé sur les nœuds maîtres.

Cela indique que l'agent Dataproc sur le nœud maître n'est pas actif et ne peut pas accepter de nouveaux jobs. Cela se produit souvent en raison de problèmes de mémoire saturée ou de réseau, ou si la VM du nœud maître est défectueuse. Si le job s'est exécuté correctement auparavant et que vous n'avez pas modifié les paramètres de configuration réseau, la cause la plus probable est une erreur de mémoire insuffisante (OOM, Out Of Memory). Cela est souvent dû à l'envoi de nombreux jobs s'exécutant simultanément ou de jobs dont les pilotes consomment beaucoup de mémoire (jobs qui chargent de grands ensembles de données en mémoire).

Pour résoudre le problème, vous pouvez essayer les actions suivantes :

Tâche introuvable

Cette erreur indique que le cluster a été supprimé pendant l'exécution d'un job. Vous pouvez effectuer les actions suivantes pour identifier le principal qui a effectué la suppression et confirmer que la suppression du cluster s'est produite lorsqu'un job était en cours d'exécution :

  • Affichez les journaux d'audit Dataproc pour identifier le compte principal qui a effectué l'opération de suppression.

  • Utilisez Logging ou gcloud CLI pour vérifier que le dernier état connu de l'application YARN était RUNNING :

    • Utilisez le filtre suivant dans Logging :
    resource.type="cloud_dataproc_cluster"
    resource.labels.cluster_name="CLUSTER_NAME"
    resource.labels.cluster_uuid="CLUSTER_UUID"
    "YARN_APPLICATION_ID State change from"
    
    • Exécutez gcloud dataproc jobs describe job-id --region=REGION, puis vérifiez yarnApplications: > STATE dans le résultat.
  • Si le principal qui a supprimé le cluster est le compte de service de l'agent de service Dataproc, vérifiez si le cluster a été configuré avec une durée de suppression automatique inférieure à la durée du job.

Pour éviter les erreurs Task not found, utilisez l'automatisation pour vous assurer que les clusters ne sont pas supprimés avant la fin de toutes les tâches en cours d'exécution.

Aucun espace restant sur le dispositif

Dataproc écrit les données HDFS et temporaires sur le disque. Ce message d'erreur indique que le cluster a été créé avec un espace disque insuffisant. Pour analyser et éviter cette erreur :

  • Vérifiez la taille du disque principal du cluster indiquée dans l'onglet Configuration de la page Détails du cluster de la console Google Cloud . La taille de disque minimale recommandée est de 1000 GB pour les clusters utilisant le type de machine n1-standard-4 et de 2 TB pour les clusters utilisant le type de machine n1-standard-32.

  • Si la taille du disque du cluster est inférieure à la taille recommandée, recréez le cluster avec au moins la taille de disque recommandée.

  • Si la taille du disque est égale ou supérieure à la taille recommandée, utilisez SSH pour vous connecter à la VM principale du cluster, puis exécutez df -h sur la VM principale pour vérifier l'utilisation du disque et déterminer si de l'espace disque supplémentaire est nécessaire.

  • Collectez et vérifiez les métriques de disque.