Maximizar a flexibilidade e a eficiência de clusters e jobs
Nesta página, apresentamos as práticas recomendadas e as estratégias de programação para ajudar você a projetar clusters resilientes do Serviço Gerenciado para Apache Spark que maximizam a disponibilidade de recursos em regiões do Cloud de Confiance by S3NS , reduzem os atrasos de provisionamento e aproveitam 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 cluster e job devido à indisponibilidade localizada ou a 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
zoneem vez de permitir que o AutoZone do Serviço Gerenciado para Apache Spark coloque o cluster dinamicamente na zona ideal. Esse antipadrão impede que a criação de clusters use recursos de computação disponíveis em zonas adjacentes. - Tipo ou geração de tipo de máquina única por papel de nó:restrição de papéis de nó a uma única geração ou tipo de máquina. Esse antipadrão impede que o cluster use alternativas.
- Poucas famílias de máquinas na classificação de prioridade mais alta:listar apenas uma ou duas famílias de máquinas na classificação 0 de uma política de VM flexível, mesmo quando as classificações de substituição são definidas. Esse antipadrão reduz o pool de recursos que o Serviço Gerenciado para Apache Spark pode usar primeiro, o que aumenta a probabilidade de voltar para classificações mais baixas ou de atrasos no provisionamento.
- Escalonamento vertical com menos VMs grandes:escalonamento vertical de clusters para depender de um pequeno número de formas de VM grandes. Esse antipadrão restringe a flexibilidade de programação.
- Criação de cluster do tipo tudo ou nada:exige que todos os nós de trabalho sejam provisionados simultaneamente, em vez de usar a criação parcial de cluster combinada com o escalonamento automático. Esse antipadrão faz com que a criação do cluster falhe se um nó de trabalho não puder ser alocado devido à indisponibilidade temporária de recursos.
- Picos de programação de pico:acionar pipelines de lote grandes durante os horários de pico de uso, o que aumenta a contenção regional.
A disponibilidade de recursos é a prática de projetar jobs para serem flexíveis em termos de hardware, multizonais e escalonáveis. Ao separar os clusters de configurações rígidas e permitir substitutos de famílias de várias máquinas, é possível aumentar as taxas de sucesso de criação, minimizar a latência de inicialização e atingir SLAs de forma consistente.
Recomendações de obtenção 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, primário e secundário. Isso aumenta as taxas de sucesso de criação ao avaliar os tipos de VM listados e selecionar automaticamente zonas com capacidade disponível.
Recomendações: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 da Gen2 e da Gen4 em uma única política para escalonar jobs em um pool mais amplo e ignorar os limites de capacidade.
Especifique pelo menos três famílias de máquinas distintas na classificação 0. O Serviço Gerenciado para Apache Spark extrai primeiro da lista de prioridade mais alta (classificação 0). Portanto, uma classificação 0 ampla oferece à criação de clusters o maior pool de recursos candidatos antes de retornar para classificações mais baixas. Combinar as famílias Gen4 e Gen2 na classificação 0 é a maneira mais eficaz de ampliar esse pool.
Para cargas de trabalho de uso geral, por exemplo, jobs em execução em máquinas N2 ou N2D, use as seguintes classificações:
- Classificação 0:N4, N4D (com Hyperdisk Balanced), N2, N2D
- Classificação 1:C4, C4D (com Hyperdisk Balanced), C2D. Os SSDs locais podem ser usados com C4 e C4D, mas normalmente 8 ou 16 núcleos dão suporte a apenas 1 ou 2 SSDs locais.
- Classificação 2:E2 (desempenho menor; use apenas se necessário)
Por exemplo, para jobs que usam n2d-standard-16, as classificações são:
- Classificação 0:
n4-standard-16,n4d-standard-16,n2-standard-16,n2d-standard-16 - Classificação 1:
c4-standard-16,c4d-standard-16,c2d-standard-16 - Classificação 2:
e2-standard-16
Como N4 e N4D exigem o Hyperdisk e N2 e N2D usam o disco permanente, defina
a classificação 0 como duas seleções de instância que compartilham a mesma classificação, mas usam valores
diskConfig diferentes. Por exemplo, as seguintes flags
gcloud dataproc clusters create
definem a política de worker primário para o exemplo anterior:
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--zone="" \
--num-workers=NUM_WORKERS \
--worker-instance-selection='{"machineTypes":["n4-standard-16","n4d-standard-16"],"rank":0,"diskConfig":{"bootDiskType":"hyperdisk-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
--worker-instance-selection='{"machineTypes":["n2-standard-16","n2d-standard-16"],"rank":0,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
--worker-instance-selection='{"machineTypes":["c4-standard-16","c4d-standard-16"],"rank":1,"diskConfig":{"bootDiskType":"hyperdisk-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
--worker-instance-selection='{"machineTypes":["c2d-standard-16"],"rank":1,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
--worker-instance-selection='{"machineTypes":["e2-standard-16"],"rank":2,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}'
Ao usar VMs flexíveis, considere os seguintes fatores:
Suporte a tipos de disco mistos:os tipos de máquina de 3ª e 4ª geração só são compatíveis com tipos de disco do Hyperdisk e não são compatíveis com tipos de disco permanente. Ao combinar a Gen2 e a Gen4, especifique um
diskConfigpara cada seleção de instância noinstanceFlexibilityPolicy. Para mais informações, consulte Substituições de disco.- Use o Hyperdisk Balanced com os valores de referência para IOPS e capacidade de processamento especificados em Desempenho padrão do Hyperdisk Balanced.
Cotas de recursos:quando você define uma política de VM flexível com tipos de fallback, o Compute Engine verifica as cotas de todos os tipos de candidatos e discos na região. Verifique se o projeto tem cotas de computação e de disco suficientes alocadas para todos os itens configurados.
Descontos do Compute Engine:aproveite os descontos flexíveis por compromisso de uso (CUDs) para aplicar economias baseadas em gastos em várias famílias de VMs e regiões.
Preços:use a calculadora de preços doCloud de Confiance para comparar os custos de cada classificação na sua política.
Para modelos de configuração e exemplos de implantação, consulte:
Usar o posicionamento de zona automático
Use a posição da AutoZone 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 formatos de máquina menores
Projete jobs para escalonamento horizontal em tipos de máquina menores (4, 8 ou 16 núcleos) em vez de escalonamento vertical com VMs maiores. As VMs menores têm maior disponibilidade entre as zonas, o que ajuda a evitar atrasos na criação.
- Revise e reestruture os jobs que usam tipos de máquina grandes para nós de driver.
- Analise os jobs que executam apenas nós do driver sem nós de trabalho (clusters de nó único). Os jobs em execução em clusters de nó único não podem ser escalonar verticalmente verticalmente de forma dinâmica 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 cluster, que permite especificar um número mínimo de workers primários, 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 estiverem 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
- Saiba como priorizar tipos de VM com VMs flexíveis.
- Saiba como configurar o posicionamento da AutoZone.
- Saiba como criar um cluster parcial.
- Saiba como configurar políticas de escalonamento automático.
- Saiba mais sobre descontos por compromisso de uso.
- Saiba mais sobre o Serviço Gerenciado para Apache Spark sem servidor.