Quando você envia um job do Serviço Gerenciado para Apache Spark, o Serviço Gerenciado para Apache Spark coleta automaticamente a saída do job e a disponibiliza para você. Isso significa que é possível analisar rapidamente a saída do job sem a necessidade de manter uma conexão com o cluster enquanto os jobs são executados ou de conferir arquivos de registro complexos.
Registros do Spark
Há dois tipos de registros do Spark: registros do driver e do executor do Spark.
Os registros do driver do Spark contêm a saída do job. Os registros do executor do Spark contêm a saída executável
ou do iniciador do job, como uma mensagem spark-submit "Submitted application ... ", e
podem ser úteis para depurar falhas de jobs.
O driver de job do Serviço Gerenciado para Apache Spark, que é diferente do driver do Spark, é um iniciador para muitos tipos de jobs. 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 Serviço Gerenciado para Apache Spark no modo Spark
client ou cluster:
Modo
client: o driver do Spark executa o job no processospark-submit, e os registros do Spark são enviados ao driver do job do Serviço Gerenciado para Apache Spark.Modo
cluster: o driver do Spark executa o job em um contêiner do YARN. Os registros do driver do Spark não estão disponíveis para o driver de job do Serviço Gerenciado para Apache Spark.
Visão geral das propriedades de jobs do Serviço Gerenciado para Apache Spark e do Spark
| Propriedade | Valor | Padrão | Descrição |
|---|---|---|---|
dataproc:dataproc.logging.stackdriver.job.driver.enable |
verdadeiro ou falso | falso | Precisa ser definido no momento da criação do cluster. Quando true, a saída do driver do job está no Logging, associada ao recurso do job. Quando false, a saída do driver do job não está 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 | falso | Precisa ser definido no momento da criação do cluster.
Quando true, os registros do contêiner YARN do job são associados
ao recurso do job. Quando false, os registros do contêiner YARN do job
sã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 Serviço Gerenciado para Apache Spark
As tabelas nesta seção listam o efeito de diferentes configurações de propriedades no destino da saída do driver de job do Serviço Gerenciado para Apache Spark quando os jobs são enviados pela API jobs do Serviço Gerço para Apache Spark, que inclui o envio de jobs pelo consoleGoogle Cloud , pela CLI gcloud e pelas bibliotecas de cliente do Cloud.
As propriedades do Serviço Gerenciado para Apache Spark e do Spark listadas podem ser definidas com a flag --properties quando um cluster é criado e se aplicam a todos os jobs do Spark executados no cluster. As propriedades do Spark também podem ser definidas com a flag --properties (sem o prefixo "spark:") quando um job é enviado à API jobs do Serviço Gerenciado para Apache Spark e se aplicam apenas ao job.
Saída do driver de job do Serviço Gerenciado para Apache Spark
As tabelas a seguir listam o efeito de diferentes configurações de propriedade no destino da saída do driver de job do Serviço gerenciado para Apache Spark.
dataproc: |
Saída |
|---|---|
| false (padrão) |
|
| verdadeiro |
|
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: |
dataproc: |
dataproc: |
Saída do driver |
|---|---|---|---|
| cliente | false (padrão) | verdadeiro ou falso |
|
| cliente | verdadeiro | verdadeiro ou falso |
|
| cluster | false (padrão) | falso |
|
| cluster | verdadeiro | verdadeiro |
|
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: |
Registro do executor |
|---|---|
| false (padrão) | No Logging: yarn-userlogs no recurso de cluster |
| verdadeiro | No Logging dataproc.job.yarn.container, no recurso de job |
Jobs do Spark enviados sem usar a API jobs do Serviço Gerenciado para Apache Spark
Esta seção lista o efeito de diferentes configurações de propriedades no destino dos registros de jobs do Spark quando os jobs são enviados sem usar a API jobs do Serviço Gerenciado para Apache Spark. Por exemplo, ao enviar um job diretamente em um nó de cluster usando spark-submit ou um notebook Jupyter ou Zeppelin. Esses jobs não têm IDs ou drivers do Serviço Gerenciado para Apache Spark.
Registros do driver do Spark
As tabelas a seguir listam o efeito de diferentes configurações de propriedades no
destino dos registros de driver do Spark para jobs não enviados pela API jobs do Serviço Gerenciado para Apache Spark.
spark: |
Saída do driver |
|---|---|
| cliente |
|
| cluster |
|
Registros do executor do Spark
Quando os jobs do Spark não são enviados pela API jobs do Serviço Gerenciado para Apache Spark, os registros do executor ficam no Logging yarn-userlogs, no recurso do cluster.
Ver a saída do job
É possível acessar a saída do job do Serviço Gerenciado para Apache Spark no console Google Cloud , na CLI gcloud, no Cloud Storage ou no Logging.
Console
Para conferir a saída da tarefa, acesse a seção Tarefas do Serviço Gerenciado para Apache Spark do projeto e clique no código da tarefa.
Se o job estiver em execução, a saída será atualizada periodicamente com o novo conteúdo.
Comando gcloud
Quando um job é enviado com o comando gcloud dataproc jobs submit, a saída do job é exibida no console. É possível "reingressar" na saída posteriormente, em outro computador ou em uma nova janela, passando o ID do job para o comando gcloud dataproc jobs wait. 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 preparação 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 ...