VMs preemptivas

Além de usar as máquinas virtuais (VM) padrão do Compute Engine padrão, os clusters do Dataproc podem usar instâncias de VM preemptivas, também conhecidas como VMs preemptivas. Os workers preemptivos serão recuperados (removidos do cluster) se forem exigidos pelo Google Cloud para outras tarefas. Embora a possível remoção de workers preemptivos possa afetar a estabilidade do job, convém usar instâncias preemptivas para reduzir os custos de computação por hora para processamento de dados não críticos ou para criar clusters muito grandes com um custo menor. custo total. Consulte a documentação sobre preços do Dataproc para mais informações.

Como as preemptivas funcionam com o Dataproc

Todos os workers secundários adicionados a um cluster usam o tipo de máquina dos nós de trabalho principais do cluster. Por exemplo, se você criar um cluster com workers principais que usam tipos de máquina n1-standard-4, todos os workers secundários adicionados ao cluster também usarão máquinas n1-standard-4.

Os workers preemptivos serão reivindicados se forem necessários pelo Google Cloud para outras tarefas. Eles são adicionados de volta ao cluster se e quando a capacidade permitir. Por exemplo, se duas máquinas preemptivas forem recuperadas e removidas de um cluster, essas instâncias serão adicionadas novamente a ele se e quando a capacidade disponível permitir.

As regras a seguir se aplicam a todos os workers secundários, preemptivos e não preemptivos, em um cluster do Dataproc:

  • Somente processamento: workers secundários não armazenam dados. Elas só funcionam como nós de processamento.

  • Nenhum cluster secondary-worker-only: o cluster precisa ter workers principais. Se você criar um cluster e não especificar o número de workers principais, o Dataproc adicionará dois workers principais ao cluster.

  • Tamanho do disco permanente: como padrão, os workers secundários são criados com menos de 100 GB ou com o tamanho do disco de inicialização do worker principal. Esse espaço em disco é usado para armazenamento em cache local de dados e não está disponível por meio do HDFS. Você pode substituir o tamanho padrão do disco com o comando gcloud dataproc clusters create --secondary-worker-boot-disk-size na criação do cluster. É possível especificar essa sinalização mesmo que o cluster não tenha workers secundários quando ele for criado.

Usar preemptivas em um cluster

Você pode especificar o número e o tipo de trabalhos secundários (preemptivos e/ou não preemptivos) ao criar um cluster por meio de uma solicitação da API Dataproc usando a ferramenta de linha de comando gcloud do SDK do Cloud ou no Console do Google Cloud.

Observações:

  • Um cluster pode conter workers secundários preemptivos ou não preemptivos, mas não ambos.
  • É possível atualizar seu cluster depois que ele é criado para alterar o número, mas não o tipo, de workers secundários no cluster.
  • As atualizações de rótulos são propagadas para todos os workers secundários preemptivos em 24 horas. Atualmente, as atualizações de rótulo não se propagam para workers secundários não preemptivos atuais. As atualizações de rótulos também se propagam para os workers adicionados a um cluster após a atualização do rótulo. Por exemplo, se você escalonar o cluster, todos os novos workers principais e secundários terão os novos rótulos.

Comando gcloud

Use o comando gcloud dataproc clusters create para adicionar instâncias preemptivas a um cluster quando ele é criado. Depois que um cluster é criado, é possível adicionar ou remover instâncias preemptivas dele com o comando gcloud dataproc clusters update.

Como criar um cluster com workers preemptivos

Para criar um cluster com workers preemptivos, use o comando gcloud dataproc clusters create com o argumento --num-secondary-workers. Os workers secundários são preemptivos por padrão, mas é possível adicionar workers secundários não preemptivos ao criar um cluster definindo --secondary-worker-type=non-preemptible (consulte o Exemplo 2).

Exemplo 1

O comando a seguir cria um cluster chamado "my-test-cluster" com dois workers preemptivos.

gcloud dataproc clusters create my-test-cluster \
    --num-secondary-workers=2 \
    --region=us-central1
...
Waiting on operation [operations/projects/project-id/operations/...].
clusterName: my-test-cluster
  ...
secondaryWorkerConfiguration:
    - dataproc-1-sw-2skd
    - dataproc-1-sw-l20p
    isPreemptible: true
...

Exemplo 2

O comando a seguir usa a sinalização secondary-worker-type para criar um cluster "my-test-cluster" com dois workers secundários não preemptivos.

gcloud dataproc clusters create my-test-cluster \
    --num-secondary-workers=2 \
    --secondary-worker-type=non-preemptible \
    --region=us-central1

Como atualizar um cluster com workers secundários

Para atualizar um cluster e adicionar ou remover workers secundários, use o comando gcloud dataproc clusters update com o argumento --num-secondary-workers.

Exemplo

O comando a seguir atualiza um cluster chamado "my-test-cluster" para usar dois workers secundários.

gcloud dataproc clusters update my-test-cluster \
    --num-secondary-workers=2 \
    --region=us-central1
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
  ...
secondaryWorkerConfiguration:
    - dataproc-1-sw-2skd
    - dataproc-1-sw-l20p
    isPreemptible: true
...

Como remover todos os workers secundários de um cluster

Para remover todos os workers secundários de um cluster, use o comando gcloud dataproc clusters update com --num-secondary-workers definido como 0.

Exemplo

O comando a seguir remove todos os workers secundários de um cluster.

gcloud dataproc clusters update my-test-cluster \
    --num-secondary-workers=0 \
    --region=us-central1

API REST

Como criar um cluster com workers preemptivos

Use a API clusters.create do Dataproc para adicionar workers preemptivos a um cluster quando ele for criado. Observe que os workers secundários são preemptivos por padrão, mas é possível adicionar workers secundários não preemptivos aos clusters, conforme mostrado no Exemplo 2.

Exemplo 1

A solicitação POST a seguir cria um cluster com dois workers preemptivos.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster-name",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}

Exemplo 2

A solicitação POST a seguir cria um cluster com dois workers secundários não preemptivos.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster-name",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "NON_PREEMPTIBLE"
    }
  }
}

Como atualizar um cluster com instâncias preemptivas

Use a API clusters.patch do Dataproc para adicionar e remover workers secundários.

Exemplo

A seguinte solicitação PATCH atualiza um cluster para ter dois workers secundários.


PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}

Console

Você pode especificar o número de workers preemptivos ao criar um cluster do Dataproc no Console do Cloud. Após a criação de um cluster, você poderá adicionar e remover workers preemptivos editando a configuração do cluster no Console do Cloud.

Criar um cluster com instâncias preemptivas

Abra o painel expansível "Opções de workers, intervalo, rede, versão, inicialização e acesso preemptivos", na página Criar um cluster do Dataproc no Console do Cloud.

Adicione trabalhos preemptivos ao novo cluster, especificando um número positivo no campo Nodes.

Como atualizar um cluster com instâncias preemptivas

Após a criação de um cluster, você pode editar o número de workers preemptivos em um cluster clicando no botão Editar na guia Configuração na página Detalhes do cluster.

Para alterar o número de workers preemptivos, especifique um novo valor no campo Nós de workers preemptivos.

Como remover todas as instâncias preemptivas de um cluster

Para remover todas as instâncias preemptivas de um cluster, atualize a configuração do cluster conforme explicado acima, especificando 0 no campo Nós de workers preemptivos.