Afficher les données de diagnostic du cluster

"Afficher les données de diagnostic du cluster Managed Service pour Apache Spark"

Vous pouvez utiliser les fonctionnalités de collecte de données de diagnostic Managed Service pour Apache Spark suivantes pour résoudre les problèmes liés aux clusters et aux jobs :

Collecte des données de diagnostic Checkpoint

Par défaut, Managed Service pour Apache Spark collecte les données de diagnostic des points de contrôle lors de la création du cluster, de la mise à jour du cluster et des opérations de job Managed Service pour Apache Spark.

Emplacement des données du point de contrôle

Managed Service pour Apache Spark enregistre les données de diagnostic des points de contrôle dans le bucket temporaire du cluster dans Cloud Storage, dans le dossier suivant (checkpoint diagnostic data folder) :

gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID 

La durée de conservation TTL du bucket temporaire du cluster par défaut est de 90 jours. Les données sont supprimées à la fin de la période de conservation. Vous pouvez spécifier votre propre bucket temporaire de cluster avec une période TTL différente lorsque vous créez un cluster.

Données de diagnostic des points de contrôle

  • Journaux détaillés des nœuds du cluster : Managed Service pour Apache Spark exécute les commandes suivantes pour collecter et écrire les informations YARN et HDFS aux emplacements suivants dans le dossier de données de diagnostic du point de contrôle dans Cloud Storage.

    Commande exécutée Emplacement dans le dossier de diagnostic
    yarn node -list -all .../nodes/timestamp/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning .../nodes/timestamp/hdfs-nodes.log
    cp gs://STAGING_BUCKET/google-cloud-dataproc-metainfo/CLUSTER_UUID/nodes_exclude.xml .../nodes/timestamp/nodes_exclude.xml

  • Détails du job : Managed Service pour Apache Spark enregistre les informations sur les jobs MapReduce et les journaux des jobs Spark pour les jobs utilisant l'API Managed Service pour Apache Spark Jobs. Ces données sont collectées pour chaque job MapReduce et Spark envoyé.

    • job.xml MapReduce : fichier contenant les paramètres de configuration de la tâche, enregistré dans .../jobs/JOB_UUID/mapreduce/job.xml.
    • Journaux d'événements Spark : détails de l'exécution des jobs utiles pour le débogage, enregistrés dans .../jobs/JOB_UUID/spark/application-id.
  • Informations sur le système Linux : Managed Service pour Apache Spark exécute les commandes suivantes pour collecter et enregistrer les informations système aux emplacements suivants dans le dossier de données de diagnostic du point de contrôle dans Cloud Storage.

    Commande Emplacement dans le dossier de diagnostic
    sysctl -a .../system/sysctl.log
    cat /proc/sys/fs/file-nr .../system/fs-file-nr.log
    ping -c 1 .../system/cluster-ping.log
    cp /etc/hosts .../system/hosts_entries.log
    cp /etc/resolv.conf .../system/resolv.conf
  • Fichiers de configuration : Managed Service pour Apache Spark enregistre les fichiers de configuration suivants aux emplacements suivants dans le dossier de données de diagnostic de point de contrôle dans Cloud Storage.

    Élément(s) inclus Emplacement dans le dossier de diagnostic
    Propriétés de Managed Service pour Apache Spark .../configs/dataproc/dataproc.properties
    Tous les fichiers dans
    /etc/google-dataproc/
    .../configs/dataproc/
    Tous les fichiers dans
    /etc/hadoop/conf/
    .../configs/hadoop/
    Tous les fichiers de /etc/hive/conf/ .../configs/hive/
    Tous les fichiers dans
    /etc/hive-hcatalog/conf/
    .../configs/hive-hcatalog/
    Tous les fichiers de /etc/knox/conf/ .../configs/knox/
    Tous les fichiers de /etc/pig/conf/ .../configs/pig/
    Tous les fichiers dans
    /etc/presto/conf/
    .../configs/presto/
    Tous les fichiers dans
    /etc/spark/conf/
    .../configs/spark/
    Tous les fichiers de /etc/tez/conf/ .../configs/tez/
    Tous les fichiers dans
    /etc/zookeeper/conf/
    .../configs/zookeeper/

