Maximizar a flexibilidade e a eficiência de clusters e jobs

Esta página oferece práticas recomendadas e estratégias de programação para ajudar você a projetar clusters resilientes do Serviço Gerenciado para Apache Spark que maximizem a disponibilidade de recursos em várias Google Cloud regiões, reduzam os atrasos no provisionamento e aproveitem as otimizações de desempenho e custo.

Visão geral da disponibilidade de recursos

A execução de jobs em clusters rígidos do Serviço Gerenciado para Apache Spark cria pontos únicos de falha que podem levar a interrupções de jobs e falhas de clusters e jobs devido à indisponibilidade localizada ou atrasos no provisionamento.

O risco de indisponibilidade de recursos é alto para clusters configurados com qualquer um dos seguintes antipadrões rígidos:

  • Posicionamento de zona fixa: codificar uma única zona usando a flag ou o campo zone em vez de permitir que o AutoZone do Serviço Gerenciado para Apache Spark posicione dinamicamente o cluster na zona ideal. Esse antipadrão impede que a criação de clusters use recursos de computação disponíveis em zonas adjacentes.
  • Um único tipo ou geração de máquina por função de nó:restringir as funções de nó a uma única geração ou tipo de máquina. Esse antipadrão impede que o cluster volte a alternativas.
  • Escalonamento vertical com menos VMs grandes:escalonar clusters verticalmente para depender de um pequeno número de formas de VM grandes. Esse antipadrão restringe a flexibilidade de programação.
  • Criação de clusters do tipo "tudo ou nada": exigir que todos os nós de trabalho sejam provisionados simultaneamente em vez de usar a criação parcial de clusters combinada com o escalonamento automático. Esse antipadrão faz com que a criação de clusters falhe se um nó de trabalho não puder ser alocado devido à indisponibilidade temporária de recursos.
  • Picos de programação:acionar grandes pipelines em lote durante os horários de pico de uso, o que aumenta a disputa regional.

A disponibilidade de recursos é a prática de projetar jobs para serem flexíveis em hardware, multizonais e escalonáveis. Ao desacoplar clusters de configurações rígidas e ativar failovers de várias famílias de máquinas, é possível aumentar as taxas de sucesso de criação, minimizar a latência de inicialização e alcançar consistentemente os SLAs.

Recomendações de disponibilidade de recursos

Adote as seguintes otimizações para melhorar a disponibilidade de recursos e a estabilidade do job:

Usar VMs flexíveis

O recurso de VM flexível permite especificar uma lista classificada de tipos de VM para nós de trabalho mestre, principal e secundário. Isso aumenta as taxas de sucesso de criação avaliando os tipos de VM listados e selecionando automaticamente as zonas com capacidade disponível.

Recomendação:use VMs flexíveis com substituições de disco, que permitem especificar diferentes tipos de disco, como hiperdisco e disco permanente, para diferentes famílias de máquinas candidatas na mesma política de cluster. Também é possível combinar famílias de máquinas Gen2 e Gen4 em uma única política para escalonar jobs em um pool mais amplo e ignorar os limites de capacidade.

Para jobs que usam máquinas N2 e N2D, considere as seguintes classificações:

  • Classificação 0:N2, N2D
  • Classificação 1:N4, N4D (com hiperdisco equilibrado)
  • Classificação 2:C4, C4D, C3, C3D (com hiperdisco equilibrado). Os SSDs locais podem ser usados com C4 e C4D, mas normalmente 8 ou 16 núcleos oferecem suporte apenas a 1 a 2 SSDs locais.
  • Classificação 3:E2 (desempenho mais baixo; use apenas se necessário)

Por exemplo, para jobs que usam n2d-standard-16, as classificações são:

  • Classificação 0:n2d-standard-16, n2-standard-16
  • Classificação 1:n4-standard-16, n4d-standard-16
  • Classificação 2:c4-standard-16, c4d-standard-16, c3-standard-22, c3d-standard-16
  • Classificação 3:e2-standard-16

Ao usar VMs flexíveis, considere os seguintes fatores:

  • Suporte a tipos de disco mistos: os tipos de máquina Gen3 e Gen4 oferecem suporte apenas a tipos de disco de hiperdisco e não oferecem suporte a tipos de disco permanente. Ao combinar Gen2 e Gen4, especifique um diskConfig para cada seleção de instância na instanceFlexibilityPolicy. Para mais informações, consulte Substituições de disco.

  • Cotas de recursos:ao definir uma política de VM flexível com tipos de failover, o Compute Engine verifica as cotas de todos os tipos e discos candidatos na região. Verifique se o projeto tem cotas de computação e disco suficientes alocadas para todos os itens configurados.

  • Descontos do Compute Engine: aproveite os descontos por uso contínuo (CUDs) flexíveis para aplicar economias baseadas em gastos em várias famílias e regiões de VMs.

  • Preços: use a Google Cloud Calculadora de preços para comparar os custos de cada classificação na política.

Para modelos de configuração e exemplos de implantação, consulte:

Usar o posicionamento automático de zona

Use o posicionamento automático de zona para permitir que o Serviço Gerenciado para Apache Spark selecione a melhor zona para provisionar recursos. Se você usar redes de nuvem privada virtual (VPC) personalizadas, verifique se a sub-rede tem endereços IP suficientes em todas as zonas regionais.

Usar formas de máquinas menores

Projete jobs para escalonar horizontalmente em tipos de máquinas menores (4, 8 ou 16 núcleos) em vez de escalonar verticalmente com VMs maiores. Os tamanhos de VM menores têm maior disponibilidade em todas as zonas, ajudando a evitar atrasos na criação.

  • Analise e reestruture os jobs que usam tipos de máquinas grandes para nós de driver.
  • Analise os jobs que executam apenas nós de driver sem nós de trabalho (clusters de nó único). Os jobs executados em clusters de nó único não podem ser escalonar verticalmente verticalmente dinamicamente e vinculam a execução a um único host físico.

Usar o escalonamento automático de cluster

Use o escalonamento automático de cluster com um número máximo suficiente de instâncias para gerenciar a capacidade de jobs com variabilidade de recursos (picos).

Usar a criação parcial de clusters com escalonamento automático

Use a criação parcial de clusters, que permite especificar um número mínimo de workers principais, com escalonamento automático. Se o cluster começar com menos workers do que o solicitado, o escalonamento automático poderá adicionar mais workers dinamicamente quando os recursos ficarem disponíveis.

Programar jobs fora do horário de pico

Programe jobs fora do horário de pico, como ao meio-dia e nos fins de semana. Programe em horários não padrão, por exemplo, às 10:07 em vez de 10:00, para evitar picos de programação.

A seguir