As VMs flexíveis são uma funcionalidade do Dataproc que lhe permite especificar listas prioritárias de tipos de VMs para os nós principais, primários e secundários do Dataproc quando cria um cluster do Dataproc.
Porquê 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 principais, primárias e secundárias das 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 da CPU de uma instância de VM. O Dataproc suporta a utilização de tipos de VMs predefinidos e personalizados.
- Nós de trabalho principais e principais: um cluster tem um nó principal e, pelo menos, dois trabalhadores principais.
- Trabalhadores secundários: os trabalhadores secundários são opcionais e 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. O tipo de trabalhador secundário de VM flexível predefinido é uma VM do Spot, que é um tipo de VM anulável (consulte Trabalhadores secundários do Dataproc).
Utilização
- 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 posteriores. - A criação de clusters com VMs flexíveis principais ou principais demora mais tempo (aproximadamente, mais 32 segundos).
- O nome do cluster não pode ter mais de 45 carateres.
- É necessário o mesmo tipo de disco para todos os tipos de VMs.
- 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, uma vez que 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.
Como pedir 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, 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 quantidade de CPUs são tratados de igual forma.
Consola
Para criar um cluster com VMs flexíveis de worker secundárias, faça o seguinte:
- Abra a página Dataproc Crie um cluster no Compute Engine na Google Cloud consola.
- O painel Configurar cluster está selecionado com os campos preenchidos com os 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 do cluster 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.
- 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.
- 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 master-machine-types, worker-machine-types e secondary-worker-machine-types
para especificar listas de VMs flexíveis classificadas para trabalhadores principais, primários e
secundários.
O exemplo seguinte pede tipos de VMs principais, primárias e secundárias com as seguintes prioridades:
- Aprovisione VMs
e2-standard-8, se disponíveis (classificação 0). Se as máquinase2-standard-8não estiverem disponíveis, aprovisione VMsn2-standard-8(classificação 1).
Uma vez que o tipo de trabalhador secundário não está especificado, são aprovisionadas VMs secundárias preemptíveis do Spot.
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"
Notas:
--zone="": A funcionalidade de VM flexível requer a colocação automática 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 parâmetro--zonesubstitui qualquer seleção de zona especificada no seugcloud config listpredefinido.
API
Use o instanceFlexibilityPolicy.instanceSelectionList
como parte de um pedido da API Dataproc
clusters.create
para especificar uma lista classificada de
machineTypes
para trabalhadores principais, primários e secundários.
Exemplo: o fragmento de JSON seguinte de um clusters.create
corpo do pedido
especifica os tipos de máquinas principais (masterConfig), de processamento primário (workerConfig) e de processamento 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
}
]
}
}
}
}
Substitua as propriedades da VM Flex
O Dataproc define propriedades ao nível do cluster. Quando cria um cluster que usa VMs flexíveis, pode substituir as propriedades geradas pelo sistema para os tipos de VMs flexíveis de worker primário e secundário.
gcloud
Para substituir propriedades quando cria 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 atribui ao NodeManager em trabalhadores
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árias 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 no seu pedido de criação de clusters.
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 seguinte substitui o número de vCPUs que o YARN atribui ao NodeManager em trabalhadores secundários. Este exemplo define o valor de yarn.nodemanager.resource.cpu-vcores como 6 para todas as VMs de trabalho 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"
}
}
O que se segue?
- Saiba mais acerca das propriedades do cluster do Dataproc.
- Saiba como criar um cluster do Dataproc.