VMs flexíveis do Dataproc

As VMs flexíveis são um recurso do Dataproc que permite especificar listas priorizadas de tipos de VM para workers secundários do Dataproc ao criar um cluster do Dataproc.

Por que usar VMs flexíveis?

Antes, se um tipo de VM não estivesse disponível quando você enviou uma solicitação de criação de cluster, ela falhou, e você precisava atualizar sua solicitação, script ou código para especificar uma tipo de VM. Isso O processo de nova solicitação pode envolver várias iterações até que você especifique um tipo de VM que estava disponível.

O recurso de VM flexível do Dataproc ajuda a solicitação de criação de cluster a ser bem-sucedida selecionando tipos de VM de worker secundários nas listas de VM classificadas e, em seguida, procurando zonas na região do cluster especificada com disponibilidade dos tipos de VM listados.

Terminologia

  • Tipo de VM: a família, a capacidade de memória e o número de núcleos de CPU de uma instância de VM. O Dataproc oferece suporte ao uso de tipos de VM predefinidos e personalizados.

  • Workers secundários: workers secundários não armazenam dados. Eles funcionam apenas como nós de processamento. É possível usar workers secundários para escalonar a computação sem escalonar o armazenamento.

Limitações e considerações

  • As VMs flexíveis estão disponíveis no Dataproc no Compute Engine 2.0.74+, 2.1.22+ e nas versões de imagem do Dataproc no Compute Engine mais recentes.

  • Durante a versão de pré-lançamento:

    • Só é possível especificar VMs flexíveis para workers secundários.
    • É possível especificar Spot ou não preemptiva tipos de workers secundários como VMs flexíveis, na solicitação de criação do cluster, não ambos. Se você não especificar o tipo de worker secundário, o Dataproc usará VMs spot, que são preemptivas.
  • É possível especificar até cinco listas de tipos de VM classificados, com até 10 tipos de VM em uma lista. Para mais informações, consulte Como solicitar VMs flexíveis.

  • A criação de um cluster com VMs flexíveis requer o uso de Colocação em zona automática do Dataproc, que permite que o Dataproc escolha a zona que tem capacidade de atender solicitações de tipo de VM.

  • Se a solicitação de criação de cluster incluir uma política de escalonamento automático, VMs flexíveis podem ser de diferentes famílias de VMs, mas precisam ter a mesma a quantidade de memória e a contagem de núcleos.

  • Ao provisionar VMs flexíveis, o Dataproc consome "qualquer reserva correspondente" disponível, mas não reservas "específicas" (consulte Consumir instâncias reservadas). Os tipos de máquina que correspondem às reservas são selecionados primeiro em uma classificação, seguidos por Tipos de VM com o maior número de CPUs.

  • O Dataproc aplica as cotas do Google Cloud ao provisionamento de VM flexível.

  • Embora seja possível especificar diferentes proporções de CPU para memória para tipos de V de worker primário e secundário em um cluster, isso pode levar à degradação do desempenho, porque a menor proporção de CPU para memória é usada como a menor unidade de contêiner.

  • Se você atualizar um cluster criado usando VMs flexíveis, O Dataproc seleciona e adiciona workers das listas flexíveis de VMs que que você forneceu ao criar o cluster.

Como solicitar VMs flexíveis

É possível especificar VMs flexíveis ao criar um cluster do Dataproc usando o console do Google Cloud, a CLI do Google Cloud ou a API Dataproc.

  • É possível especificar até cinco listas de tipos de VMs classificadas, com até 10 tipos de VM em uma lista. As listas com a classificação mais baixa têm a maior prioridade. Por padrão, as listas de VM flexíveis têm uma classificação de 0. Em uma lista, o Dataproc prioriza os tipos de VM com reservas não utilizadas, seguidos pelos tamanhos de VM maiores. Os tipos de VM em uma lista com a mesma contagem de CPU são tratados da mesma forma.

Console

