Este documento fornece orientações sobre como solucionar problemas comuns que impedem a inicialização de cargas de trabalho em lote e sessões interativas do Serviço Gerenciado para Apache Spark.
Visão geral
Normalmente, quando um lote ou sessão não é iniciado, ele informa a seguinte mensagem de erro:
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 de conta de serviço, disponibilidade de recursos, configuração de rede ou propriedades do Spark.
Causas de falha no início do lote e da sessão e etapas de solução de problemas
As seções a seguir listam causas comuns de falhas no início do lote e da sessão com 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 Serviço Gerenciado para Apache Spark requer papéis específicos do IAM que incluem permissões para operação do Serviço Gerenciado para Apache Spark e acesso a Google Cloud recursos. Se a conta de serviço não tiver os papéis necessários, o driver do Spark para o lote ou sessão poderá falhar na inicialização.
- Papel de worker necessário: a conta de serviço do lote ou da sessão precisa ter o papel de worker do Serviço Gerenciado para Apache Spark (
roles/dataproc.worker). Esse papel contém as permissões mínimas necessárias para que o Serviço Gerenciado para Apache Spark provisione e gerencie recursos de computação. - Permissões de acesso a dados: se o aplicativo Spark lê ou grava no Cloud Storage ou no BigQuery, a conta de serviço precisa 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) ouStorage 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 um papel 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 Google Cloud IAM e administrador > IAM no console, encontre a conta de serviço do lote ou da sessão e verifique se ela tem os papéis necessários para as operações. Conceda os papéis ausentes.
Cota insuficiente
Exceder as cotas específicas do projeto ou da região para o Serviço Gerenciado para Apache Spark ou outros Google Cloud recursos pode impedir que novos lotes ou sessões sejam iniciados.
Dicas para solução de problemas:
Revise a página de cotas do Serviço Gerenciado para Apache Spark para entender os limites de lotes simultâneos, DCUs e armazenamento de embaralhamento.
- Também é possível usar o comando
gcloud compute quotas listpara conferir o uso e os limites atuais do projeto e da 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, considere solicitar um aumento de cota no Google Cloud console.
Problemas de configuração de rede
Configurações de rede incorretas, como configuração de 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 o lote ou sessão estão configuradas corretamente e têm endereços IP suficientes disponíveis.
Se o lote ou sessão precisar acessar as APIs e os 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 aplicativo Spark.
Problemas de propriedades inválidas do Spark ou código do aplicativo
Propriedades do Spark mal configuradas, principalmente aquelas relacionadas a recursos do driver, ou problemas no código do aplicativo Spark podem levar a falhas de inicialização.
Dicas para solução de problemas:
Verifique os valores de
spark.driver.memoryespark.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.Tente executar um aplicativo Spark "Hello World" 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 o 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.
Verificar os registros
Uma etapa fundamental no diagnóstico de falhas na criação de lotes é examinar os registros detalhados no Cloud Logging.
- Acesse a página Cloud Logging noconsole. Google Cloud
- Filtre por lotes ou sessões do Serviço Gerenciado para Apache Spark:
- No menu suspenso Recurso, selecione
Cloud Managed Service for Apache Spark BatchouCloud Managed Service for Apache Spark Session. - Filtre por
batch_idousession_idpara o lote ou sessão com falha. Também é possível filtrar porproject_idelocation(região).
- No menu suspenso Recurso, selecione
- Procure entradas de registro com
jsonPayload.component="driver". Esses registros geralmente contêm mensagens de erro específicas ou rastreamentos de pilha que podem identificar o motivo da falha de inicialização do driver antes que o tempo limite de 600 segundos ocorra.