Saída do driver do job

Você pode enviar, monitorar e controlar facilmente jobs em clusters do Dataproc usando a ferramenta de linha de comando gcloud, o Console do Google Cloud , ou o API REST do Cloud Dataproc. Quando um desses mecanismos é usado para enviar o job, o Cloud Dataproc coleta automaticamente a saída do driver (console) do job e a disponibiliza. Isso significa que é possível analisar rapidamente a saída do driver sem a necessidade de manter uma conexão com o cluster enquanto os jobs são executados ou de conferir arquivos de registro complexos.

Configurar o registro

Por padrão, o Cloud Dataproc usa um nível de geração de registros padrão de WARN para programas de driver. Essa configuração pode ser ajustada quando se usa a linha de comando. Isso permite enviar um job com a opção --driver-log-levels.

O pacote root especial controla o nível raiz do logger. Exemplo:

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

O registro pode ser definido em um nível mais granular para cada job. Por exemplo, para ajudar a depurar problemas ao ler arquivos do Cloud Storage, envie um job com a opção --driver-log-levels, especificando o nível de registro DEBUG da seguinte maneira:

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

Nível de registro do executor do Spark

É possível definir níveis de registro de executor do Spark em nós de cluster com uma ação de inicialização do cluster que edita ou substitui o /etc/spark/conf/log4j.properties. Consulte também o Log4j do Apache 2.

Arquivo /etc/spark/conf/log4j.properties de amostra:

# 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.

Outros componentes de código aberto têm arquivos log4j.properties semelhantes que você pode editar ou substituir por uma ação de inicialização para controlar a saída de registro.

Acessar a saída do driver do job

É possível acessar a saída do driver de job do Cloud Dataproc usando o Console do Cloud, a ferramenta de linha de comando gcloud ou o Cloud Storage.

Comando gcloud

Quando um job é enviado com o comando gcloud dataproc jobs submit, a saída do driver do job é exibida no console. É possível "reingressar" na saída do driver posteriormente, em outro computador ou em uma nova janela, passando o código do job para o comando gcloud dataproc jobs wait. O código do job é um GUID, como 5c1754a5-34f7-4553-b667-8a1199cb9cab. Veja um exemplo:

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

Para isso, acesse a seção Jobs do Dataproc do projeto e clique no código do job.

Se o job estiver em execução, a saída do driver será atualizada periodicamente com o novo conteúdo.

Cloud Storage

A saída do driver do job é armazenada no Cloud Storage no bucket de preparação ou no bucket especificado quando você criou o cluster. Um link para a saída do driver do job no Cloud Storage é fornecido no campo Job.driverOutputResourceUri retornado por:

  • uma solicitação de API jobs.get.
  • um comando gcloud dataproc jobs describe job-id.
    $ gcloud dataproc jobs describe spark-pi
    ...
    driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput
    ...