Serveur d'historique persistant Dataproc

Présentation

Une fois les clusters Dataproc supprimés, les utilisateurs souhaitent souvent afficher les fichiers d'historique des tâches à des fins de diagnostic ou autres. Le serveur d'historique persistant (PHS) Dataproc fournit une interface utilisateur qui permet d'afficher l'historique des tâches exécutées sur des clusters Dataproc actifs ou supprimés.

Ce serveur s'exécute sur un cluster Dataproc à nœud unique, stocke les fichiers d'historique des tâches dans Cloud Storage, y accède et accepte les tâches MapReduce, Spark et Pig. Cette fonctionnalité est disponible dans la version en images Dataproc 1.4-debian10 et versions ultérieures.

Configurer un cluster de tâches Dataproc

Vous devez spécifier l'option suivante et les propriétés de cluster lors de la création d'un cluster Dataproc qui exécutera des tâches et stockera les journaux de tâches qui pourront être affichés et seront accessibles par un cluster du serveur d'historique persistant.

  • --enable-component-gateway : option requise. Cette option doit être utilisée pour activer la passerelle des composants.
  • dataproc:job.history.to-gcs.enabled : propriété de cluster requise. Cette propriété doit être définie sur "true" pour activer le stockage de l'historique des tâches dans Cloud Storage.
  • spark:spark.history.fs.logDirectory et spark:spark.eventLog.dir : Propriétés de cluster facultatives. Ces options indiquent respectivement l'emplacement d'écriture de l'historique des tâches et des journaux d'événements Spark. Si ces deux options sont utilisées, elles doivent être définies et pointer vers des répertoires situés dans le même bucket.
    Exemples de propriétés :
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
    
  • mapred:mapreduce.jobhistory.intermediate-done-dir et mapred:mapreduce.jobhistory.done-dir : propriétés de cluster facultatives. Ces options indiquent respectivement l'emplacement Cloud Storage dans lequel écrire les fichiers d'historique des tâches MapReduce intermédiaires et finaux. Si ces deux options sont utilisées, elles doivent être définies et pointer vers des répertoires situés dans le même bucket. L'emplacement mapreduce.jobhistory.intermediate-done-dir intermédiaire est un espace de stockage temporaire. Les fichiers intermédiaires sont déplacés vers l'emplacement mapreduce.jobhistory.done-dir une fois la tâche MapReduce terminée.
    Exemples de propriétés :
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
    
  • Les propriétés suivantes contrôlent le comportement de vidage de Cloud Storage pour les journaux d'événements des images 1.4 et ultérieures. Remarque : La configuration par défaut de ces propriétés permet d'afficher des tâches en cours d'exécution dans l'interface utilisateur du serveur d'historique Spark pour les clusters utilisant Cloud Storage pour stocker les journaux des événements Spark.
    spark:spark.history.fs.gs.outputstream.type(default:BASIC)
    spark:spark.history.fs.gs.outputstream.sync.min.interval.ms (default: 5000ms).
    
  1. Exécutez la commande gcloud dataproc clusters create pour créer un cluster de tâches. Le cluster doit être créé avec l'image 1.4-debian10 ou ultérieure. Remarque : Pour plus de lisibilité, les valeurs de l'option --property sont affichées ci-dessous sur des lignes distinctes. Lorsque vous exécutez la commande, toutes les valeurs d'option --property séparées par des virgules doivent être spécifiées sur une ligne.
    gcloud dataproc clusters create cluster-name \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='dataproc:job.history.to-gcs.enabled=true,
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory/spark-job-history,
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done'
    

Vous pouvez exécuter la commande simplifiée suivante pour que Dataproc configure les emplacements Cloud Storage pour les fichiers d'historique des tâches.

gcloud dataproc clusters create cluster-name \
    --region=region \
    --image-version=1.4-debian10 \
    --enable-component-gateway \
    --properties='dataproc:job.history.to-gcs.enabled=true'

Si vous exécutez la commande simplifiée illustrée ci-dessus, les fichiers d'historique des tâches seront enregistrés dans le bucket temporaire Dataproc des répertoires par défaut : /spark-job-history, /mapreduce-job-history/done, et /mapreduce-job-history/intermediate-done. L'emplacement Cloud Storage du bucket temporaire est répertorié dans le résultat de la commande gcloud dataproc clusters describe cluster-name --region=region. L'emplacement Cloud Storage des fichiers de l'historique des tâches est également répertorié dans les fichiers /etc/spark/conf/spark-defaults.conf et /etc/hadoop/conf/mapred-site.xml du cluster.

Exemples après la connexion SSH au nœud maître du cluster de tâches :

cat /etc/spark/conf/spark-defaults.conf
...
spark.history.fs.logDirectory=gs://temp-bucket/spark-job-history
spark.eventLog.dir=gs://temp-bucket/spark-job-history
cat /etc/hadoop/conf/mapred-site.xml
...
<property>
  <name>mapreduce.jobhistory.done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done</value>
</property>
<property>
  <name>mapreduce.jobhistory.intermediate-done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done_intermediate</value>
</property>

Configurer un serveur d'historique persistant