Para criar um cluster com VMs flexíveis de worker secundário:

  1. Abra a página Criar um cluster no Compute Engine do Dataproc no console do Google Cloud.

  2. O painel Configurar cluster é selecionado com campos preenchidos com valores padrão. É possível mudar o nome sugerido e a região do cluster, além de fazer outras alterações. Verifique se Qualquer está selecionado como o cluster Zona para permitir Posicionamento em zona automática do Dataproc escolher a zona que tem a melhor disponibilidade tipos de VM especificados nas listas de VMs flexíveis.

  3. Selecione o painel Configurar nós. Na seção Nós de workers secundários, especifique o número e a capacidade de preempção de workers secundários.

    • Clique em Adicionar um worker secundário para cada classificação de workers secundários, especificando um ou mais tipos de máquina a serem incluídos em cada classificação.
  4. Depois de confirmar e especificar os detalhes do cluster nos painéis de criação, Clique em Criar.

gcloud

Use o gcloud dataproc clusters create para adicionar várias sinalizações secondary-worker-machine-types e especificar a classificação listas flexíveis de VMs para Workers secundários do Dataproc O tipo de worker secundário de VM flexível padrão é Spot, que é preemptivo.

No exemplo da CLI gcloud a seguir, o Dataproc tenta provisionar workers secundários primeiro com n2-standard-8 VMs (classificação 0). Se As máquinas n2-standard-8 não estão disponíveis. O Dataproc tenta para provisionar workers secundários com e2-standard-8 ou t2d-standard-8. VMs (classificação 1).

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --master-machine-type=n1-standard-8 \
    --worker-machine-type=n1-standard-8 \
    --num-workers=4 \
    --num-secondary-workers=4 \
    --secondary-worker-type=non-preemptible \
    --secondary-worker-machine-types="type=n2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"

Observações:

  • --zone="": o recurso de VM flexível exige a Colocação de zona automática do Dataproc para permitir que o Dataproc escolha a zona que tem os tipos de VM disponíveis para uso. Transmitir um valor vazio ("") para a flag --zone substitui qualquer seleção de zona especificada no gcloud config list padrão.

  • O Dataproc gera propriedades role do componente com base na máquina núcleos e memória. É possível substituir essas propriedades geradas pelo sistema pelas sinalização --properties, usando a seguinte sintaxe:

    --properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
    

    Na versão de pré-lançamento, o papel secondary_worker é o único aceito.

    No exemplo abaixo, a flag --properties muda o número de núcleos de máquinas e2-standard-8 atribuídas a nós de trabalho secundários de 8 para 6:

    --properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
    

API

Usar o instanceFlexibilityPolicy.instanceSelectionList como parte de uma API Dataproc clusters.create para especificar uma lista classificada de machineTypes para workers secundários.

Exemplo:

O snippet JSON a seguir de um corpo de solicitação do clusters.create do Dataproc especifica os tipos de máquinas de workers secundários para classificação 0 e 1.

"config": {
  "secondaryWorkerConfig": {
    "instanceFlexibilityPolicy": {
      "instanceSelectionList": [
        {
          "machineTypes": [
            "n1-standard-4",
            "n2-standard-4"
          ],
          "rank": 0
        },
        {
          "machineTypes": [
            "e2-standard-4",
            "n2d-standard-4"
          ],
          "rank": 1
        }
      ]
    }
  }
}

Usar as propriedades do cluster para personalizar os papéis do componente: Dataproc gera propriedades role do componente com base nos núcleos e na memória da VM. É possível substituir essas propriedades geradas pelo sistema adicionando SoftwareConfig.properties à solicitação clusters.create usando a seguinte sintaxe key=value:

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE

Na versão de pré-lançamento, o papel secondary_worker é o único aceito.

No exemplo abaixo, o campo properties muda o número de núcleos atribuídos ao nó de worker secundário de uma VM e2-standard-8 de 8 para 6:

"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"