Este documento fornece orientações sobre a resolução de problemas comuns que impedem o início de cargas de trabalho em lote e sessões interativas do Apache Spark no Google Cloud Serverless for Apache Spark.
Vista geral
Normalmente, quando um lote ou uma sessão não é iniciado, é apresentada a seguinte mensagem de erro:
Driver compute node failed to initialize for batch in 600 seconds
Esta mensagem de erro indica que não foi possível iniciar o controlador do Spark dentro do período de limite de tempo predefinido de 600 segundos (10 minutos). As causas comuns estão relacionadas com as autorizações da conta de serviço, a disponibilidade de recursos, a configuração de rede ou as propriedades do Spark.
Causas de falhas no início de sessões e processamento em lote, e passos de resolução de problemas
As secções seguintes indicam causas comuns de falhas de início de sessões e de processamento em lote, com sugestões de resolução de problemas para ajudar a resolver os problemas.
Autorizações da conta de serviço insuficientes
A conta de serviço usada pelo seu processamento em lote ou sessão do Serverless for Apache Spark requer funções específicas do IAM que incluem autorizações para a operação e o acesso do Serverless for Apache Spark a Google Cloud recursos. Se a conta de serviço não tiver as funções necessárias, o controlador do Spark para o lote ou a sessão pode não ser inicializado.
- Função de trabalhador necessária: a conta de serviço em lote ou de sessão tem de ter a função de trabalhador do Dataproc (
roles/dataproc.worker
). Esta função contém as autorizações mínimas necessárias para o Serverless para Apache Spark aprovisionar e gerir recursos de computação. - Autorizações de acesso aos dados: se a sua aplicação Spark ler ou escrever no Cloud Storage ou no BigQuery, a conta de serviço precisa de funções relacionadas com esses serviços:
- Cloud Storage: a função
Storage Object Viewer
(roles/storage.objectViewer
) é necessária para leitura e a funçãoStorage Object Creator
(roles/storage.objectCreator
) ou funçãoStorage Object Admin
(roles/storage.admin
) é necessária para escrita. - BigQuery: a função
BigQuery Data Viewer
(roles/bigquery.dataViewer
) é necessária para leitura e a funçãoBigQuery Data Editor
(roles/bigquery.dataEditor
) é necessária para escrita.
- Cloud Storage: a função
- Autorizações de registo: a conta de serviço precisa de uma função com autorização para escrever registos no Cloud Logging. Normalmente, a função
Logging Writer
(roles/logging.logWriter
) é suficiente.
Sugestões de resolução de problemas:
- Identifique a conta de serviço do lote ou da sessão. Se não for especificado, o valor predefinido é a conta de serviço predefinida do Compute Engine.
- Aceda à página IAM e administrador > IAM na Google Cloud consola, encontre a conta de serviço de lote ou sessão e, em seguida, verifique se tem as funções necessárias para as operações. Conceda as funções em falta.
Quota insuficiente
Exceder as quotas específicas do projeto ou da região para o Google Cloud Serverless para Apache Spark ou outros Google Cloud recursos pode impedir o início de novos lotes ou sessões.
Sugestões de resolução de problemas:
Reveja a página Google Cloud Quotas do Serverless para Apache Spark para compreender os limites de lotes concorrentes, DCUs e armazenamento de mistura.
- Também pode usar o comando
gcloud compute quotas list
para ver a utilização e os limites atuais do seu projeto e região:gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
- Também pode usar o comando
Se atingir repetidamente os limites da quota, considere pedir um aumento da quota através da Google Cloud consola.
Problemas de configuração de rede
As definições de rede incorretas, como a configuração da VPC, o acesso privado à Google ou as regras de firewall, podem impedir a inicialização ou a ligação do controlador do Spark aos serviços necessários.
Sugestões de resolução de problemas:
Verifique se a rede VPC e a sub-rede especificadas para o lote ou a sessão estão configuradas corretamente e têm endereços IP suficientes disponíveis.
Se o seu lote ou sessão precisar de aceder às APIs Google e aos serviços sem atravessar a Internet pública, verifique se o acesso privado à Google está ativado para a sub-rede.
Reveja as regras da firewall da VPC para verificar se não bloqueiam inadvertidamente a comunicação interna ou a saída para APIs Google ou serviços externos que são necessários para a sua aplicação Spark.
Problemas de código da aplicação ou propriedades do Spark inválidas
As propriedades do Spark configuradas incorretamente, particularmente as relacionadas com recursos do controlador, ou os problemas no código da aplicação Spark podem levar a falhas de arranque.
Sugestões de resolução de problemas:
Verifique os valores de
spark.driver.memory
espark.driver.cores
. Verifique se estão dentro dos limites razoáveis e se estão alinhados com as DCUs disponíveis. Os valores excessivamente grandes para estas propriedades podem levar à exaustão de recursos e a falhas de inicialização. Remova todas as propriedades do Spark desnecessárias ou experimentais para simplificar a depuração.Experimente executar uma aplicação Spark "Hello World" para determinar se o problema está na configuração do ambiente ou se deve à complexidade ou a erros do código.
Verifique se todos os JARs de aplicações, ficheiros Python ou dependências especificados para o seu lote ou sessão estão corretamente localizados no Cloud Storage e são acessíveis pela conta de serviço do lote ou da sessão.
Verifique os registos
Um passo fundamental no diagnóstico de falhas de criação em lote é examinar os registos detalhados no Cloud Logging.
- Aceda à página Cloud Logging na Google Cloud consola.
- Filtre por lotes ou sessões do Apache Spark sem servidor:
- No menu pendente Recurso, selecione
Cloud Dataproc Batch
ouCloud Dataproc Session
. - Filtre por
batch_id
ousession_id
para o lote ou a sessão com falhas. Também pode filtrar porproject_id
elocation
(região).
- No menu pendente Recurso, selecione
- Procure entradas de registo com
jsonPayload.component="driver"
. Estes registos contêm frequentemente mensagens de erro específicas ou rastreios de pilha que podem identificar o motivo da falha de inicialização do controlador antes de ocorrer o limite de tempo de 600 segundos.