Dimensione os clusters do Dataproc

Depois de criar um cluster do Dataproc, pode ajustar ("dimensionar") o cluster aumentando ou diminuindo o número de nós de trabalho primários ou secundários (dimensionamento horizontal) no cluster. Pode dimensionar um cluster do Dataproc em qualquer altura, mesmo quando os trabalhos estão a ser executados no cluster. Não é possível alterar o tipo de máquina de um cluster existente (escalamento vertical). Para dimensionar verticalmente, crie um cluster com um tipo de máquina suportado e, em seguida, migre os trabalhos para o novo cluster.

Pode dimensionar um cluster do Dataproc para o seguinte:

  1. Aumentar o número de trabalhadores para que uma tarefa seja executada mais rapidamente.
  2. Diminuir o número de trabalhadores para poupar dinheiro (consulte a secção Desativação elegante como uma opção a usar quando reduz o tamanho de um cluster para evitar perder trabalho em curso).
  3. Aumentar o número de nós para expandir o armazenamento disponível do sistema de ficheiros distribuído do Hadoop (HDFS).

Uma vez que os clusters podem ser dimensionados mais do que uma vez, é recomendável aumentar ou diminuir o tamanho do cluster de uma vez e, em seguida, diminuir ou aumentar o tamanho mais tarde.

Use o dimensionamento

Existem três formas de aumentar a escala do cluster do Dataproc:

  1. Use a ferramenta de linhas de comando gcloud na CLI gcloud.
  2. Edite a configuração do cluster na Google Cloud consola.
  3. Use a API REST.

Os novos trabalhadores adicionados a um cluster usam o mesmo tipo de máquina que os trabalhadores existentes. Por exemplo, se for criado um cluster com trabalhadores que usam o tipo de máquina n1-standard-8, os novos trabalhadores também usam o tipo de máquina n1-standard-8.

Pode dimensionar o número de trabalhadores principais ou o número de trabalhadores secundários (preemptíveis), ou ambos. Por exemplo, se apenas dimensionar o número de trabalhadores preemptíveis, o número de trabalhadores principais permanece igual.

gcloud

Para dimensionar um cluster com gcloud 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
em que cluster-name é o nome do cluster a atualizar e new-number-of-workers é o número atualizado de nós de trabalho primários e/ou secundários. Por exemplo, para dimensionar um cluster denominado "dataproc-1" para usar cinco nós de trabalho principais, execute o seguinte comando.
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
}
Google Cloud

Consola

Depois de criar um cluster, pode dimensioná-lo abrindo a página Detalhes do cluster para o cluster a partir da Google Cloud consola página Clusters, em seguida, clicando no botão Editar no separador Configuração. Introduza um novo valor para o número de nós de trabalho e/ou nós de trabalho preemptíveis (atualizados para "5" e "2", respetivamente, na captura de ecrã seguinte). Clique em Guardar para atualizar o cluster.

Como o Dataproc seleciona nós do cluster para remoção

Nos clusters criados com versões de imagens 1.5.83+, 2.0.57+, e 2.1.5+, quando reduz a escala de um cluster, o Dataproc tenta minimizar o impacto da remoção de nós nas aplicações YARN em execução removendo primeiro nós inativos, não íntegros e inativos e, em seguida, removendo nós com o menor número de mestres de aplicações YARN e contentores em execução.

Desativação suave

Quando reduz a escala de um cluster, o trabalho em curso pode parar antes da conclusão. Se estiver a usar o Dataproc v 1.2 ou posterior, pode usar a desativação gradual, que incorpora a desativação gradual de nós do YARN para concluir o trabalho em curso num trabalhador antes de ser removido do cluster do Cloud Dataproc.

Desativação suave e trabalhadores secundários

O grupo de trabalho secundário (preemptível) continua a aprovisionar ou eliminar trabalhadores para atingir o tamanho esperado, mesmo depois de uma operação de escalabilidade do cluster ser marcada como concluída. Se tentar desativar corretamente um worker secundário e receber uma mensagem de erro semelhante à seguinte:

"Não é possível modificar o grupo de workers secundários fora do Dataproc. Se criou ou atualizou recentemente este cluster, aguarde alguns minutos antes de o desativar corretamente para permitir que todas as instâncias secundárias adiram ou saiam do cluster. Tamanho do grupo de trabalho secundário esperado: x, tamanho real: y",

aguarde alguns minutos e, em seguida, repita o pedido de desativação gradual.

Use a desativação suave

A desativação gradual do Dataproc incorpora a desativação gradual de nós do YARN para concluir o trabalho em curso num trabalhador antes de ser removido do cluster do Dataproc do Google Cloud. Por predefinição, a desativação suave está desativada. Pode ativá-lo definindo um valor de tempo limite quando atualiza o cluster para remover um ou mais trabalhadores do cluster.

gcloud

Quando atualiza um cluster para remover um ou mais trabalhadores, use o comando gcloud dataproc clusters update com a flag --graceful-decommission-timeout. Os valores de timeout (string) podem ser um valor de "0s" (a predefinição; desativação forçada e não graciosa) ou uma duração positiva relativa à hora atual (por exemplo, "3s"). A duração máxima é de 1 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" (a predefinição; desativação forçada não elegante) ou uma duração em segundos (por exemplo, "3s"). A duração máxima é de 1 dia.

Consola

Depois de criar um cluster, pode selecionar a desativação gradual de um cluster abrindo a página Detalhes do cluster para o cluster na página Google Cloud consola Clusters e, de seguida, clicando no botão Editar no separador Configuração. Na secção Desativação gradual, selecione Usar desativação gradual e, de seguida, selecione um valor de limite de tempo. Clique em Guardar para atualizar o cluster.

Cancele uma operação de redução gradual da desativação suave

Em clusters do Dataproc criados com versões de imagens 2.0.57+ ou 2.1.5+, pode executar o comando gcloud dataproc operations cancel ou emitir um pedido operations.cancel da API Dataproc para cancelar uma operação de redução de escala de desativação gradual.

Quando cancela uma operação de redução gradual da capacidade de desativação suave:

  • Os trabalhadores num estado DECOMMISSIONING são novamente comissionados e tornam-se ACTIVE quando o cancelamento da operação estiver concluído.

  • Se a operação de redução incluir atualizações de etiquetas, as atualizações podem não entrar em vigor.

Para verificar o estado do pedido de cancelamento, pode executar o comando gcloud dataproc operations describe ou emitir um pedido operations.get> da API Dataproc. Se a operação de cancelamento for bem-sucedida, o estado da operação interna é marcado como CANCELLED.