Partager les données de diagnostic du point de contrôle avec l'assistance

Vous pouvez activer le partage des données de diagnostic des points de contrôle avec l'assistanceGoogle Cloud de différentes manières :

  • Activer le partage lors de la création du cluster : ajoutez la propriété de cluster facultative suivante lorsque vous créez un cluster :

    dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
    

    Cette propriété partage automatiquement les données de diagnostic de point de contrôle collectées avec l'assistanceGoogle Cloud afin que vous n'ayez pas à les partager manuellement après chaque création de cluster.

  • Activer le partage après la création du cluster : vous pouvez activer le partage des données de point de contrôle avec l'assistanceGoogle Cloud après la création du cluster en fournissant un accès en lecture aux données de point de contrôle au compte de service utilisé par l'assistance Google Cloud , comme suit :

    • Si l'accès uniforme au niveau du bucket est activé sur le bucket temporaire, ajoutez une liaison de stratégie IAM :

      gcloud storage buckets add-iam-policy-binding gs://TEMP_BUCKET \
          --member=serviceAccount:cloud-diagnose@cloud-dataproc. \
          --role=roles/storage.objectViewer
      

    • Si le contrôle des accès au niveau des objets est activé sur le bucket temporaire, exécutez la commande suivante pour partager les données de diagnostic des points de contrôle :

      gcloud storage objects update \
          gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID \
          --add-acl-grant=entity=user-cloud-diagnose@cloud-dataproc.,role=READER --recursive
      

Désactiver la collecte des données de diagnostic des points de contrôle

Pour désactiver la collecte des données de diagnostic des points de contrôle sur un cluster, définissez dataproc:diagnostic.capture.enabled=false lorsque vous créez le cluster.

Collecte de données de diagnostic d'instantané

Vous pouvez exécuter la commande gcloud dataproc clusters diagnose suivante pour collecter un instantané des données de diagnostic à partir d'un cluster en cours d'exécution. Les données sont écrites sous forme de fichier d'archive (tar) dans le bucket de préproduction de Managed Service pour Apache Spark dans Cloud Storage.

gcloud dataproc clusters diagnose CLUSTER_NAME \
    --region=REGION \
    --tarball-access=GOOGLE_DATAPROC_DIAGNOSE \
    --tarball-gcs-dir=TARBALL_DIR

