Escalonar clusters

Depois de criar um cluster do Cloud Dataproc, será possível ajustar ("escalonar") o cluster aumentando ou diminuindo o número de nós de trabalho principais ou secundários no cluster. Escalone um cluster do Cloud Dataproc a qualquer momento, mesmo quando houver jobs 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.

Por que escalonar um cluster do Dataproc?

  1. Para aumentar o número de trabalhos e executar um job mais rapidamente
  2. 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.
  3. Para aumentar o número de nós e expandir o armazenamento disponível do Hadoop Distributed Filesystem (HDFS).

Como os clusters podem ser escalonados mais de uma vez, convém aumentar/diminuir o tamanho do cluster ao mesmo tempo e diminuir/aumentar o tamanho posteriormente.

Como usar escalonamento

Há três maneiras de escalonar o cluster do Dataproc:

  1. Use a ferramenta de linha de comando gcloud na CLI gcloud.
  2. Edite a configuração do cluster no Console do Google Cloud.
  3. Usar a REST API.

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.

Escalone o número de trabalhos principais, secundários (preemptivos) ou ambos. Por exemplo, se você só escalonar o número de trabalhos preemptivos, o número de trabalhos principais permanecerá o mesmo.

gcloud

Para escalonar 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 ser atualizado e new-number-of-workers é o número atualizado de nós de trabalho principais e/ou secundários. Por exemplo, para escalonar um cluster chamado "dataproc-1" para usar cinco nós de trabalho principais, execute o comando a seguir.
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

Após a criação de um cluster, é possível escalonar um cluster abrindo a página Detalhes do cluster na página de Clusters do Console do Cloud e clique no botão Editar na guia Configuração .
Informe 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.

Desativação otimizada

Quando você diminui um cluster, o trabalho em andamento pode ser interrompido antes da conclusão. Se você estiver usando o Dataproc v 1.2 ou posterior, use a desativação otimizada, que incorpora Desativação otimizada de nós do YARN para concluir o trabalho em andamento em um worker antes de ser removido do cluster do Cloud Dataproc.

Desativação otimizada e trabalhos 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 realizar a desativação otimizada em 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 Dataproc. 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.

Além disso:

  • Você pode desativar à força os trabalhos preemptivos a qualquer momento.
  • Você desativa de modo otimizado os trabalhos principais a qualquer momento.

Como usar a desativação otimizada

A desativação otimizada do Dataproc incorpora a Desativação otimizada de nós YARN para concluir o trabalho em andamento em um worker antes de ser removido do cluster do Cloud Dataproc. 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

Após a criação de um cluster, realize a desativação otimizada dele. Basta abrir a página Detalhes do cluster, na página Clusters no Console do Cloud, e clicar no botão Editar na guia Configuração.
Na seção Desativação otimizada, marque a caixa "Usar desativação otimizada" e selecione um valor de tempo limite.
Clique em Salvar para atualizar o cluster.