Registros e saída do job do Dataproc

Quando você envia um job do Dataproc, o Dataproc reúne automaticamente a saída do job e a disponibiliza. Isso significa que é possível analisar rapidamente a saída do job sem precisar manter uma conexão com o cluster enquanto os jobs são executados ou examinar arquivos de registro complicados.

Registros do Spark

Há dois tipos de registros do Spark: de driver e de executor do Spark. Os registros do driver do Spark contêm a saída do job. Os registros do executor do Spark contêm o executável do job ou a saída do inicializador, como uma mensagem spark-submit "Aplicativo enviado xxx", e podem ser úteis para depurar falhas do job.

O driver de job do Dataproc, que é diferente do driver do Spark, é um inicializador para muitos tipos de job. Ao iniciar jobs do Spark, ele é executado como um wrapper no executável spark-submit subjacente, que inicia o driver do Spark. O driver do Spark executa o job no cluster do Dataproc no modo client ou cluster do Spark:

  • Modo client: o driver do Spark executa o job no processo spark-submit, e os registros do Spark são enviados para o driver do job do Dataproc.

  • Modo cluster: o driver do Spark executa o job em um contêiner Lighthouse. Os registros do driver do Spark não estão disponíveis para o driver do job do Dataproc.

Visão geral das propriedades de jobs do Dataproc e do Spark

Propriedade Valor Padrão Descrição
dataproc:dataproc.logging.stackdriver.job.driver.enable verdadeiro ou falso false Precisa ser definido no momento da criação do cluster. Quando true, a saída do driver do job estará no Logging e associada ao recurso do job. Quando false, a saída do driver do job não estará no Logging.
Observação: as seguintes configurações de propriedade do cluster também são necessárias para ativar os registros do driver do job no Logging e são definidas por padrão quando um cluster é criado: dataproc:dataproc.logging.stackdriver.enable=true e dataproc:jobs.file-backed-output.enable=true
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable verdadeiro ou falso false Precisa ser definido no momento da criação do cluster. Quando true, os registros de contêiner do job precisam estar associados ao recurso do job. Quando false, os registros de contêiner do job serão associados ao recurso do cluster.
spark:spark.submit.deployMode cliente ou cluster cliente Controla o modo client ou cluster do Spark.

Jobs do Spark enviados usando a API jobs do Dataproc

As tabelas nesta seção listam o efeito de diferentes configurações de propriedade no destino da saída do driver de jobs do Dataproc quando os jobs são enviados por meio da API Dataproc jobs, que inclui o envio de jobs por meio do console do Google Cloud, da CLI gcloud e das bibliotecas de cliente do Cloud.

As propriedades do Dataproc e do Spark listadas podem ser definidas com a sinalização --properties quando um cluster é criado e serão aplicadas a todos os jobs do Spark executados no cluster. As propriedades do Spark também podem ser definidas com a sinalização --properties (sem o prefixo "spark:") quando um job é enviado à API jobs do Dataproc e serão aplicadas somente ao job.

Saída do driver do job do Dataproc

As tabelas a seguir listam o efeito de diferentes configurações de propriedade no destino da saída do driver do job do Dataproc.

dataproc:
dataproc.logging.stackdriver.job.driver.enable
Saída
false (padrão)
  • Transmitido para o cliente
  • No Cloud Storage no driverOutputResourceUri gerado pelo Dataproc
  • Não está no Logging
true
  • Transmitido para o cliente
  • No Cloud Storage no driverOutputResourceUri gerado pelo Dataproc
  • No Logging: dataproc.job.driver no recurso do job.

Registros do driver do Spark

As tabelas a seguir listam o efeito de diferentes configurações de propriedade no destino dos registros do driver do Spark.

spark:
spark.submit.deployMode
dataproc:
dataproc.logging.stackdriver.job.driver.enable
dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Saída do driver
cliente false (padrão) verdadeiro ou falso
  • Transmitido para o cliente
  • No Cloud Storage no driverOutputResourceUri gerado pelo Dataproc
  • Não está no Logging
cliente true verdadeiro ou falso
  • Transmitido para o cliente
  • No Cloud Storage no driverOutputResourceUri gerado pelo Dataproc
  • No Logging: dataproc.job.driver no recurso do job.
cluster false (padrão) false
  • Não transmitida ao cliente
  • Não está no Cloud Storage
  • No Logging yarn-userlogs, no recurso do cluster
cluster true true
  • Não transmitida ao cliente
  • Não está no Cloud Storage
  • No Logging: dataproc.job.yarn.container no recurso do job.

Registros do executor do Spark

As tabelas a seguir listam o efeito de diferentes configurações de propriedade no destino dos registros do executor do Spark.

dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Registro do executor
false (padrão) No Logging: yarn-userlogs no recurso do cluster.
true No Logging dataproc.job.yarn.container, no recurso do job

Jobs do Spark enviados sem usar a API jobs do Dataproc

Nesta seção, listamos o efeito de diferentes configurações de propriedade no destino dos registros de jobs do Spark quando os jobs são enviados sem usar a API jobs do Dataproc. Por exemplo, ao enviar um job diretamente em um nó de cluster usando spark-submit ou ao usar um notebook do Jupyter ou do Zeppelin. Esses jobs não têm IDs ou drivers do job do Dataproc.

Registros do driver do Spark

As tabelas a seguir listam o efeito de diferentes configurações de propriedade no destino dos registros do driver do Spark para jobs não enviados pela API jobs do Dataproc.

spark:
spark.submit.deployMode
Saída do driver
cliente
  • Transmitido para o cliente
  • Não está no Cloud Storage
  • Não está no Logging
cluster
  • Não transmitida ao cliente
  • Não está no Cloud Storage
  • No Logging yarn-userlogs, no recurso do cluster

Registros do executor do Spark

Quando os jobs do Spark não são enviados pela API jobs do Dataproc, os registros do executor ficam no Logging yarn-userlogs, no recurso do cluster.

Conferir a saída do job

É possível acessar a saída do job do Dataproc no console do Google Cloud, na CLI gcloud, no Cloud Storage ou no Logging.

Console

Para isso, acesse a seção Jobs do Dataproc do seu projeto e clique em ID do job.

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

Comando gcloud

Quando você envia um job com o comando gcloud dataproc jobs submit, a saída do job é exibida no console. É possível "voltar" à saída posteriormente, em um computador diferente ou em uma nova janela, passando o código do job para o comando gcloud dataproc jobs espera. O código do job é um GUID, como 5c1754a5-34f7-4553-b667-8a1199cb9cab. Aqui está 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/
...

Cloud Storage

A saída do job é armazenada no Cloud Storage no bucket de preparo ou no bucket especificado quando você criou o cluster. Um link para a saída 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
    ...
    

Geração de registros

Consulte Registros do Dataproc para informações sobre como ver a saída do job do Dataproc no Logging.