Remarques :

  • CLUSTER_NAME : nom du cluster à diagnostiquer.
  • REGION : région du cluster, par exemple us-central1.
  • --tarball-access=GOOGLE_DATAPROC_DIAGNOSE : cette option permet à l'assistanceGoogle Cloud d'accéder au fichier tar de diagnostic. Fournissez à l'assistance Google Cloud le chemin d'accès Cloud Storage au fichier tar de diagnostic.

    Au lieu de fournir le fichier tar à l'assistance, vous pouvez fournir l'UUID du cluster, l'ID d'opération de la commande de diagnostic et l'emplacement Cloud Storage du bucket de configuration du cluster.

    Si vous choisissez d'écrire le fichier tar de diagnostic dans un répertoire spécifique, fournissez à l'assistance Google Cloud le chemin d'accès Cloud Storage complet du fichier tar, qui est affiché par la commande de diagnostic.

    Accès au bucket et champ d'application du contenu partagé : le paramètre d'accès au bucket Cloud Storage contenant le fichier tar de diagnostic détermine le champ d'application du contenu partagé avec l'assistance Google Cloud  :

    • Accès uniforme au niveau du bucket : si l'accès uniforme au niveau du bucket est activé sur le bucket de préproduction Managed Service pour Apache Spark ou, si un TARBALL_DIR est spécifié, sur le bucket contenant le TARBALL_DIR, l'intégralité du contenu du bucket est partagée avec l'assistance Google Cloud .

    • Accès au niveau des objets : si l'accès au niveau des objets est activé sur le bucket de préproduction Managed Service pour Apache Spark ou, si un TARBALL_DIR est spécifié, sur le bucket contenant le TARBALL_DIR, seul le fichier tar de diagnostic est partagé avec l'assistance Google Cloud .

  • TARBALL_DIR : facultatif. Vous pouvez utiliser cette option pour spécifier un répertoire Cloud Storage dans lequel le fichier tar de diagnostic sera écrit. Si cette option est omise, le fichier tar de diagnostic est écrit dans le bucket de préproduction Managed Service pour Apache Spark.

  • Additional flags :

    • --start-time avec --end-time : utilisez les deux options pour spécifier une période au format %Y-%m-%dT%H:%M:%S.%fZ pour la collecte des données de diagnostic. La spécification d'une période permet également de collecter les journaux d'autoscaling de Managed Service pour Apache Spark pendant cette période (par défaut, les journaux d'autoscaling de Managed Service pour Apache Spark ne sont pas collectés dans les données d'instantané de diagnostic).

    • Vous pouvez utiliser l'un des deux options suivantes pour collecter des journaux de sortie spécifiques du pilote de job, de l'événement Spark, de l'application YARN et de Sparklens :

      • --job-ids : liste d'ID de jobs séparés par une virgule
      • --yarn-application-ids : liste d'ID d'applications YARN séparés par une virgule

        • L'agrégation des journaux YARN doit être activée (yarn.log-aggregation-enable=true) pour la collecte des journaux d'application YARN.
        • Pour les jobs MapReduce, seuls les journaux d'application YARN sont collectés.

Facultatif : Exécuter le script de diagnostic

La commande gcloud dataproc clusters diagnose peut échouer ou expirer si un cluster est dans un état d'erreur et ne peut pas accepter les tâches de diagnostic du serveur Managed Service pour Apache Spark. Au lieu d'exécuter la commande diagnose, vous pouvez utiliser SSH pour vous connecter au cluster, puis exécuter le script localement sur le nœud maître.

gcloud compute ssh HOSTNAME
gcloud storage cp gs://dataproc-diagnostic-scripts/diagnostic-script.sh .
sudo bash diagnostic-script.sh

Le fichier tar de l'archive de diagnostic est enregistré dans un répertoire local. Le résultat de la commande indique l'emplacement du fichier tar, ainsi que des instructions pour l'importer dans un bucket Cloud Storage.

Données d'instantané de diagnostic

Les données d'instantané de cluster incluent un résumé de diagnostic et plusieurs sections d'archive.

Résumé du diagnostic : le fichier d'archive inclut summary.txt, qui se trouve à la racine de l'archive. Il fournit un aperçu de l'état du cluster, y compris l'état de YARN, de HDFS, du disque et de la mise en réseau, et inclut des avertissements pour vous alerter des problèmes potentiels.

