Este documento fornece orientações para resolver problemas comuns que impedem o início das cargas de trabalho em lote do Apache Spark e das sessões interativas doGoogle Cloud Serverless para Apache Spark.
Visão geral
Normalmente, quando um lote ou uma sessão não é iniciada, a seguinte mensagem de erro é exibida:
Driver compute node failed to initialize for batch in 600 seconds
Essa mensagem de erro indica que o driver do Spark não pôde ser iniciado dentro do período de tempo limite padrão de 600 segundos (10 minutos). As causas comuns estão relacionadas a permissões da conta de serviço, disponibilidade de recursos, configuração de rede ou propriedades do Spark.
Causas de falhas no início de lotes e sessões e etapas de solução de problemas
As seções a seguir listam as causas comuns de falhas no início de lotes e sessões, além de dicas de solução de problemas para ajudar você a resolver os problemas.
Permissões insuficientes da conta de serviço
A conta de serviço usada pelo lote ou sessão do Serverless para Apache Spark requer papéis específicos do IAM que incluem permissões para operação do Serverless para Apache Spark e acesso a recursos do Google Cloud . Se a conta de serviço não tiver as funções necessárias, o driver do Spark para o lote ou a sessão poderá não ser inicializado.
- Papel de worker obrigatório: a conta de serviço em lote ou de sessão precisa ter o papel de worker do Dataproc (
roles/dataproc.worker
). Esse papel contém as permissões mínimas necessárias para que o Serverless para Apache Spark provisione e gerencie recursos de computação. - Permissões de acesso a dados: se o aplicativo Spark ler ou gravar no Cloud Storage ou no BigQuery, a conta de serviço precisará de papéis relacionados a esses serviços:
- Cloud Storage: o papel
Storage Object Viewer
(roles/storage.objectViewer
) é necessário para leitura, e o papelStorage Object Creator
(roles/storage.objectCreator
) ou papelStorage Object Admin
(roles/storage.admin
) é necessário para gravação. - BigQuery: o papel
BigQuery Data Viewer
(roles/bigquery.dataViewer
) é necessário para leitura, e o papelBigQuery Data Editor
(roles/bigquery.dataEditor
) é necessário para gravação.
- Cloud Storage: o papel
- Permissões de geração de registros: a conta de serviço precisa de uma função com
permissão para gravar registros no Cloud Logging. Normalmente, o
papel
Logging Writer
(roles/logging.logWriter
) é suficiente.
Dicas para solução de problemas:
- Identifique a conta de serviço do lote ou da sessão. Se não for especificado, o padrão será a conta de serviço padrão do Compute Engine.
- Acesse a página IAM e administrador > IAM no console Google Cloud , encontre a conta de serviço em lote ou de sessão e verifique se ela tem os papéis necessários para as operações. Conceda os papéis que estiverem faltando.
Cota insuficiente
Exceder as cotas específicas do projeto ou da região para o Google Cloud Serverless para Apache Spark ou outros recursos do Google Cloud pode impedir o início de novos lotes ou sessões.
Dicas para solução de problemas:
Consulte a página Google Cloud Cotas do Serverless para Apache Spark para entender os limites de lotes simultâneos, DCUs e armazenamento de shuffle.
- Também é possível usar o comando
gcloud compute quotas list
para conferir o uso e os limites atuais do seu projeto e região:gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
- Também é possível usar o comando
Se você atingir os limites de cota repetidamente, solicite um aumento de cota no console Google Cloud .
Problemas de configuração de rede
Configurações de rede incorretas, como configuração da VPC, Acesso privado do Google ou regras de firewall, podem impedir que o driver do Spark seja inicializado ou se conecte aos serviços necessários.
Dicas para solução de problemas:
Verifique se a rede VPC e a sub-rede especificadas para seu lote ou sessão estão configuradas corretamente e têm endereços IP suficientes disponíveis.
Se o lote ou a sessão precisar acessar APIs e serviços do Google sem passar pela Internet pública, verifique se o Acesso privado do Google está ativado para a sub-rede.
Revise as regras de firewall da VPC para verificar se elas não bloqueiam inadvertidamente a comunicação interna ou a saída para APIs do Google ou serviços externos exigidos pelo seu aplicativo Spark.
Propriedades do Spark inválidas ou problemas no código do aplicativo
Propriedades do Spark mal configuradas, principalmente aquelas relacionadas a recursos de driver, ou problemas no código do aplicativo Spark podem causar falhas na inicialização.
Dicas para solução de problemas:
Verifique os valores
spark.driver.memory
espark.driver.cores
. Verifique se eles estão dentro de limites razoáveis e alinhados com as DCUs disponíveis. Valores excessivamente grandes para essas propriedades podem levar ao esgotamento de recursos e falhas de inicialização. Remova todas as propriedades desnecessárias ou experimentais do Spark para simplificar a depuração.Execute um aplicativo "Hello World" do Spark para determinar se o problema está na configuração do ambiente ou é devido à complexidade ou erros do código.
Verifique se todos os JARs de aplicativos, arquivos Python ou dependências especificados para seu lote ou sessão estão localizados corretamente no Cloud Storage e podem ser acessados pela conta de serviço do lote ou da sessão.
Verifique os registros
Uma etapa fundamental para diagnosticar falhas na criação de lotes é examinar os registros detalhados no Cloud Logging.
- Acesse a página Cloud Logging no console do Google Cloud .
- Filtre por lotes ou sessões do Serverless para Apache Spark:
- No menu suspenso Recurso, selecione
Cloud Dataproc Batch
ouCloud Dataproc Session
. - Filtre por
batch_id
ousession_id
para o lote ou a sessão com falha. Também é possível filtrar porproject_id
elocation
(região).
- No menu suspenso Recurso, selecione
- Procure entradas de registro com
jsonPayload.component="driver"
. Esses registros geralmente contêm mensagens de erro ou stack traces específicos que podem indicar o motivo da falha na inicialização do driver antes que o tempo limite de 600 segundos ocorra.