Vous devez spécifier l'option suivante et les propriétés de cluster lors de la création d'un cluster à nœud unique du serveur d'historique persistant :

  • --enable-component-gateway : option requise. Cette option doit être utilisée pour activer la passerelle des composants.
  • spark:spark.history.fs.logDirectory : propriété de cluster obligatoire pour activer l'historique des tâches Spark persistantes. Cette propriété spécifie le bucket et les répertoires Cloud Storage où le serveur d'historique persistant accède aux journaux de l'historique des tâches Spark écrits par les clusters de tâches (consultez la section Configurer un cluster de tâches Dataproc). Au lieu de spécifier des répertoires de buckets spécifiques, utilisez des astérisques comme caractères génériques (par exemple, gs://bucket-name/*/spark-job-history) pour permettre au serveur d'historique persistant de faire correspondre plusieurs répertoires du bucket spécifié et écrits par différents clusters de tâches (mais consultez la section Considérations d'efficacité : utiliser des caractères génériques à mi-chemin).
  • mapred:mapreduce.jobhistory.read-only.dir-pattern : propriété de cluster obligatoire pour activer l'historique des tâches MapReduce persistantes. Cette propriété spécifie le bucket et les répertoires Cloud Storage où le serveur d'historique persistant accède aux journaux de l'historique des tâches MapReduce écrits par les clusters de tâches (consultez la section Configurer des clusters de tâches). Au lieu de spécifier des répertoires de buckets spécifiques, utilisez des astérisques comme caractères génériques (par exemple, gs://bucket-name/*/mapreduce-job-history/done) pour permettre au serveur d'historique persistant de faire correspondre plusieurs répertoires du bucket spécifié et écrits par différents clusters de tâches (mais consultez la section Considérations d'efficacité : utiliser des caractères génériques à mi-chemin).
  1. Exécutez la commande gcloud dataproc clusters create pour créer un cluster de serveur d'historique persistant Dataproc à nœud unique.
    gcloud dataproc clusters create cluster-name \
        --single-node \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history,mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done'
    

Accédez à la page Clusters du cluster du serveur d'historique persistant à nœud unique dans Cloud Console, puis cliquez sur l'onglet INTERFACES WEB. Sous la passerelle des composants, cliquez sur "Historique de tâches MapReduce" ou "Serveur d'historique Spark" pour afficher les interfaces utilisateur de l'historique des tâches MapReduce et Spark.

Interface utilisateur du serveur d'historique Spark

La capture d'écran suivante montre l'interface utilisateur du serveur d'historique persistant affichant des liens vers les tâches Spark exécutées sur les job-cluster-1 et job-cluster-2 après la configuration de spark.history.fs.logDirectory et spark:spark.eventLog.dir des clusters de tâches et des emplacements spark.history.fs.logDirectory du cluster du serveur d'historique persistant de la manière suivante :

job-cluster-1 gs://example-cloud-storage-bucket/job-cluster-1/spark-job-history
job-cluster-2 gs://example-cloud-storage-bucket/job-cluster-2/spark-job-history
phs-cluster gs://example-cloud-storage-bucket/*/spark-job-history

Vous pouvez répertorier les tâches par nom d'application dans l'interface utilisateur du serveur d'historique Spark en saisissant le nom dans le champ de recherche. Le nom de l'application peut être défini de l'une des manières suivantes (répertoriées par priorité) :

  1. Défini dans le code de l'application lors de la création du contexte Spark
  2. Défini par la propriété spark.app.name lors de l'envoi de la tâche
  3. Défini par Dataproc sur le nom complet de la ressource REST pour la tâche (projects/project-id/regions/region/jobs/job-id)

Journaux des événements

L'interface utilisateur du serveur d'historique Spark fournit un bouton Journal des événements sur lequel vous pouvez cliquer pour télécharger les journaux des événements Spark. Ces journaux sont utiles pour examiner le cycle de vie de l'application Spark.

Tâches Spark

Les applications Spark sont divisées en plusieurs tâches, elles-mêmes divisées en plusieurs étapes. Chaque étape peut comprendre plusieurs tâches, qui sont exécutées sur des nœuds d'exécution (nœuds de calcul).

  • Cliquez sur un ID d'application Spark dans l'interface utilisateur pour ouvrir la page des tâches Spark, qui fournit une chronologie des événements et un résumé des tâches au sein de l'application.

  • Cliquez sur une tâche pour ouvrir la page "Détails de la tâche" avec un graphe orienté acyclique et un résumé des étapes de la tâche.

  • Cliquez sur une étape ou utilisez l'onglet "Étapes" pour sélectionner une étape afin d'ouvrir la page "Détails de l'étape".

    Les détails de l'étape incluent une visualisation du DAG, une chronologie des événements et des métriques pour les tâches de la phase. Vous pouvez utiliser cette page pour résoudre les problèmes liés aux tâches "étranglées", aux retards du programmeur et aux erreurs de mémoire insuffisante. Le visualiseur de DAG affiche la ligne de code à partir de laquelle la phase est dérivée, ce qui vous aide à suivre les problèmes dans le code.

  • Cliquez sur l'onglet "Executors" (Exécuteurs) pour en savoir plus sur le pilote et les nœuds d'exécution de l'application Spark.

    Les informations importantes de cette page incluent le nombre de cœurs et le nombre de tâches exécutées sur chaque exécuteur.