Depois de criar um cluster do Serviço Gerenciado para Apache Spark, é possível ajustá-lo ("escaloná-lo") aumentando ou diminuindo o número de nós de trabalho principais ou secundários (escalonamento horizontal) no cluster. É possível escalonar um cluster do Serviço Gerenciado para Apache Spark a qualquer momento, mesmo quando jobs estão em execução no cluster. Não é possível alterar o tipo de máquina de um cluster atual (escalonamento vertical). Para escalonar verticalmente, crie um cluster usando um tipo de máquina com suporte e migre os jobs para o novo cluster.
É possível escalonar um cluster do Serviço Gerenciado para Apache Spark para o seguinte:
- para aumentar o número de workers e acelerar a execução de um job.
- Para diminuir o número de trabalhos e economizar. Consulte Desativação otimizada como opção ao reduzir o tamanho de um cluster para evitar a perda do trabalho em andamento.
- para aumentar o número de nós e expandir o armazenamento disponível do sistema de arquivos distribuídos do Hadoop (HDFS, na sigla em inglês).
Como os clusters podem ser escalonados mais de uma vez, é possível aumentar ou diminuir o tamanho do cluster de uma só vez e, em seguida, diminuir ou aumentar o tamanho mais tarde.
Recomendações:
Remova workers com cuidado: se você remover workers do cluster, verifique se o novo tamanho do cluster é suficiente para lidar com a carga de trabalho. Caso contrário, os jobs podem levar muito tempo para serem concluídos ou podem parar de responder.
Evite escalonar workers primários: os workers primários executam DataNodes do HDFS, enquanto os workers secundários são apenas de computação. O escalonamento de workers primários envolve riscos. Por exemplo, os NameNodes do HDFS podem ter várias disputas durante as operações de escalonamento, o que pode corromper o HDFS e fazer com que a desativação fique travada indefinidamente. Para mais informações, consulte Evitar o escalonamento de workers primários.
Usar escalonamento
Há três maneiras de escalonar o cluster do Serviço Gerenciado para Apache Spark:
- Use a ferramenta de linha de comando
gcloudna CLI gcloud. - Edite a configuração do cluster no console doGoogle Cloud .
- Use a API REST.
Os novos trabalhos adicionados a um cluster usarão o mesmo tipo de máquina dos trabalhos existentes. Por exemplo, se um cluster for criado com
workers que usam o tipo de máquina n1-standard-8, os novos workers
também usarão o tipo de máquina n1-standard-8.
É possível escalonar o número de workers primários ou secundários (preemptivos), ou ambos. Por exemplo, se você escalonar apenas o número de workers preemptivos, o número de workers primários permanecerá o mesmo.
gcloud
Para escalonar um cluster comgcloud dataproc clusters update,
execute o seguinte comando:
gcloud dataproc clusters update cluster-name \ --region=region \ [--num-workers and/or --num-secondary-workers]=new-number-of-workers
gcloud dataproc clusters update dataproc-1 \
--region=region \
--num-workers=5
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
...
masterDiskConfiguration:
bootDiskSizeGb: 500
masterName: dataproc-1-m
numWorkers: 5
...
workers:
- my-test-cluster-w-0
- my-test-cluster-w-1
- my-test-cluster-w-2
- my-test-cluster-w-3
- my-test-cluster-w-4
...
API REST
Consulte clusters.patch.
Exemplo
PATCH /v1/projects/project-id/regions/us-central1/clusters/example-cluster?updateMask=config.worker_config.num_instances,config.secondary_worker_config.num_instances
{
"config": {
"workerConfig": {
"numInstances": 4
},
"secondaryWorkerConfig": {
"numInstances": 2
}
},
"labels": null
}
Console
Depois que um cluster é criado, é possível escaloná-lo abrindo a página Detalhes do cluster para o cluster na página Clusters do console doGoogle Cloud e clicando no botão Editar na guia Configuração.
Insira um novo valor para o número de Nós de trabalho e/ou
Nós de trabalho preemptivos (atualizados para "5" e "2", respectivamente,
na captura de tela a seguir).
Clique em Salvar para atualizar o cluster.
Como o Serviço Gerenciado para Apache Spark seleciona nós de cluster para remoção
Em clusters criados com as versões de imagem 1.5.83+, 2.0.57+ e 2.1.5+, ao reduzir a escala vertical de um cluster, o Managed Service para Apache Spark tenta minimizar o impacto da remoção de nós em aplicativos YARN em execução. Para isso, ele remove primeiro os nós inativos, não íntegros e ociosos e, em seguida, os nós com o menor número de mestres de aplicativos YARN e contêineres em execução.
Desativação otimizada
Quando você diminui um cluster, o trabalho em andamento pode ser interrompido antes da conclusão. Se você estiver usando o Serviço Gerenciado para Apache Spark v 1.2 ou posterior, poderá usar a desativação otimizada, que incorpora a desativação otimizada de nós do YARN para concluir o trabalho em andamento em um worker antes que ele seja removido do cluster do Serviço Gerenciado para Apache Spark do Cloud.
Desativação otimizada e workers secundários
O grupo de trabalhos preemptivos (secundário) continuará provisionando ou excluindo trabalhos para alcançar o tamanho esperado mesmo após uma operação de escalonamento de cluster ser marcada como concluída. Se você tentar desativar um worker secundário
e receber uma mensagem de erro semelhante a esta:
"O grupo de workers
secundários não pode ser modificado fora do Serviço Gerenciado para Apache Spark. Se você tiver criado ou atualizado este cluster recentemente, espere alguns minutos antes de fazer uma desativação otimizada. Dessa forma, todas as instâncias secundárias poderão ingressar no cluster ou sair dele.
Tamanho esperado do grupo de worker secundário: x, tamanho real: y",
aguarde
alguns minutos e repita a solicitação de desativação otimizada.
Use a desativação otimizada
A desativação otimizada do Serviço Gerenciado para Apache Spark incorpora a desativação otimizada de nós do YARN para concluir o trabalho em andamento em um worker antes que ele seja removido do cluster do Serviço Gerenciado para Apache Spark. Como padrão, a desativação otimizada fica desativada. Para ativá-la, você define um valor de tempo limite ao atualizar o cluster de modo a remover um ou mais trabalhadores do cluster.
gcloud
Ao atualizar um cluster para remover um ou mais workers, use o comando gcloud dataproc clusters update com a sinalização--graceful-decommission-timeout. Os valores de tempo limite (string) podem ser um valor de "0s" (o padrão, desativação à força, não otimizada) ou uma duração positiva em relação ao tempo atual (por exemplo, "3s").
A duração máxima é um dia.
gcloud dataproc clusters update cluster-name \ --region=region \ --graceful-decommission-timeout="timeout-value" \ [--num-workers and/or --num-secondary-workers]=decreased-number-of-workers \ ... other args ...
API REST
Consulte clusters.patch.gracefulDecommissionTimeout. Os valores de tempo limite (string) podem ser um valor de "0" (o padrão, desativação de modo forçado, e não otimizado) ou uma duração em segundos (por exemplo, "3s"). A duração máxima é um dia.Console
Depois que um cluster é criado, é possível selecionar a desativação otimizada de um cluster abrindo a página Detalhes do cluster na página Clusters do console doGoogle Cloud e clicando no botão Editar na guia Configuração.
Na seção Desativação otimizada, selecione
Usar desativação otimizada e, em seguida, selecione um valor de tempo limite.
Clique em Salvar para atualizar o cluster.
Cancelar uma operação de redução de escala vertical de desativação otimizada
Em clusters do Serviço Gerenciado para Apache Spark criados com as versões de imagem
2.0.57+
ou 2.1.5+,
é possível executar o comando gcloud dataproc operations cancel
ou emitir uma solicitação operations.cancel
da API Managed Service for Apache Spark
para cancelar uma operação de redução de escala de desativação otimizada.
Quando você cancela uma operação de redução de escala de desativação otimizada:
os workers em um estado
DECOMMISSIONINGsão reativados e se tornamACTIVEna conclusão do cancelamento da operação.Se a operação de redução de escala incluir atualizações de rótulo, elas podem não entrar em vigor.
Para verificar o status da solicitação de cancelamento, execute o comando gcloud dataproc operations describe ou emita uma solicitação operations.get da API do Serviço Gerenciado para Apache Spark. Se a operação de cancelamento for bem-sucedida, o status da operação interna será marcado
como CANCELLED.