Sections de l'archive : le fichier d'archive inclut les informations suivantes, qui sont écrites dans les emplacements de fichier d'archive suivants.

  • Informations sur les démons et les services

    Commande exécutée Emplacement dans l'archive
    yarn node -list -all /system/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning /system/hdfs-nodes.log
    hdfs dfs -du -h /system/hdfs-du.log
    service --status-all /system/service.log
    systemctl --type service /system/systemd-services.log
    curl "http://${HOSTNAME}:8088/jmx" /metrics/resource_manager_jmx
    curl "http://${HOSTNAME}:8088/ws/v1/cluster/apps" /metrics/yarn_app_info
    curl "http://${HOSTNAME}:8088/ws/v1/cluster/nodes" /metrics/yarn_node_info
    curl "http://${HOSTNAME}:9870/jmx" /metrics/namenode_jmx

  • Informations sur la JVM

    Commande exécutée Emplacement dans l'archive
    jstack -l "${DATAPROC_AGENTPID}" jstack/agent${DATAPROC_AGENT_PID}.jstack
    jstack -l "${PRESTOPID}" jstack/agent${PRESTO_PID}.jstack
    jstack -l "${JOB_DRIVERPID}" jstack/driver${JOB_DRIVER_PID}.jstack
    jinfo "${DATAPROC_AGENTPID}" jinfo/agent${DATAPROC_AGENT_PID}.jstack
    jinfo "${PRESTOPID}" jinfo/agent${PRESTO_PID}.jstack
    jinfo "${JOB_DRIVERPID}" jinfo/agent${JOB_DRIVER_PID}.jstack

  • Informations sur le système Linux

    Commande exécutée Emplacement dans l'archive
    df -h /system/df.log
    ps aux /system/ps.log
    free -m /system/free.log
    netstat -anp /system/netstat.log
    sysctl -a /system/sysctl.log
    uptime /system/uptime.log
    cat /proc/sys/fs/file-nr /system/fs-file-nr.log
    ping -c 1 /system/cluster-ping.log

  • Fichiers journaux

    Article inclus Emplacement dans l'archive
    Tous les journaux de /var/log dont le nom de fichier comporte les préfixes suivants :
    cloud-sql-proxy
    dataproc
    druid
    gcdp
    google
    hadoop
    hdfs
    hive
    knox
    presto
    spark
    syslog
    yarn
    zookeeper
    Les fichiers sont placés dans le dossier d'archive logs et conservent leur nom d'origine.
    Journaux de démarrage des nœuds Managed Service pour Apache Spark pour chaque nœud (maître et de calcul) de votre cluster. Les fichiers sont placés dans le dossier d'archive node_startup, qui contient des sous-dossiers distincts pour chaque machine du cluster.
    Journaux de la passerelle des composants filtrés par la commande journalctl -u google-dataproc-component-gateway /logs/google-dataproc-component-gateway.log

  • Fichiers de configuration

    Élément(s) inclus Emplacement dans l'archive
    Métadonnées de VM /conf/dataproc/metadata
    Variables d'environnement de /etc/environment /conf/dataproc/environment
    Propriétés de Managed Service pour Apache Spark /conf/dataproc/dataproc.properties
    Tous les fichiers de /etc/google-dataproc/ /conf/dataproc/
    Tous les fichiers de /etc/hadoop/conf/ /conf/hadoop/
    Tous les fichiers de /etc/hive/conf/ /conf/hive/
    Tous les fichiers de /etc/hive-hcatalog/conf/ /conf/hive-hcatalog/
    Tous les fichiers de /etc/knox/conf/ /conf/knox/
    Tous les fichiers de /etc/pig/conf/ /conf/pig/
    Tous les fichiers de /etc/presto/conf/ /conf/presto/
    Tous les fichiers de /etc/spark/conf/ /conf/spark/
    Tous les fichiers de /etc/tez/conf/ /conf/tez/
    Tous les fichiers de /etc/zookeeper/conf/ /conf/zookeeper/

Partager le fichier d'archive

Vous pouvez partager le fichier d'archive avec l'assistance Google Cloud ou les utilisateurs pour obtenir de l'aide afin de résoudre les problèmes liés au cluster ou au job.

Pour partager le fichier d'archive :

  • Copiez le fichier d'archive depuis Cloud Storage, puis partagez l'archive téléchargée, ou
  • Modifiez les autorisations de l'archive pour permettre à d'autres utilisateurs ou projets Google Cloud d'accéder au fichier.

    Exemple : La commande suivante accorde des autorisations de lecture de l'archive aux propriétaires du projet test-project :

    gcloud storage objects update PATH_TO_ARCHIVE --add-acl-grant=entity=project-owners-test-project,role=READER