VMs flexíveis são um recurso do Dataproc que permite especificar listas priorizadas de tipos de VM para o Dataproc workers secundários quando você 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 na criação de clusters de trabalho bem-sucedida selecionando os tipos de VM de worker secundários nas listas de VMs classificadas e pesquisando para 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 é compatível com o 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
VMs flexíveis estão disponíveis no Dataproc no Compute Engine
2.0.74+
, Dataproc2.1.22+
e posterior no Compute Engine versões de imagem.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 vai usar VMs Spot, que são preemptivas.
É possível especificar até cinco listas de tipos de VMs classificadas, 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 correspondência" reservas disponíveis, mas não "específicas", reservas (consulte Consuma 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 cotas do Google Cloud o provisionamento flexível de VMs.
É possível especificar diferentes proporções de CPU para memória para funções primárias e de workers secundários em um cluster, o que pode prejudicar o desempenho. porque a menor proporção CPU para memória é usada como a menor unidade de contêiner.
Se você atualizar um cluster criado usando VMs flexíveis, o Dataproc vai selecionar e adicionar workers das listas de VMs flexíveis 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 Google Cloud CLI ou a API Dataproc.
- É possível especificar até cinco listas de tipos de VM classificados, com até 10 tipos de VM em uma lista. As listas com menor classificação têm a prioridade mais alta. Por padrão, opções flexíveis As listas de VMs têm classificação 0. Em uma lista, o Dataproc prioriza as VMs com reservas não utilizadas, seguidas 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 o Dataproc Criar um cluster no Compute Engine no console do Google Cloud.
O painel Configurar cluster está selecionado com os campos preenchidos com e a distribuição dos valores dos dados. É possível alterar o nome sugerido e a região do cluster. 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.
Selecione o painel Configurar nós. Nos Nós de trabalho 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
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 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 Colocação em zona automática do Dataproc para o Dataproc escolha a zona que tem seus Tipos de VM disponíveis para uso. Como transmitir um valor vazio ("") para a sinalização--zone
substitui qualquer seleção de zona especificada nagcloud config list
.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 a seguir, a flag
--properties
altera o número de núcleos dee2-standard-8
máquinas atribuídas a nós de trabalho secundários de8
a6
:--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 seguinte snippet JSON de um clusters.create
do Dataproc
corpo da solicitação
especifica os tipos de máquina de workers secundários para as classificaçõ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 } ] } } }
Usar propriedades de cluster para personalizar papéis de componente: o Dataproc
gera propriedades role
de componentes com base nos núcleos e na memória da VM.
Para substituir essas propriedades geradas pelo sistema, adicione
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 a seguir, o campo properties
muda o número de núcleos
atribuído ao nó de trabalho secundário de uma VM e2-standard-8
de 8
a 6
:
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"