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ê enviava uma solicitação de criação de cluster, a solicitação falhava, e era necessário atualizar o pedido, o script ou o código para especificar um tipo de VM "melhor alternativa". Esse processo de nova solicitação pode envolver várias iterações até que você especifique um tipo de VM disponível.
O recurso de VM flexível do Dataproc ajuda a solicitação de criação de cluster a ser bem-sucedida. Para isso, ele seleciona tipos de VM de worker secundárias nas listas classificadas de VMs e pesquisa zonas na região especificada do cluster 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 é compatível com o uso de tipos de VM predefinidos e personalizados.
Workers secundários: os workers secundários não armazenam dados. Elas 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 em versões de imagem posteriores do Dataproc no Compute Engine.É possível especificar VMs flexíveis apenas para workers secundários.
É possível especificar até cinco listas de tipos de VM classificadas, com até 10 tipos de VM em cada uma. Para mais informações, consulte Como solicitar VMs flexíveis.
A criação de um cluster com VMs flexíveis exige o uso do posicionamento em zona automática do Dataproc, que permite que o Dataproc escolha a zona com capacidade para atender às solicitações de tipo de VM.
Se a solicitação de criação de cluster incluir uma política de escalonamento automático, as VMs flexíveis podem ser de diferentes famílias de VMs, mas precisam ter a mesma quantidade de memória e contagem de núcleos.
Ao provisionar VMs flexíveis, o Dataproc consome reservas disponíveis "correspondentes", 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 pelos tipos de VM com o maior número de CPUs.
O Dataproc aplica Google Cloud cotas ao provisionamento flexível de VM.
Embora seja possível especificar diferentes proporções de CPU para memória para tipos de worker V primários e secundários em um cluster, isso pode levar à degradação da performance, porque a menor proporção de CPU para memória é usada como a menor unidade de contêiner.
Se você atualizar um cluster criado com VMs flexíveis, o Dataproc vai selecionar e adicionar workers das listas de VMs flexíveis que você forneceu ao criar o cluster.
Solicitar VMs flexíveis
É possível especificar VMs flexíveis ao criar um cluster do Dataproc usando o console Google Cloud , a Google Cloud CLI ou a API Dataproc.
- É possível especificar até cinco listas de tipos de VM classificadas, com até 10 tipos de VM em cada uma. As listas com classificação mais baixa têm a prioridade mais alta. Por padrão, as listas de VMs flexíveis têm uma classificação de 0. Em uma lista, o Dataproc prioriza tipos de VM com reservas não utilizadas, seguidos pelos maiores tamanhos de VM. 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:
Abra a página Criar um cluster no Compute Engine do Dataproc no console do Google Cloud .
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 a Zona do cluster para permitir que a colocação em zona automática do Dataproc escolha a zona com a melhor disponibilidade dos tipos de VM especificados nas listas de VMs flexíveis.
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 dos 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áquinas para incluir em cada classificação.
Depois de confirmar e especificar os detalhes do cluster nos painéis de criação, clique em Criar.
gcloud
Use o comando
gcloud dataproc clusters create
para adicionar várias flags secondary-worker-machine-types
e especificar listas de
VMs flexíveis classificadas para
workers secundários do Dataproc.
O tipo padrão de worker secundário de VM flexível é spot, que é um tipo preemptivo.
No exemplo da CLI gcloud a seguir, o Dataproc tenta
provisionar workers secundários com VMs n2-standard-8
primeiro (classificação 0). Se as máquinas n2-standard-8 não estiverem disponíveis, o Dataproc tentará provisionar workers 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"
Observações:
--zone=""
: o recurso de VM flexível exige a colocação em zona automática do Dataproc para permitir que o Dataproc escolha a zona com os tipos de VM disponíveis para uso. Transmitir um valor vazio ("") à flag--zone
substitui qualquer seleção de zona especificada nogcloud config list
padrão.O Dataproc gera propriedades de componentes
role
com base nos núcleos e na memória da máquina. É possível substituir essas propriedades geradas pelo sistema com a flag--properties
usando a seguinte sintaxe:--properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
Apenas a função
secondary_worker
é compatível.No exemplo a seguir, a flag
--properties
muda o número de núcleos das máquinase2-standard-8
atribuídas a nós de trabalho secundários de8
para6
:--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
API
Use o instanceFlexibilityPolicy.instanceSelectionList
como parte de uma solicitação
clusters.create
da API Dataproc para especificar uma lista classificada de machineTypes para workers secundários.
Exemplo:
O snippet JSON a seguir de um corpo da solicitação do Dataproc clusters.create
especifica os tipos de máquinas de workers secundários para as posições 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 } ] } } }
Use propriedades do cluster para personalizar papéis de componentes:o Dataproc
gera propriedades role
de componentes com base nos núcleos e na memória da VM.
É possível substituir essas propriedades geradas pelo sistema adicionando
SoftwareConfig.properties
à sua solicitação clusters.create
usando a seguinte sintaxe key=value
:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE
Apenas a função secondary_worker
é compatível.
No exemplo a seguir, 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"