As VMs flexíveis são um recurso do Serviço Gerenciado para Apache Spark que permite especificar listas priorizadas de tipos de VM para nós principais, primários e de trabalho secundários do Serviço Gerenciado para Apache Spark ao criar um cluster do Serviço Gerenciado para Apache Spark.
Por que usar VMs flexíveis?
Antes, se um tipo de VM não estivesse disponível quando você enviasse uma solicitação de criação de cluster, a solicitação falharia, e você precisaria atualizar a solicitação, o script ou o código para especificar um tipo de VM "melhor opção 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 Serviço Gerenciado para Apache Spark 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 trabalho secundário nas listas de VMs classificadas e pesquisa zonas na região especificada do cluster com disponibilidade dos tipos de VM listados.
Limitações
- Não é possível parar os clusters que usam VMs flexíveis.
- Os nós principais em clusters de alta disponibilidade não podem usar VMs flexíveis, mas os nós de trabalho do cluster de alta disponibilidade podem.
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 Serviço Gerenciado para Apache Spark é 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 de worker secundário de VM flexível padrão é uma VM spot, que é um tipo preemptivo. Consulte Workers secundários do Managed Service for Apache Spark.
Uso
- As VMs flexíveis estão disponíveis no Serviço gerenciado para Apache Spark 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 classificadas de tipos de VM, com até 10 tipos de VM em uma lista. Para mais informações, consulte Como solicitar VMs flexíveis.
- Se a solicitação de criação do cluster incluir uma política de escalonamento automático, as VMs flexíveis poderão ser de diferentes famílias, mas precisarão ter a mesma quantidade de memória e contagem de núcleos.
- Ao provisionar VMs flexíveis, o Serviço Gerenciado para Apache Spark consome "qualquer reserva correspondente" 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 em um ranking, seguidos pelos tipos de VM com o maior número de CPUs.
- O Serviço Gerenciado para Apache Spark aplica Google Cloud cotas ao provisionamento flexível de VMs.
- Embora seja possível especificar diferentes proporções de CPU para memória para tipos de VM de worker primário e secundário 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 Managed Service for Apache Spark vai selecionar e adicionar workers das listas de VMs flexíveis que você forneceu ao criar o cluster.
Recomendação:ative o posicionamento automático de zona do Serviço Gerenciado para Apache Spark, que permite que o serviço escolha uma zona com capacidade para provisionar as VMs solicitadas.
Como solicitar VMs flexíveis
É possível especificar VMs flexíveis ao criar um cluster do Managed Service para Apache Spark usando o console Google Cloud , a Google Cloud CLI ou a API Dataproc.
- É possível especificar até cinco listas classificadas de tipos de VM, com até 10 tipos de VM em uma lista. 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 Serviço Gerenciado para Apache Spark 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, faça o seguinte:
- Abra a página Criar cluster.
- Clique em Configuração adicional para abrir a seção.
- Edite Workers primários ou Workers secundários. Em Adicionar tipos de worker, especifique outras VMs classificadas.
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 classificadas de VMs flexíveis para workers principais, secundários e
mestres.
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). Se não houver máquinase2-standard-8disponí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="": definir essa flag como um valor vazio ativa o posicionamento automático de zona, que permite que o Serviço Gerenciado para Apache Spark escolha uma zona que tenha os tipos de VM solicitados disponíveis para uso. Esse valor de flag substitui qualquer seleção de zona especificada no seugcloud config listpadrão.
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 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), worker principal (workerConfig) e 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 da VM flexível
O Serviço Gerenciado para Apache Spark 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.
O comando gcloud dataproc clusters create 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 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 Serviço Gerenciado para Apache Spark.
- Saiba como criar um cluster do Serviço Gerenciado para Apache Spark.