Resultados e registos de tarefas do Dataproc

Quando envia uma tarefa do Dataproc, o Dataproc recolhe automaticamente o resultado da tarefa e disponibiliza-o. Isto significa que pode rever rapidamente o resultado do trabalho sem ter de manter uma ligação ao cluster enquanto os seus trabalhos são executados ou analisar ficheiros de registo complicados.

Registos do Spark

Existem dois tipos de registos do Spark: registos do controlador do Spark e registos do executor do Spark. Os registos do controlador do Spark contêm o resultado do trabalho; os registos do executor do Spark contêm o resultado do executável do trabalho ou do iniciador, como uma mensagem spark-submit "Submitted application xxx" (Aplicação enviada xxx), e podem ser úteis para depurar falhas de trabalhos.

O controlador de tarefas do Dataproc, que é distinto do controlador do Spark, é um iniciador para muitos tipos de tarefas. Quando inicia tarefas do Spark, estas são executadas como um wrapper no executável spark-submit subjacente, que inicia o controlador do Spark. O controlador do Spark executa a tarefa no cluster do Dataproc no modo Spark client ou cluster:

  • client: o controlador do Spark executa a tarefa no processo spark-submit e os registos do Spark são enviados para o controlador da tarefa do Dataproc.

  • cluster: o controlador do Spark executa a tarefa num contentor YARN. Os registos do controlador do Spark não estão disponíveis para o controlador de tarefas do Dataproc.

Vista geral das propriedades de tarefas do Dataproc e do Spark

Propriedade Valor Predefinição Descrição
dataproc:dataproc.logging.stackdriver.job.driver.enable verdadeiro ou falso falso Tem de ser definido no momento da criação do cluster. Quando true, a saída do controlador de tarefas está no registo, associada ao recurso de tarefa; quando false, a saída do controlador de tarefas não está no registo.
Nota: as seguintes definições de propriedades do cluster também são necessárias para ativar os registos do controlador de tarefas no registo e são definidas por predefinição quando é criado um cluster: 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 falso Tem de ser definido no momento da criação do cluster. Quando true, os registos do contentor YARN da tarefa estão associados ao recurso da tarefa; quando false, os registos do contentor YARN da tarefa estão associados ao recurso do cluster.
spark:spark.submit.deployMode cliente ou cluster cliente Controla o modo client ou cluster do Spark.

Tarefas do Spark enviadas através da API jobs do Dataproc

As tabelas nesta secção indicam o efeito das diferentes definições de propriedades no destino do resultado do controlador de tarefas do Dataproc quando as tarefas são enviadas através da API jobs do Dataproc, que inclui o envio de tarefas através daGoogle Cloud consola, da CLI gcloud e das bibliotecas de cliente da nuvem.

As propriedades do Dataproc e do Spark indicadas podem ser definidas com a flag --properties quando um cluster é criado e aplicam-se a todas as tarefas do Spark executadas no cluster. As propriedades do Spark também podem ser definidas com a flag --properties (sem o prefixo "spark:") quando uma tarefa é enviada para a API jobs do Dataproc e aplicam-se apenas à tarefa.

Resultado do controlador de tarefas do Dataproc

As tabelas seguintes indicam o efeito das diferentes definições de propriedades no destino da saída do controlador da tarefa do Dataproc.

dataproc:
dataproc.logging.stackdriver.job.driver.enable
Resultado
false (predefinição)
  • Transmitido para o cliente
  • No Cloud Storage, no bucket gerado pelo Dataproc driverOutputResourceUri
  • Não está no registo
verdadeiro
  • Transmitido para o cliente
  • No Cloud Storage, no bucket gerado pelo Dataproc driverOutputResourceUri
  • Em Logging: dataproc.job.driver no recurso de tarefa.

Registos do controlador do Spark

As tabelas seguintes indicam o efeito das diferentes definições de propriedades no destino dos registos do controlador do Spark.

spark:
spark.submit.deployMode
dataproc:
dataproc.logging.stackdriver.job.driver.enable
dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Saída do controlador
cliente false (predefinição) verdadeiro ou falso
  • Transmitido para o cliente
  • No Cloud Storage, no bucket gerado pelo Dataproc driverOutputResourceUri
  • Não está no registo
cliente verdadeiro verdadeiro ou falso
  • Transmitido para o cliente
  • No Cloud Storage, no bucket gerado pelo Dataproc driverOutputResourceUri
  • Em Registo: dataproc.job.driver no recurso de trabalho
cluster false (predefinição) falso
  • Não transmitido para o cliente
  • Não está no Cloud Storage
  • No Logging yarn-userlogs abaixo do recurso do cluster
cluster verdadeiro verdadeiro
  • Não transmitido para o cliente
  • Não está no Cloud Storage
  • Em Registo: dataproc.job.yarn.container no recurso de trabalho

Registos do executor do Spark

As tabelas seguintes indicam o efeito das diferentes definições de propriedades no destino dos registos do executor do Spark.

dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Registo do executor
false (predefinição) No Logging: yarn-userlogs abaixo do recurso de cluster
verdadeiro Em Registo dataproc.job.yarn.container no recurso de tarefa

Tarefas do Spark enviadas sem usar a API jobs do Dataproc

Esta secção indica o efeito das diferentes definições de propriedades no destino dos registos de tarefas do Spark quando as tarefas são enviadas sem usar a API Dataproc jobs, por exemplo, quando envia uma tarefa diretamente num nó do cluster através de spark-submit ou quando usa um bloco de notas do Jupyter ou Zeppelin. Estas tarefas não têm IDs de tarefas nem controladores do Dataproc.

Registos do controlador do Spark

As tabelas seguintes indicam o efeito das diferentes definições de propriedades no destino dos registos do controlador do Spark para tarefas não enviadas através da API jobs do Dataproc.

spark:
spark.submit.deployMode
Saída do controlador
cliente
  • Transmitido para o cliente
  • Não está no Cloud Storage
  • Não está no registo
cluster
  • Não transmitido para o cliente
  • Não está no Cloud Storage
  • No Logging yarn-userlogs abaixo do recurso do cluster

Registos do executor do Spark

Quando as tarefas do Spark não são enviadas através da API jobs do Dataproc, os registos do executor estão no Logging yarn-userlogs no recurso do cluster.

Ver saída da tarefa

Pode aceder ao resultado da tarefa do Dataproc na Google Cloud consola, na CLI gcloud, no Cloud Storage ou no Logging.

Consola

Para ver o resultado da tarefa, aceda à secção Tarefas do Dataproc do seu projeto e, de seguida, clique no ID da tarefa para ver o resultado da tarefa.

Se a tarefa estiver em execução, o resultado da tarefa é atualizado periodicamente com novo conteúdo.

comando gcloud

Quando envia um trabalho com o comando gcloud dataproc jobs submit, o resultado do trabalho é apresentado na consola. Pode "voltar a juntar" a saída mais tarde, num computador diferente ou numa nova janela, transmitindo o ID da tarefa para o comando gcloud dataproc jobs wait. O ID da tarefa é um GUID, como 5c1754a5-34f7-4553-b667-8a1199cb9cab. Segue-se 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

O resultado do trabalho é armazenado no Cloud Storage no contentor de preparação ou no contentor que especificou quando criou o cluster. É fornecido um link para o resultado da tarefa no Cloud Storage no campo Job.driverOutputResourceUri devolvido por:

  • um pedido 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
    ...
    

Registo

Consulte os registos do Dataproc para ver informações sobre como ver o resultado da tarefa do Dataproc no Logging.