Resolva problemas de falhas na criação de sessões e lotes

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ção Storage Object Creator (roles/storage.objectCreator) ou função Storage 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ção BigQuery Data Editor (roles/bigquery.dataEditor) é necessária para escrita.
  • 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:

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"
      
  • 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 e spark.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.

  1. Aceda à página Cloud Logging na Google Cloud consola.
  2. Filtre por lotes ou sessões do Apache Spark sem servidor:
    1. No menu pendente Recurso, selecione Cloud Dataproc Batch ou Cloud Dataproc Session.
    2. Filtre por batch_id ou session_id para o lote ou a sessão com falhas. Também pode filtrar por project_id e location (região).
  3. 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.