Résultats des pilotes de tâches

Vous pouvez facilement envoyer, surveiller et contrôler des tâches sur des clusters Dataproc à l'aide de l'outil de ligne de commande gcloud, Google Cloud Console ou l'API REST Cloud Dataproc. Lorsque vous utilisez l'un de ces mécanismes pour envoyer votre tâche, Cloud Dataproc recueille automatiquement les résultats des pilotes (de la console) de votre tâche et les met à votre disposition. Cela signifie que vous pouvez rapidement consulter les résultats du pilote sans avoir à maintenir une connexion au cluster pendant l'exécution de vos tâches ni à parcourir des fichiers journaux compliqués.

Configurer la journalisation

Cloud Dataproc utilise par défaut le niveau de journalisation WARN pour les programmes pilotes. Ce paramètre peut être ajusté à l'aide de la ligne de commande, ce qui permet d'envoyer une tâche avec l'option --driver-log-levels.

Le package root spécial contrôle le niveau de l'enregistreur racine. Exemple :

gcloud dataproc jobs submit hadoop ...\
  --driver-log-levels root=FATAL,com.example=INFO

La journalisation peut être définie à un niveau encore plus précis pour chaque tâche. Par exemple, pour faciliter le débogage des problèmes lors de la lecture de fichiers à partir de Cloud Storage, vous pouvez envoyer une tâche avec l'option --driver-log-levels, en spécifiant le niveau de journalisation DEBUG comme suit :

gcloud dataproc jobs submit hadoop ...\
  --driver-log-levels com.google.cloud.hadoop.gcsio=DEBUG

Définir les niveaux de journalisation de l'exécuteur

Vous pouvez définir Spark, Hadoop, Flink et autres niveaux de journalisation de l'exécuteur de composants OSS sur les nœuds de cluster avec une action d'initialisation de cluster qui modifie ou remplace le fichier .../log4j.properties (consultez la page Apache Log4j 2).

Exemple de fichier /etc/spark/conf/log4j.properties :

# Set everything to be logged to the console.
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n

# Settings to quiet third party logs.
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO

# Reduce verbosity for other core classes.
log4j.logger.org.apache.spark=WARN
log4j.logger.org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter=WARN
log4j.logger.org.apache.hadoop.conf.Configuration.deprecation=WARN
log4j.logger.org.spark-project.jetty.server.handler.ContextHandler=WARN

# Spark 2.0 specific output.
log4j.logger.org.spark_project.jetty.server.handler.ContextHandler=WARN.

Accéder aux résultats du pilote de tâches

Vous pouvez accéder aux résultats du pilote de tâches Cloud Dataproc à l'aide de Cloud Console, de l'outil de ligne de commande gcloud ou de Cloud Storage.

Commande gcloud

Lorsque vous envoyez une tâche à l'aide de la commande gcloud dataproc jobs submit, les résultats du pilote s'affichent dans la console. Vous pouvez "retrouver" ces résultats ultérieurement, sur un autre ordinateur ou dans une nouvelle fenêtre, en transmettant l'ID de votre tâche à la commande gcloud dataproc jobs wait. L'ID de tâche est un GUID, tel que 5c1754a5-34f7-4553-b667-8a1199cb9cab. Par exemple :

gcloud dataproc jobs wait 5c1754a5-34f7-4553-b667-8a1199cb9cab \
    --project my-project-id --region my-cluster-region
Waiting for job output...
... INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.4.2-hadoop2
... 16:47:45 INFO client.RMProxy: Connecting to ResourceManager at my-test-cluster-m/
...

Console

Pour afficher les résultats du pilote de tâches, accédez à la section Tâches Dataproc de votre projet, puis cliquez sur l'ID de la tâche pour afficher la tâche. résultat.

Si la tâche est en cours d'exécution, les résultats des pilotes de tâches sont actualisés périodiquement avec le nouveau contenu.

Cloud Storage

Dans Cloud Storage, les résultats des pilotes de tâches sont stockés dans le bucket de préproduction ou le bucket spécifié lors de la création du cluster. Dans Cloud Storage, un lien vers les résultats des pilotes de tâches est fourni dans le champ Job.driverOutputResourceUri renvoyé par :

  • une requête d'API jobs.get.
  • une commande gcloud dataproc jobs describe job-id.
    $ gcloud dataproc jobs describe spark-pi
    ...
    driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput
    ...