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 de trabalho secundário 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, ela 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 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 os tipos de VM mestre, principal e de worker secundário nas listas classificadas 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.
- 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. Elas funcionam apenas como nós de processamento. É possível usar workers secundários para escalonar a computação sem escalonar o armazenamento. O tipo padrão de worker secundário de VM flexível é 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 um cluster com VMs flexíveis de worker principal ou mestre leva mais tempo (aproximadamente 32 segundos a mais).
- O nome do cluster não pode ter mais de 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 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 proporções diferentes de CPU para memória para tipos de trabalhadores primários e secundários 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 com 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 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 classificação 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, faça o seguinte:
- 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 a opção Qualquer está selecionada 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 suas 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 master-machine-types, worker-machine-types e secondary-worker-machine-types
e especificar listas de VMs flexíveis classificadas para workers principais, primários e
secundários.
O exemplo a seguir solicita tipos de VM principal, primária e secundária com as seguintes prioridades:
- Provisione
e2-standard-8VMs se disponíveis (classificação 0). See2-standard-8máquinas não estiverem disponíveis, provisionen2-standard-8VMs (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 seus tipos de VM disponíveis para uso. Transmitir um valor vazio ("") à flag--zonesubstitui qualquer seleção de zona especificada nogcloud config listpadrão.
API
Use instanceFlexibilityPolicy.instanceSelectionList
como parte de uma solicitação
clusters.create
da API Dataproc para especificar uma lista classificada de
machineTypes
para workers principais, secundários e mestres.
Exemplo: o snippet JSON a seguir de um corpo da solicitação clusters.create especifica os tipos de máquina mestre (masterConfig), de trabalho principal (workerConfig) e de trabalho secundário (secondaryWorkerConfig) com classificação 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 da 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 primário e secundário.
gcloud
Para substituir propriedades ao criar um cluster, use a flag --properties
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 seguinte comando gcloud dataproc clusters create 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 objeto
SoftwareConfig
na solicitação de criação do cluster.
Use a seguinte sintaxe para a chave da 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árias 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.
- Saiba como criar um cluster do Dataproc.