As VMs flexíveis são um recurso do Dataproc que permite especificar listas priorizadas de tipos de VM para nós mestre, principal e secundário do Dataproc ao criar um cluster do Dataproc.
Por que usar VMs flexíveis?
Anteriormente, se um tipo de VM não estivesse disponível ao enviar uma solicitação de criação de cluster, a solicitação falhava e era necessário atualizar a solicitação, o script ou o código para especificar um tipo de VM "melhor seguinte". Esse processo de nova solicitação poderia envolver várias iterações até que você especificasse 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 selecionando tipos de VM mestre, principal e secundária nas listas de VMs classificadas e, em seguida, pesquisando zonas na região de 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.
- Nós mestre e de worker principal: um cluster tem um nó mestre e pelo menos dois workers principais.
- Workers secundários: Os workers secundários são opcionais e 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. O tipo de worker secundário de VM flexível padrão é uma VM Spot, que é um tipo preemptivo (consulte Workers secundários do Dataproc).
Uso
- As VMs flexíveis estão disponíveis no Dataproc
no Compute Engine
2.0.74+,2.1.76+,2.2.42+e versões de imagem mais recentes . - A criação de clusters com VMs flexíveis mestre ou de worker principal leva mais tempo (aproximadamente mais 32 segundos).
- O nome do cluster não pode exceder 45 caracteres.
- O mesmo tipo de disco é necessário para todos os tipos de VM.
- É possível especificar até cinco listas de tipos de VM 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 exige o uso da colocação em zona automática do Dataproc, que permite que o Dataproc escolha a zona que tem 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 poderão ser de famílias de VM diferentes, mas precisarão 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 por 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 proporções diferentes de CPU para memória para tipos de worker principal 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 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 Google Cloud console, a CLI do Google Cloud ou a API Dataproc.
- É possível especificar até cinco listas de tipos de VM classificadas, com até 10 tipos de VM em uma lista. As listas com classificação mais baixa têm a maior prioridade. 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 igualmente.
Console
Para criar um cluster com VMs flexíveis de worker secundário, faça o seguinte:
- Abra a página Criar um cluster no Compute Engine do Dataproc no Google Cloud console.
- 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 mudanças. 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 que tem 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 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 para incluir em cada classificação.
- Depois de confirmar e especificar os detalhes do cluster nos painéis de criação de cluster, clique em Criar.
gcloud
Use the
gcloud dataproc clusters create
comando para adicionar várias flags master-machine-types, worker-machine-types e secondary-worker-machine-types
para especificar listas de VMs flexíveis classificadas para workers mestre, principal e
secundário.
O exemplo a seguir solicita tipos de VM mestre, principal e secundária com as seguintes prioridades:
- Provisionar VMs
e2-standard-8se disponíveis (classificação 0). Se as máquinase2-standard-8não estiverem disponíveis, provisione VMsn2-standard-8(classificação 1).
Como o tipo de worker secundário não está especificado, as VMs secundárias Spot preemptivas serão provisionadas.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --zone="" \ --master-machine-types="type=e2-standard-8,rank=0" \ --master-machine-types="type=n2-standard-8,rank=1" \ --num-workers=10 \ --worker-machine-types="type=e2-standard-8,rank=0" \ --worker-machine-types="type=n2-standard-8,rank=1" \ --num-secondary-workers=4 \ --secondary-worker-machine-types="type=e2-standard-8,rank=0" \ --secondary-worker-machine-types="type=n2-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 que tem os tipos de VM disponíveis para uso. A transmissão de um valor vazio ("") para a flag--zonesubstitui qualquer seleção de zona especificada em seu padrãogcloud config list.
API
Use the instanceFlexibilityPolicy.instanceSelectionList
como parte de uma solicitação da API Dataproc
clusters.create
para especificar uma lista classificada de
machineTypes
para workers mestre, principal e secundário.
Exemplo: o snippet JSON a seguir de um clusters.create
corpo de solicitação
especifica tipos de máquina mestre (masterConfig), de worker principal (workerConfig) e de worker secundário
(secondaryWorkerConfig) com classificações 0 e 1.
{
"projectId": "PROJECT_ID",
"clusterName": "CLUSTER_NAME",
"config": {
"gceClusterConfig": {
"zoneUri": ""
},
"masterConfig": {
"numInstances": 1,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"workerConfig": {
"numInstances": 10,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"secondaryWorkerConfig": {
"numInstances": 4,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
}
}
}
Substituir propriedades de VM flexível
O Dataproc define propriedades no nível do cluster. Ao criar um cluster que usa VMs flexíveis, é possível substituir as propriedades geradas pelo sistema para tipos de VM flexíveis de worker principal e secundário.
gcloud
Para substituir propriedades ao criar um cluster, use a --properties
flag com a seguinte sintaxe:
--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
- ROLE pode ser
primary_workerousecondary_worker. - Separe várias propriedades com uma vírgula.
Execute o comando gcloud dataproc clusters create a seguir para substituir
o número de vCPUs que o YARN aloca para o NodeManager em workers secundários. Este exemplo define o valor yarn.nodemanager.resource.cpu-vcores em
yarn-site.xml como 6 para todas as VMs de worker secundário e2-standard-8 e n2-standard-8.
gcloud dataproc clusters create CLUSTER_NAME \
--num-workers=10 \
--num-secondary-workers=4 \
--worker-machine-types="type=e2-standard-8,rank=0" \
--worker-machine-types="type=n2-standard-8,rank=1" \
--master-machine-types="type=e2-standard-8,rank=0" \
--master-machine-types="type=n2-standard-8,rank=1" \
--secondary-worker-machine-types="type=e2-standard-8,rank=0" \
--secondary-worker-machine-types="type=n2-standard-8,rank=1" \
--region=us-central1 \
--zone="" \
--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6,secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
API
Para substituir propriedades, defina-as no campo properties do
SoftwareConfig
objeto na solicitação de criação de cluster.
Use a seguinte sintaxe para a chave de propriedade:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
- ROLE pode ser
primary_workerousecondary_worker.
O objeto SoftwareConfig a seguir substitui o número de vCPUs que
o YARN aloca para o NodeManager em workers secundários. Este exemplo define o valor
yarn.nodemanager.resource.cpu-vcores como 6
para todas as VMs de worker secundário e2-standard-8 e n2-standard-8.
{
"imageVersion":"2.2.42",
"properties": {
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6",
"secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6"
}
}
A seguir
- Saiba mais sobre as propriedades do cluster do Dataproc.
- Aprenda a criar um cluster do Dataproc.