Neste documento, explicamos as mensagens de erro comuns de criação de cluster e fornecemos dicas sobre como resolver problemas de criação de cluster.
Mensagens de erro comuns na criação de clusters
Usuário não autorizado a atuar como conta de serviço
Causa: o principal que está tentando criar o cluster do Serviço Gerenciado para Apache Spark não tem as permissões necessárias para usar a conta de serviço especificada. Os usuários do Serviço Gerenciado para Apache Spark precisam ter a permissão
ActAsda conta de serviço para implantar recursos do Serviço Gerenciado para Apache Spark. Essa permissão está incluída no papel de usuário da conta de serviço (roles/iam.serviceAccountUser) (consulte Papéis do Serviço Gerenciado para Apache Spark).Solução: identifique o usuário ou a conta de serviço que está tentando criar o cluster do Serviço Gerenciado para Apache Spark. Conceda a esse principal o papel de Usuário da conta de serviço (
roles/iam.serviceAccountUser) na conta de serviço que o cluster está configurado para usar (normalmente, a conta de serviço da VM do Serviço Gerenciado para Apache Spark).Tempo limite da operação: apenas 0 dos 2 nós de dados/gerenciadores de nós mínimos necessários estão em execução.
Causa: o nó do controlador não consegue criar o cluster porque não pode se comunicar com os nós de trabalho.
Solução:
- Verifique os avisos de regras de firewall.
- Verifique se as regras de firewall corretas estão em vigor. Para mais informações, consulte Visão geral das regras de firewall padrão do Serviço Gerenciado para Apache Spark.
- Realizar um teste de conectividade no console do Google Cloud para determinar o que está bloqueando a comunicação entre o controlador e os nós de trabalho.
Permissão
compute.subnetworks.usenecessária paraprojects/{projectId}/regions/{region}/subnetworks/{subnetwork}Causa: esse erro pode ocorrer quando você tenta configurar um cluster do Serviço Gerenciado para Apache Spark usando uma rede VPC em outro projeto e a conta de serviço do agente de serviço do Serviço Gerenciado para Apache Spark não tem as permissões necessárias no projeto de VPC compartilhada que hospeda a rede.
Solução: siga as etapas listadas em Criar um cluster que usa uma rede VPC em outro projeto.
A zona
projects/zones/{zone}não tem recursos suficientes disponíveis para atender à solicitação(resource type:compute)Causa: a zona usada para criar o cluster não tem recursos suficientes.
Solução:
- Use o recurso de posicionamento automático de zona do Serviço Gerenciado para Apache Spark para criar o cluster em qualquer uma das zonas de uma região com recursos disponíveis.
- Crie o cluster em uma zona diferente.
Erros de cota excedida
Cota insuficiente de CPUs/CPUS_ALL_REGIONS
Cota insuficiente de "DISKS_TOTAL_GB"
Cota insuficiente "IN_USE_ADDRESSES"Causa: sua solicitação de CPU, disco ou endereço IP excede a cota disponível.
Solução: solicite mais cota no console doGoogle Cloud .
Falha na ação de inicialização
Causa: a ação de inicialização fornecida durante a criação do cluster não foi instalada.
Solução:
- Consulte as considerações e diretrizes sobre ações de inicialização.
- Analise os registros de saída. A mensagem de erro precisa fornecer um link para os registros no Cloud Storage.
Falha ao inicializar o nó
CLUSTER-NAME-m. ... Confira a saída em:<gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>Causa: falha ao inicializar o nó do controlador do cluster do Serviço Gerenciado para Apache Spark.
Solução:
- Analise os registros de saída do script de inicialização listados na mensagem de erro
(
gs://PATH_TO_STARTUP_SCRIPT_OUTPUT) e verifique a causa da falha na inicialização do nó. - As causas podem incluir problemas de configuração de rede do cluster do Serviço Gerenciado para Apache Spark e falha na instalação de dependências de pacotes do Python.
- Se o problema não for resolvido depois de analisar os registros do script de inicialização, corrija os problemas do lado do usuário e tente novamente com espera exponencial. Entre em contato com o suporte do Google Cloud.
- Analise os registros de saída do script de inicialização listados na mensagem de erro
(
Falha na criação do cluster: espaço de endereço IP esgotado
Causa: o espaço de endereço IP necessário para provisionar os nós do cluster solicitados está indisponível.
Solução:
- Criar um cluster com menos nós de trabalho, mas um tipo de máquina maior.
- Crie um cluster em uma sub-rede ou rede diferente.
- Reduza o uso na rede para liberar espaço de endereço IP.
- Aguarde até que haja espaço de IP suficiente disponível na rede.
Mensagem de erro do script de inicialização: o repositório REPO_NAME não tem mais um arquivo de lançamento
Causa: o repositório de backports oldstable do Debian foi removido.
Solução:
Adicione o código a seguir antes do código que executa
apt-getno script de inicialização.oldstable=$(curl -s https://deb.debian.org/debian/dists/oldstable/Release | awk '/^Codename/ {print $2}'); stable=$(curl -s https://deb.debian.org/debian/dists/stable/Release | awk '/^Codename/ {print $2}'); matched_files="$(grep -rsil '\-backports' /etc/apt/sources.list*)" if [[ -n "$matched_files" ]]; then for filename in "$matched_files"; do grep -e "$oldstable-backports" -e "$stable-backports" "$filename" || \ sed -i -e 's/^.*-backports.*$//' "$filename" done fiTempo limite aguardando a instância
DATAPROC_CLUSTER_VM_NAMEinformar ou A rede está inacessível:dataproccontrol-REGION.googleapis.comCausa: essas mensagens de erro indicam que a configuração de rede do cluster do Serviço Gerenciado para Apache Spark está incompleta: talvez esteja faltando a rota para o gateway de Internet padrão ou as regras de firewall.
Solução:
Para resolver esse problema, crie os seguintes Testes de Conectividade:
- Crie um teste de conectividade entre duas VMs de cluster do Serviço Gerenciado para Apache Spark. O resultado desse teste vai ajudar você a entender se as regras de firewall de permissão de entrada ou saída da sua rede se aplicam corretamente às VMs do cluster.
- Crie um teste de conectividade entre uma VM de cluster do Serviço Gerenciado para Apache Spark e um endereço IP atual da API de controle do Serviço Gerenciado para Apache Spark. Para receber um endereço IP atual da API de controle do Serviço Gerenciado para Apache Spark, use o seguinte comando:
dig dataproccontrol-REGION.googleapis.com A
Use qualquer um dos endereços IPv4 na seção de resposta da saída.
O resultado do teste de conectividade vai ajudar você a entender se a rota para o gateway de Internet padrão e o firewall de permissão de saída estão configurados corretamente.
Com base nos resultados dos Testes de Conectividade:
- Adicione uma rota para a Internet à rede VPC do cluster:
0.0.0.0/0para IPv4 e::/0para IPv6 com--next-hop-gateway=default-internet-gateway. - Adicione regras de firewall para controle de acesso.
Erro devido a uma atualização
Causa: o cluster aceitou um job enviado ao Serviço Gerenciado para Apache Spark, mas não conseguiu fazer escalonar verticalmente ou horizontal de forma manual ou automática. Esse erro também pode ser causado por uma configuração de cluster não padrão.
Solução:
Redefinição do cluster: abra um tíquete de suporte, inclua um arquivo tar de diagnóstico e peça para o cluster ser redefinido para o estado EM EXECUÇÃO.
Novo cluster: recrie o cluster com a mesma configuração. Essa solução pode ser mais rápida do que uma redefinição fornecida pelo suporte.
Dicas de solução de problemas de cluster
Nesta seção, fornecemos mais orientações sobre como resolver problemas comuns que podem impedir a criação de clusters do Serviço Gerenciado para Apache Spark.
Quando um cluster do Serviço Gerenciado para Apache Spark não é provisionado, ele geralmente produz
uma mensagem de erro genérica ou informa um status PENDING ou PROVISIONING
antes de falhar. A chave para diagnosticar e resolver problemas de falha de cluster
é examinar os registros do cluster e avaliar os pontos de falha comuns.
Sintomas comuns
Veja a seguir os sintomas comuns associados a falhas na criação de clusters:
- O status do cluster permanece
PENDINGouPROVISIONINGpor um período prolongado. - O cluster faz a transição para o estado
ERROR. - Erros genéricos de API durante a criação do cluster, como
Operation timed out. Mensagens de erro registradas ou de resposta da API, como:
RESOURCE_EXHAUSTED: relacionadas a cotas de CPU, disco ou endereço IP.Instance failed to startPermission deniedUnable to connect to service_name.googleapis.comouCould not reach required Google APIsConnection refusedounetwork unreachable- Erros relacionados a falhas nas ações de inicialização, como erros de execução de script e arquivo não encontrado.
Analisar registros de cluster
Uma etapa inicial importante ao diagnosticar falhas na criação de clusters é analisar os registros detalhados de clusters disponíveis no Cloud Logging.
- Acesse a Análise de registros: abra a Análise de registros no console do Google Cloud .
- Filtre os clusters do Serviço Gerenciado para Apache Spark:
- No menu suspenso Recurso, selecione
Cloud Managed Service for Apache Spark Cluster. - Insira seu
cluster_nameeproject_id. Também é possível filtrar porlocation(região).
- No menu suspenso Recurso, selecione
- Analisar entradas de registro:
- Procure mensagens de nível
ERRORouWARNINGque ocorrem perto do momento da falha na criação do cluster. - Preste atenção aos registros dos componentes
master-startup,worker-startupeagentpara receber insights sobre problemas no nível da VM ou no agente do Serviço Gerenciado para Apache Spark. - Para entender os problemas de tempo de inicialização da VM,
filtre os registros por
resource.type="gce_instance"e procure mensagens dos nomes de instância associados aos nós do cluster, comoCLUSTER_NAME-mouCLUSTER_NAME-w-0. Os registros do console serial podem revelar problemas de configuração de rede, problemas de disco e falhas de script que ocorrem no início do ciclo de vida da VM.
- Procure mensagens de nível
Causas comuns de falha de cluster e dicas de solução de problemas
Nesta seção, descrevemos os motivos comuns para falhas na criação de clusters do Serviço Gerenciado para Apache Spark e oferecemos dicas para resolver problemas de cluster.
Permissões do IAM insuficientes
A conta de serviço da VM usada pelo cluster do Serviço Gerenciado para Apache Spark precisa ter os papéis do IAM adequados para provisionar instâncias do Compute Engine, acessar buckets do Cloud Storage, gravar registros e interagir com outros serviços do Google Cloud .
- Papel de worker obrigatório: verifique se a conta de serviço da VM tem o papel de worker do Serviço Gerenciado para Apache Spark (
roles/dataproc.worker). Esse papel tem as permissões mínimas necessárias para que o Serviço Gerenciado para Apache Spark gerencie os recursos do cluster. - Permissões de acesso a dados: se os jobs lerem ou gravarem no Cloud Storage ou no BigQuery, a conta de serviço precisará de papéis relacionados, como
Storage Object Viewer,Storage Object CreatorouStorage Object Adminpara o Cloud Storage, ouBigQuery Data ViewerouBigQuery Editorpara o BigQuery. - Permissões de geração de registros: a conta de serviço precisa ter um papel com as permissões
necessárias para gravar registros no Cloud Logging, como o papel
Logging Writer.
Dicas para solução de problemas:
Identifique a conta de serviço: determine a conta de serviço da VM que o cluster está configurado para usar. Se não for especificado, o padrão será a conta de serviço padrão do Compute Engine.
Verifique os papéis do IAM: acesse a página IAM e administrador > IAM no console do Google Cloud , encontre a conta de serviço da VM do cluster e verifique se ela tem os papéis necessários para as operações do cluster. Conceda os papéis que estiverem faltando.
Cotas de recursos excedidas
Os clusters do Serviço Gerenciado para Apache Spark consomem recursos do Compute Engine e de outros serviços do Google Cloud . Exceder as cotas do projeto ou regionais pode causar falhas na criação do cluster.
- Cotas comuns do Serviço Gerenciado para Apache Spark a serem verificadas:
CPUs(regional)DISKS_TOTAL_GB(regional)IN_USE_ADDRESSES(regional para IPs internos, global para IPs externos)- Cotas da API Dataproc, como
ClusterOperationRequestsPerMinutePerProjectPerRegion
Dicas para solução de problemas:
- Revise as cotas: acesse a página IAM e administrador > IAM no console do Google Cloud . Filtre por "Serviço" para "API Compute Engine" e "API Dataproc".
- Verifique o uso em relação ao limite: identifique as cotas que estão no limite ou perto dele.
- Se necessário, solicite um aumento de cota.
Problemas de configuração de rede
Problemas de configuração de rede, como configuração incorreta de rede VPC, sub-rede, firewall ou DNS, são uma causa comum de falhas na criação de clusters. As instâncias do cluster precisam se comunicar entre si e com as APIs do Google.
- Rede VPC e sub-rede:
- Verifique se a rede VPC e a sub-rede do cluster existem e estão configuradas corretamente.
- Verifique se a sub-rede tem um intervalo suficiente de endereços IP disponíveis.
- Acesso privado do Google (PGA): se as VMs do cluster tiverem endereços IP internos e precisarem acessar as APIs do Google para o Cloud Storage, o Cloud Logging e outras operações, verifique se o Acesso privado do Google está ativado na sub-rede. Por padrão, os clusters do Serviço Gerenciado para Apache Spark criados com versões de imagem 2.2+ provisionam VMs com endereços IP somente internos com o Acesso Privado do Google ativado na sub-rede regional do cluster.
- Private Service Connect
(PSC): se você estiver usando o
Private Service Connect para acessar as APIs do Google,
verifique se os
endpoints do Private Service Connect
necessários estão configurados corretamente para as APIs do Google de que o serviço gerenciado para Apache Spark
depende, como
dataproc.googleapis.com,storage.googleapis.com,compute.googleapis.comelogging.googleapis.com. As entradas de DNS das APIs precisam ser resolvidas para endereços IP particulares. O uso do Private Service Connect não elimina a necessidade de usar o peering de VPC para se comunicar com outras redes VPC gerenciadas pelo cliente. - Peering de VPC: se o cluster se comunicar com recursos em outras redes VPC, como projetos host de VPC compartilhada ou outras VPCs de clientes, verifique se o peering de VPC está configurado corretamente e se as rotas estão sendo propagadas.
Regras de firewall:
- Regras padrão: verifique se as regras de firewall padrão, como
allow-internalouallow-ssh, não são excessivamente restritivas. Regras personalizadas: se houver regras de firewall personalizadas, verifique se elas permitem os caminhos de comunicação necessários:
- Comunicação interna no cluster (entre os nós -m e -w).
Tráfego de saída de VMs do cluster para APIs do Google, usando IPs públicos ou um gateway de Internet, o Acesso Privado do Google ou endpoints do Private Service Connect.
Tráfego para fontes de dados ou serviços externos de que seus jobs dependem.
- Regras padrão: verifique se as regras de firewall padrão, como
Resolução de DNS: confirme se as instâncias do cluster podem resolver corretamente os nomes de DNS para as APIs do Google e todos os serviços internos ou externos.
Dicas para solução de problemas:
- Revise a configuração de rede: inspecione as configurações de rede VPC e sub-rede em que o cluster está sendo implantado.
- Verifique as regras de firewall: analise as regras de firewall na rede VPC ou no projeto host da VPC compartilhada.
- Teste a conectividade: inicie uma VM temporária do Compute Engine
na sub-rede do cluster e siga estas etapas:
pingoucurlpara domínios externos da API Google, comostorage.googleapis.com.nslookuppara verificar a resolução de DNS para os endereços IP esperados (Acesso privado do Google ou Private Service Connect).- Execute Google Cloud testes de conectividade para diagnosticar caminhos de uma VM de teste para endpoints relevantes.
Falhas na ação de inicialização
As ações de inicialização do Serviço Gerenciado para Apache Spark são scripts executados em VMs de cluster durante a criação do cluster. Erros nesses scripts podem impedir a inicialização do cluster.
Dicas para solução de problemas:
- Examine os registros em busca de erros de ação de inicialização: procure entradas de registro relacionadas a
init-actionsoustartup-scriptpara as instâncias de cluster no Cloud Logging. - Verifique os caminhos e as permissões do script: verifique se os scripts de ação de inicialização
estão localizados corretamente no Cloud Storage e se a conta de serviço da VM do cluster
tem o papel
Storage Object Viewernecessário para ler os scripts do Cloud Storage. - Depurar a lógica do script: teste a lógica do script em uma VM separada do Compute Engine que imite o ambiente do cluster para identificar erros. Adicione a geração de registros detalhada ao script.
Disponibilidade de recursos regionais (falta de estoque)
Às vezes, um tipo de máquina ou recurso em uma região ou zona
fica temporariamente indisponível (falta de estoque). Normalmente, isso resulta em erros RESOURCE_EXHAUSTED não relacionados a problemas de cota do projeto.
Dicas para solução de problemas:
- Tente uma zona ou região diferente: tente criar o cluster em uma zona diferente na mesma região ou em uma região diferente.
- Usar o posicionamento de zona automática: use o recurso de posicionamento de zona automática do Serviço Gerenciado para Apache Spark para selecionar automaticamente uma zona com capacidade.
- Ajuste o tipo de máquina: se estiver usando um tipo de máquina personalizado ou especializado, tente um tipo de máquina padrão para ver se isso resolve o problema.
Entrar em contato com o Cloud Customer Care
Se você continuar tendo problemas de falha no cluster, entre em contato com o Cloud Customer Care. Descreva o problema de falha do cluster e as etapas de solução de problemas realizadas. Além disso, forneça as seguintes informações:
- Dados de diagnóstico do cluster
- Saída do seguinte comando:
gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
- Registros exportados para o cluster com falha.
Usar a ferramenta gcpdiag
gcpdiag
é uma ferramenta de código aberto. Não é um produto do Google Cloud oficialmente compatível.
Use a ferramenta gcpdiag para identificar e corrigir problemas no projeto do Google Cloud. Para mais informações, consulte o
projeto gcpdiag no GitHub.
A ferramenta gcpdiag ajuda a descobrir os seguintes problemas de criação de cluster do Serviço Gerenciado para Apache Spark
realizando as seguintes verificações:
- Erros de falta de estoque: avalia os registros da Análise de Registros para descobrir faltas de estoque em regiões e zonas.
- Cota insuficiente: verifica a disponibilidade de cota no projeto de cluster do Serviço Gerenciado para Apache Spark.
- Configuração de rede incompleta: realiza testes de conectividade de rede,
incluindo verificações de regras de firewall necessárias e configuração de IP externo
e interno. Se o cluster tiver sido excluído, a ferramenta
gcpdiagnão poderá realizar uma verificação de conectividade de rede. - Configuração incorreta entre projetos: verifica contas de serviço entre projetos e analisa outros papéis e a aplicação de políticas da organização.
- Papéis do IAM de rede de nuvem privada virtual compartilhada ausentes: se o cluster do Serviço Gerenciado para Apache Spark usar uma rede VPC compartilhada, verifique se os papéis de conta de serviço necessários foram adicionados.
- Falhas na ação de inicialização: avalia os registros da Análise de registros para descobrir falhas e tempos limite do script de ação de inicialização.
Para uma lista de etapas do dataproc gcpdiag, incluindo as de criação de cluster, consulte
Etapas do Serviço Gerenciado para Apache Spark.
Execute o comando gcpdiag.
É possível executar o comando gcpdiag no Cloud Shell no console doGoogle Cloud ou em um contêiner do Docker.
Console doGoogle Cloud
- Preencha e copie o comando a seguir.
- Abra o console do Google Cloud e ative o Cloud Shell. Abrir Console do Cloud
- Cole o comando copiado.
- Execute o comando
gcpdiag, que faz o download da imagem Dockergcpdiag. e realiza verificações de diagnóstico. Se aplicável, siga as instruções de saída para corrigir verificações com falha.
gcpdiag runbook managed-spark/cluster-creation \
--parameter project_id=PROJECT_ID \
--parameter cluster_name=CLUSTER_NAME \
--parameter OPTIONAL_FLAGSDocker
Você pode
executar gcpdiag usando um wrapper que inicia gcpdiag em um contêiner do Docker. Docker ou
Podman precisa ser instalado.
- Copie e execute o seguinte comando na estação de trabalho local.
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- Execute o comando
gcpdiag../gcpdiag runbook managed-spark/cluster-creation \ --parameter project_id=PROJECT_ID \ --parameter cluster_name=CLUSTER_NAME \ --parameter OPTIONAL_FLAGS
Veja os parâmetros disponíveis para este runbook.
Substitua:
- PROJECT_ID: o ID do projeto que contém o recurso
- CLUSTER_NAME: o nome do cluster de destino do Serviço Gerenciado para Apache Spark no seu projeto.
- OPTIONAL_PARAMETERS: adicione um ou mais dos
parâmetros opcionais a seguir. Esses parâmetros são obrigatórios se
o cluster tiver sido excluído.
cluster_uuid: o UUID do cluster de destino do Serviço Gerenciado para Apache Spark no seu projeto.service_account: a conta de serviço da VM do cluster do Serviço Gerenciado para Apache Spark.subnetwork: o caminho de URI completo da sub-rede do cluster do Serviço Gerenciado para Apache Spark.internal_ip_only: verdadeiro ou falsocross_project: o ID entre projetos se o cluster do Serviço Gerenciado para Apache Spark usar uma conta de serviço de VM em outro projeto.
Flags úteis
--universe-domain: se aplicável, a Nuvem soberana de parceiro confiável que hospeda o recurso--parameterou-p: parâmetros do runbook
Para conferir uma lista e descrição de todas as flags da ferramenta gcpdiag, consulte
Instruções de uso do gcpdiag.
A seguir
- Saiba mais sobre as ferramentas de monitoramento e solução de problemas do Serviço Gerenciado para Apache Spark.
- Saiba como diagnosticar clusters do Serviço Gerenciado para Apache Spark.
- Consulte o documento de perguntas frequentes sobre o Serviço Gerenciado para Apache Spark.