Présentation
Le serveur d'historique persistant (PHS) Dataproc fournit des interfaces Web pour afficher l'historique des tâches exécutées sur des clusters Dataproc actifs ou supprimés. Il est disponible dans la version d'image 1.5 de Dataproc et versions ultérieures, et s'exécute sur un cluster Dataproc à nœud unique. Il fournit des interfaces Web aux fichiers et données suivants:
Fichiers d'historique des tâches MapReduce et Spark
Fichiers d'historique des tâches Flink (consultez le composant Flink facultatif Dataproc pour créer un cluster Dataproc afin d'exécuter des tâches Flink)
Fichiers de données de chronologie d'application créés par le service de chronologie YARN v2 et stockés dans une instance Bigtable.
Journaux d'agrégation YARN
Le serveur d'historique persistant accède et affiche les fichiers d'historique des tâches Spark et MapReduce, les fichiers d'historique des tâches Flink et les fichiers journaux YARN écrits dans Cloud Storage pendant la durée de vie des clusters de tâches Dataproc.
Limites
La version de l'image du cluster PHS et la version de l'image du ou des clusters d'exécution Dataproc doivent correspondre. Par exemple, vous pouvez utiliser un cluster PHS de la version d'image Dataproc 2.0 pour afficher les fichiers d'historique des tâches des tâches exécutées sur des clusters de tâches de la version d'image Dataproc 2.0 situés dans le projet où se trouve le cluster PHS.
Un cluster PHS n'est pas compatible avec Kerberos et Authentification personnelle.
Créer un cluster PHS Dataproc
Vous pouvez exécuter la commande gcloud dataproc clusters create
suivante dans un terminal local ou dans Cloud Shell avec les indicateurs et les propriétés de cluster suivants pour créer un cluster à nœud unique du serveur d'historique persistant Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT \ --region=REGION \ --single-node \ --enable-component-gateway \ --optional-components=COMPONENT \ --properties=PROPERTIES
- CLUSTER_NAME: spécifiez le nom du cluster PHS.
- PROJECT: spécifiez le projet à associer au cluster PHS. Ce projet doit être identique à celui associé au cluster qui exécute vos jobs (voir Créer un cluster de tâches Dataproc).
- REGION: spécifiez une région Compute Engine dans laquelle se trouvera le cluster PHS.
--single-node
: un cluster PHS est un cluster à nœud unique Dataproc.--enable-component-gateway
: cette option active les interfaces Web de la passerelle des composants sur le cluster PHS.- COMPONENT: utilisez cette option pour installer un ou plusieurs composants facultatifs sur le cluster. Vous devez spécifier le composant facultatif
FLINK
pour exécuter le service Web HistoryServer Flink sur le cluster PHS afin d'afficher les fichiers d'historique des tâches Flink. - PROPERTIES. Spécifiez une ou plusieurs propriétés de cluster.
Si vous le souhaitez, ajoutez l'indicateur --image-version pour spécifier la version de l'image du cluster PHS. La version de l'image PHS doit correspondre à celle du ou des clusters d'exécution Dataproc. Consultez la section Limites.
Remarques :
- Les exemples de valeurs de propriété de cette section utilisent un caractère générique "*" pour permettre au PHS 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é des caractères génériques).
- Des options
--properties
distinctes sont affichées dans les exemples suivants pour faciliter la lisibilité. Lorsque vous utilisezgcloud dataproc clusters create
pour créer un cluster Dataproc sur Compute Engine, nous vous recommandons d'utiliser un indicateur--properties
pour spécifier une liste de propriétés séparées par des virgules (voir la section Mise en forme des propriétés de cluster).
Propriétés:
yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/*/yarn-logs
: ajoutez cette propriété pour spécifier l'emplacement Cloud Storage où le serveur d'historique persistant accédera aux journaux YARN écrits par les clusters de tâches.spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history
: ajoutez cette propriété pour activer l'historique des tâches Spark persistantes. Cette propriété spécifie l'emplacement où le serveur d'historique persistant accède aux journaux de l'historique des tâches Spark écrits par les clusters de tâches.Dans les clusters Dataproc 2.0 et versions ultérieures, les deux propriétés suivantes doivent également être définies pour activer les journaux d'historique Spark du PHS (voir la section Options de configuration du serveur d'historique Spark). La valeur
spark.history.custom.executor.log.url
est une valeur littérale qui contient {{PLACEHOLDERS}} pour les variables qui seront définies par le serveur d'historique persistant. Ces variables ne sont pas définies par les utilisateurs. Transmettez la valeur de la propriété comme indiqué.--properties=spark:spark.history.custom.executor.log.url.applyIncompleteApplication=false
--properties=spark:spark.history.custom.executor.log.url={{YARN_LOG_SERVER_URL}}/{{NM_HOST}}:{{NM_PORT}}/{{CONTAINER_ID}}/{{CONTAINER_ID}}/{{USER}}/{{FILE_NAME}}
mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done
: ajoutez cette propriété pour activer l'historique des tâches MapReduce persistantes. Cette propriété spécifie l'emplacement Cloud Storage où le serveur d'historique persistant accédera aux journaux de l'historique des tâches MapReduce écrits par les clusters de tâches.dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id
: après avoir configuré Yarn Timeline Service v2, ajoutez cette propriété pour utiliser le cluster PHS afin d'afficher les données de chronologie sur les interfaces Web YARN Application Timeline Service v2 et Tez (voir Interfaces Web de la passerelle de composants).flink:historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs
: utilisez cette propriété pour configurer leHistoryServer
Flink afin de surveiller une liste de répertoires séparés par une virgule.
Exemples de propriétés:
--properties=spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history
--properties=mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done
--properties=flink:flink.historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs
Créer un cluster de tâches Dataproc
Vous pouvez exécuter la commande suivante dans un terminal local ou dans Cloud Shell pour créer un cluster de tâches Dataproc qui exécute des tâches et écrit des fichiers d'historique des tâches sur un serveur d'historique persistant (PHS).
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT \ --region=REGION \ --optional-components=COMPONENT \ --enable-component-gateway \ --properties=PROPERTIES \ other args ...
- CLUSTER_NAME: spécifiez le nom du cluster de tâches.
- PROJECT: spécifiez le projet associé au cluster de tâches.
- REGION: spécifiez la région Compute Engine dans laquelle se trouvera le cluster de tâches.
--enable-component-gateway
: cette option active les interfaces Web de la passerelle des composants sur le cluster de tâches.- COMPONENT: utilisez cette option pour installer un ou plusieurs composants facultatifs sur le cluster. Spécifiez le composant facultatif
FLINK
pour exécuter des tâches Flink sur le cluster. PROPERTIES: ajoutez une ou plusieurs des propriétés de cluster suivantes pour définir des emplacements Cloud Storage non par défaut liés au serveur d'historique persistant et d'autres propriétés de cluster de tâches.
Remarques :
- Les exemples de valeurs de propriété de cette section utilisent un caractère générique "*" pour permettre au PHS 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é des caractères génériques).
- Des options
--properties
distinctes sont affichées dans les exemples suivants pour faciliter la lisibilité. Lorsque vous utilisezgcloud dataproc clusters create
pour créer un cluster Dataproc sur Compute Engine, nous vous recommandons d'utiliser un indicateur--properties
pour spécifier une liste de propriétés séparées par des virgules (voir la section Mise en forme des propriétés de cluster).
Propriétés:
yarn:yarn.nodemanager.remote-app-log-dir
: par défaut, les journaux YARN agrégés sont activés sur les clusters de tâches Dataproc et écrits dans le bucket temporaire du cluster. Ajoutez cette propriété pour spécifier un autre emplacement Cloud Storage où le cluster écrira des journaux d'agrégation accessibles par le serveur d'historique persistant.--properties=yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/directory-name/yarn-logs
spark:spark.history.fs.logDirectory
etspark:spark.eventLog.dir
: par défaut, les fichiers d'historique des tâches Spark sont enregistrés dans le clustertemp bucket
dans le répertoire/spark-job-history
. Vous pouvez ajouter ces propriétés pour spécifier différents emplacements Cloud Storage pour ces fichiers. Si les deux propriétés sont utilisées, elles doivent pointer vers des répertoires du même bucket.--properties=spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history
--properties=spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
mapred:mapreduce.jobhistory.done-dir
etmapred:mapreduce.jobhistory.intermediate-done-dir
: par défaut, les fichiers d'historique des tâches MapReduce sont enregistrés dans le clustertemp bucket
dans les répertoires/mapreduce-job-history/done
et/mapreduce-job-history/intermediate-done
. L'emplacementmapreduce.jobhistory.intermediate-done-dir
intermédiaire est un espace de stockage temporaire. Les fichiers intermédiaires sont déplacés vers l'emplacementmapreduce.jobhistory.done-dir
une fois la tâche MapReduce terminée. Vous pouvez ajouter ces propriétés pour spécifier différentes emplacements Cloud Storage pour ces fichiers. Si les deux propriétés sont utilisées, elles doivent pointer vers des répertoires situés dans le même bucket.--properties=mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done
--properties=mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
spark:spark.history.fs.gs.outputstream.type
etspark:spark.history.fs.gs.outputstream.sync.min.interval.ms
: ajoutez ces propriétés de connecteur Cloud Storage pour modifier le comportement par défaut de l'envoi de données du cluster de tâches vers Cloud Storage. La valeurspark:spark.history.fs.gs.outputstream.type
par défaut estBASIC
, qui envoie les données à Cloud Storage une fois la tâche terminée. Vous pouvez définir ce paramètre surFLUSHABLE_COMPOSITE
pour modifier le comportement de vidage afin de copier les données dans Cloud Storage à intervalles réguliers pendant l'exécution de la tâche. La valeur--properties=spark:spark.history.fs.gs.outputstream.type=FLUSHABLE_COMPOSITE
spark:spark.history.fs.gs.outputstream.sync.min.interval.ms
par défaut, qui contrôle la fréquence à laquelle les données sont transférées vers Cloud Storage, est5000ms
. Vous pouvez la remplacer par un autre intervalle de tempsms
: Remarque:Pour définir ces propriétés, la version de l'image du cluster de tâches Dataproc doit utiliser le connecteur Cloud Storage version 2.2.0 ou ultérieure. Vous pouvez vérifier la version du connecteur installée sur les versions d'image sur la page Liste des versions d'image Dataproc.--properties=spark:spark.history.fs.gs.outputstream.sync.min.interval.ms=intervalms
dataproc:yarn.atsv2.bigtable.instance
: après avoir configuré Yarn Timeline Service v2, ajoutez cette propriété pour écrire les données de chronologie YARN dans l'instance Bigtable spécifiée afin de les afficher sur les interfaces Web YARN Application Timeline Service v2 et Tez du cluster PHS. Remarque: La création du cluster échouera si l'instance Bigtable n'existe pas.--properties=dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id
flink:jobhistory.archive.fs.dir
: le gestionnaire de tâches Flink archive les tâches Flink terminées en important les informations de tâche archivées dans un répertoire de système de fichiers. Utilisez cette propriété pour définir le répertoire d'archive dansflink-conf.yaml
.--properties=flink:jobmanager.archive.fs.dir=gs://bucket-name/job-cluster-1/flink-job-history/completed-jobs
Utiliser PHS avec des charges de travail par lot Spark
Pour utiliser le serveur d'historique persistant avec Dataproc sans serveur pour les charges de travail par lot Spark:
Sélectionnez ou spécifiez le cluster PHS lorsque vous envoyez une charge de travail par lot Spark.
Utiliser PHS avec Dataproc sur Google Kubernetes Engine
Pour utiliser le serveur d'historique persistant avec Dataproc sur GKE:
Sélectionnez ou spécifiez le cluster PHS lorsque vous créez un cluster virtuel Dataproc sur GKE.
Interfaces Web de la passerelle des composants
Dans la console Google Cloud, sur la page Clusters (Clusters Dataproc), cliquez sur le nom du cluster PHS pour ouvrir la page Cluster details (Détails du cluster). Dans l'onglet Web Interfaces (Interfaces Web), sélectionnez les liens de la passerelle des composants pour ouvrir les interfaces Web exécutées sur le cluster PHS.
Interface Web du serveur d'historique Spark
La capture d'écran suivante montre l'interface Web 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 |
Recherche par nom d'application
Vous pouvez répertorier les tâches par nom d'application dans l'interface Web du serveur d'historique Spark en saisissant un nom d'application 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é):
- Défini dans le code de l'application lors de la création du contexte Spark
- Défini par la propriété spark.app.name lors de l'envoi de la tâche
- Défini par Dataproc sur le nom complet de la ressource REST pour la tâche (
projects/project-id/regions/region/jobs/job-id
)
Les utilisateurs peuvent saisir un nom d'application ou de ressource dans le champ Rechercher pour trouver et lister des tâches.
Journaux des événements
L'interface Web 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 Web 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.
Interface Web Tez
Tez est le moteur d'exécution par défaut pour Hive et Pig sur Dataproc. L'envoi d'une tâche Hive sur un cluster de tâches Dataproc lance une application Tez (voir Utiliser Apache Hive sur Dataproc ).
Si vous avez configuré Yarn Timeline Service v2 et défini la propriété dataproc:yarn.atsv2.bigtable.instance
lorsque vous avez créé les clusters de tâches PHS et Dataproc, YARN écrit les données de chronologie des tâches Hive et Pig générées dans l'instance Bigtable spécifiée pour les récupérer et les afficher dans l'interface Web Tez exécutée sur le serveur PHS.
Interface Web de la chronologie des applications YARN V2
Si vous avez configuré Yarn Timeline Service v2 et défini la propriété dataproc:yarn.atsv2.bigtable.instance
lorsque vous avez créé les clusters de tâches PHS et Dataproc, YARN écrit les données de chronologie de tâche générées dans l'instance Bigtable spécifiée pour les récupérer et les afficher dans l'interface Web du service de chronologie des applications YARN exécutée sur le serveur PHS. Les tâches Dataproc sont répertoriées dans l'onglet Activité de flux de l'interface Web.
Configurer Yarn Timeline Service v2
Pour configurer Yarn Timeline Service v2, configurez une instance Bigtable et, si nécessaire, vérifiez les rôles de compte de service comme suit:
Vérifiez les rôles du compte de service, si nécessaire. Le compte de service de la VM par défaut utilisé par les VM de cluster Dataproc dispose des autorisations nécessaires pour créer et configurer l'instance Bigtable pour le service YARN Timeline. Si vous créez votre tâche ou votre cluster PHS avec un compte de service de VM personnalisé, le compte doit disposer du rôle
Administrator
ouBigtable User
Bigtable.
Schéma de table requis
La prise en charge de la PHS Dataproc pour YARN Timeline Service v2 nécessite un schéma spécifique créé dans l'instance Bigtable. Dataproc crée le schéma requis lorsqu'un cluster de tâches ou un cluster PHS est créé avec la propriété dataproc:yarn.atsv2.bigtable.instance
définie pour pointer vers l'instance Bigtable.
Voici le schéma d'instance Bigtable requis:
Tables | Familles de colonnes |
---|---|
prod.timelineservice.application | c,i,m |
prod.timelineservice.app_flow | m |
prod.timelineservice.entity | c,i,m |
prod.timelineservice.flowactivity | i |
prod.timelineservice.flowrun | i |
prod.timelineservice.subapplication | c,i,m |
Récupération de mémoire Bigtable
Vous pouvez configurer la récupération de mémoire Bigtable en fonction de l'âge pour les tables ATSv2:
Installez cbt (y compris la création de
.cbrtc file
).Créez la stratégie de récupération de mémoire en fonction de l'âge ATSv2:
export NUMBER_OF_DAYS = number \ cbt setgcpolicy prod.timelineservice.application c maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.application i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.application m maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.app_flow m maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.entity c maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.entity i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.entity m maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.flowactivity i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.flowrun i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.subapplication c maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.subapplication i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.subapplication m maxage=${NUMBER_OF_DAYS}
Remarques :
NUMBER_OF_DAYS: le nombre maximal de jours est 30d
.