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

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 Google Cloud Serverless 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 de início de lote e sessão e etapas de solução de problemas

As seções a seguir listam as causas comuns de falhas de início de lote e 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 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 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 de lote ou 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 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 papel `Storage Object Creator` (roles/storage.objectCreator) ou papel `Storage Object Admin` (roles/storage.admin) é necessário para gravação.Storage Object ViewerStorage Object CreatorStorage Object Admin
    • BigQuery: o BigQuery Data Viewer papel (roles/bigquery.dataViewer) é necessário para leitura e o BigQuery Data Editor papel (roles/bigquery.dataEditor) é necessário para gravação.
  • 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 Logging Writer papel (roles/logging.logWriter) é suficiente.

Dicas para solução de problemas:

  • Identifique a conta de serviço de lote ou 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 Google Cloud console, encontre a conta de serviço de lote ou 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 Google Cloud Serverless 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 Google Cloud 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 projeto e da região:
      gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
      
  • 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 código do aplicativo ou propriedades inválidas do Spark

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.memory e spark.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 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 de lote ou sessão.

Verifique os registros

Uma etapa fundamental no diagnóstico de falhas de criação de lotes é examinar os registros detalhados no Cloud Logging.

  1. Acesse a página Cloud Logging noconsole. Google Cloud
  2. Filtre por lotes ou sessões do Serverless para Apache Spark:
    1. No menu suspenso Recurso, selecione Cloud Dataproc Batch ou Cloud Dataproc Session.
    2. Filtre por batch_id ou session_id para o lote ou sessão com falha. Também é possível filtrar por project_id e location (região).
  3. 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.