VMs flexíveis do Dataproc

As VMs flexíveis são uma funcionalidade do Dataproc que lhe permite especificar listas prioritárias de tipos de VMs para trabalhadores secundários do Dataproc quando cria um cluster do Dataproc.

Por que motivo usar VMs flexíveis

Anteriormente, se um tipo de VM não estivesse disponível quando enviava um pedido de criação de cluster, o pedido falhava e tinha de atualizar o pedido, o script ou o código para especificar um tipo de VM "melhor seguinte". Este processo de novo pedido pode envolver várias iterações até especificar um tipo de VM que estava disponível.

A funcionalidade de VMs flexíveis do Dataproc ajuda a que o pedido de criação do cluster seja bem-sucedido selecionando tipos de VMs de trabalho secundários nas suas listas de VMs classificadas e, em seguida, pesquisando zonas na região do cluster especificada com disponibilidade dos tipos de VMs indicados.

Terminologia

  • Tipo de VM: A família, a capacidade de memória e o número de núcleos do CPU de uma instância de VM. O Dataproc suporta a utilização de tipos de VMs predefinidos e personalizados.

  • Trabalhadores secundários: Os trabalhadores secundários não armazenam dados. Funcionam apenas como nós de processamento. Pode usar trabalhadores secundários para dimensionar a computação sem dimensionar 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 posteriores do Dataproc no Compute Engine.

  • Só pode especificar VMs flexíveis para trabalhadores secundários.

  • Pode especificar até cinco listas de tipos de MV classificadas, com até 10 tipos de MV numa lista. Para mais informações, consulte o artigo Como pedir VMs flexíveis.

  • A criação de um cluster com VMs flexíveis requer a utilização do posicionamento automático de zonas do Dataproc, que permite ao Dataproc escolher a zona com capacidade para satisfazer os seus pedidos de tipo de VM.

  • Se o seu pedido de criação de cluster incluir uma política de escalabilidade automática, as VMs flexíveis podem ser de diferentes famílias de VMs, mas têm de ter a mesma quantidade de memória e número de núcleos.

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

  • O Dataproc aplica Google Cloud quotas ao aprovisionamento de VMs flexíveis.

  • Embora possa especificar diferentes rácios de CPU para memória para tipos de VMs de trabalho primários e secundários num cluster, isto pode levar a uma degradação do desempenho, porque o rácio de CPU para memória mais pequeno é usado como a unidade de contentor mais pequena.

  • Se atualizar um cluster criado com VMs flexíveis, o Dataproc seleciona e adiciona trabalhadores das listas de VMs flexíveis que forneceu quando criou o cluster.

Peça VMs flexíveis

Pode especificar VMs flexíveis quando cria um cluster do Dataproc através da Google Cloud consola, da CLI do Google Cloud ou da API Dataproc.

  • Pode especificar até cinco listas de tipos de MV classificadas, com até 10 tipos de MV numa lista. As listas com a classificação mais baixa têm a prioridade mais elevada. Por predefinição, as listas de VMs flexíveis têm uma classificação de 0. Numa lista de tipos de VMs, o Dataproc dá prioridade aos tipos de VMs com reservas não usadas, seguidos pelos tamanhos de VMs maiores. Os tipos de VMs numa lista com a mesma contagem de CPUs são tratados de igual modo.

Consola

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

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

  2. O painel Configurar cluster está selecionado com os campos preenchidos com valores predefinidos. Pode alterar o nome sugerido e a região do cluster, bem como fazer outras alterações. Certifique-se de que Qualquer está selecionado como a zona para permitir que o posicionamento automático de zonas do Dataproc escolha a zona com a melhor disponibilidade dos tipos de VMs especificados nas suas listas de VMs flexíveis.

  3. Selecione o painel Configurar nós. Na secção Nós de trabalho secundários, especifique o número e a capacidade de preemptibilidade dos trabalhadores secundários.

    • Clique em Adicionar um trabalhador secundário para cada classificação de trabalhadores secundários, especificando um ou mais tipos de máquinas a incluir em cada classificação.
  4. Depois de confirmar e especificar os detalhes do cluster nos painéis de criação do cluster, clique em Criar.

gcloud

Use o comando gcloud dataproc clusters create para adicionar várias flags secondary-worker-machine-types para especificar listas de VMs flexíveis classificadas para trabalhadores secundários do Dataproc. O tipo de trabalhador secundário da VM flexível predefinido é Spot, que é um tipo preemptivo.

No exemplo da CLI gcloud seguinte, o Dataproc tenta aprovisionar primeiro trabalhadores secundários com VMs n2-standard-8 (classificação 0). Se as máquinas n2-standard-8 não estiverem disponíveis, o Dataproc tenta aprovisionar trabalhadores secundários com VMs e2-standard-8 ou t2d-standard-8 (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"

Notas:

  • --zone="": A funcionalidade de VM flexível requer o posicionamento automático de zonas do Dataproc para permitir que o Dataproc escolha a zona que tem os seus tipos de VMs disponíveis para utilização. A transmissão de um valor vazio ("") ao indicador --zone substitui qualquer seleção de zona especificada no seu gcloud config list predefinido.

  • O Dataproc gera propriedades dos componentes role com base nos núcleos e na memória da máquina. Pode substituir estas propriedades geradas pelo sistema com a sinalização --properties, usando a seguinte sintaxe:

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

    Apenas a função secondary_worker é suportada.

    No exemplo seguinte, a flag --properties altera o número de núcleos das 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

Use o elemento instanceFlexibilityPolicy.instanceSelectionList como parte de um pedido da API Dataproc clusters.create para especificar uma lista classificada de machineTypes para trabalhadores secundários.

Exemplo:

O seguinte fragmento JSON de um clusters.create corpo do pedido do Dataproc especifica os tipos de máquinas de trabalhadores secundários para a classificação 0 e a classificação 1.

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

Use propriedades de cluster para personalizar as funções dos componentes: o Dataproc gera propriedades de role componentes com base nos núcleos e na memória da VM. Pode substituir estas propriedades geradas pelo sistema adicionando SoftwareConfig.properties ao seu pedido clusters.create, usando a seguinte sintaxe key=value:

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE

Apenas a função secondary_worker é suportada.

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

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