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 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 papel Storage Object Creator (roles/storage.objectCreator) ou Storage 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 papel BigQuery Data Editor (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 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 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 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.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 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.

  1. Acesse a página Cloud Logging noconsole. Google Cloud
  2. Filtre por lotes ou sessões do Serviço Gerenciado para Apache Spark:
    1. No menu suspenso Recurso, selecione Cloud Managed Service for Apache Spark Batch ou Cloud Managed Service for Apache Spark 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.