Além de usar as VMs padrão do Compute Engine como workers do Serviço Gerenciado para Apache Spark (chamados de workers "principais"), os clusters do Serviço Gerenciado para Apache Spark podem usar
secondary workers.
As seguintes características se aplicam a todos os workers secundários em um cluster do Serviço Gerenciado para Apache Spark:
Somente processamento : workers secundários não armazenam dados. Elas só funcionam como nós de processamento. Portanto, você pode usar workers secundários para escalonar a computação sem escalonar o armazenamento.
Somente workers secundários : é possível criar um cluster de escala zero apenas com workers secundários. No entanto, se você criar um cluster padrão e especificar apenas workers secundários (sem especificar o número de workers principais), o Serviço Gerenciado para Apache Spark vai adicionar dois workers principais ao cluster.
Tipo de máquina : por padrão, os workers secundários usam o tipo de máquina dos workers principais do cluster. Por exemplo, se você criar um cluster com workers principais que usam tipos de máquina
n1-standard-4, por padrão, todos os workers secundários adicionados ao cluster também usarão máquinasn1-standard-4.Em vez de usar o tipo de máquina do worker primário padrão para workers secundários, é possível especificar uma ou mais listas classificadas de tipos de máquina para workers secundários. Consulte VMs flexíveis do Serviço Gerenciado para Apache Spark para mais informações.
Tamanho do disco permanente: por padrão, os workers secundários são criados com o menor disco de 1.000 GB ou com o tamanho do disco de inicialização do worker primário. Esse espaço em disco é usado para armazenamento em cache local de dados e não está disponível por meio do HDFS. É possível substituir o tamanho do disco padrão com o
gcloud dataproc clusters create --secondary-worker-boot-disk-sizecomando na criação do cluster. É possível especificar essa flag mesmo que o cluster não tenha workers secundários no momento da criação.Criação assíncrona: quando você adiciona workers secundários criando ou escalonando um cluster, eles podem não ser provisionados no momento em que a operação de criação ou atualização é concluída. Isso ocorre porque o Serviço Gerenciado para Apache Spark gerencia workers secundários usando grupos de instâncias gerenciadas (MIGs, na sigla em inglês), que criam VMs de forma assíncrona assim que podem ser provisionadas (consulte Como verificar o status de instâncias gerenciadas).
Workers secundários preemptivos e não preemptivos
Há três tipos de workers secundários: VMs spot, VMs preemptivas padrão, e VMs não preemptivas. O tipo de worker secundário padrão do Serviço Gerenciado para Apache Spark é a VM preemptiva padrão. É possível especificar uma combinação de workers secundários spot e não preemptivos.
Exemplo: se você selecionar três workers secundários ao criar um cluster, você poderá especificar três VMs spot, três VMs preemptivas, três VMs não preemptivas ou uma combinação de workers spot e não preemptivos.
Workers preemptivos
A possível remoção de workers preemptivos pode afetar a estabilidade do job, mas você pode optar por usar instâncias preemptivas para reduzir os custos de computação por hora para processamento de dados não críticos ou criar clusters muito grandes com um menor custo total. Use a calculadora de preços do Google Cloud para fazer uma estimativa dos custos.
Para ter melhores resultados, o número de workers preemptivos no cluster precisa ser menor que 50% do número total de todos os workers (principais e todos os secundários) do cluster.
Ao usar workers preemptivos, os jobs provavelmente apresentarão um número maior de falhas transitórias de tarefas de workers únicos em comparação a jobs executados em workers não preemptivos. Para aumentar a tolerância do job a falhas de tarefas de nível inferior, defina valores de propriedade de cluster semelhantes aos valores de propriedade padrão usados com clusters de escalonamento automático para aumentar o número máximo de novas tentativas das tarefas e evitar falhas de jobs.
Consideração de economia de custos:o uso de VMs preemptivas nem sempre economiza custos, já que as preempções podem causar uma execução mais longa do job, resultando em custos mais altos. Embora o uso do modo de flexibilidade aprimorado (EFM) com VMs preemptivas possa ajudar a mitigar esse resultado, a economia geral de custos das VMs preemptivas vai variar de acordo com cada caso de uso. Geralmente, os jobs de curta duração são mais adequados para o uso de VM preemptiva, já que a probabilidade de preempções durante a execução do job será menor. Teste diferentes opções de job, como VMs não preemptivas e VMs preemptivas com EFM, para estimar os custos e chegar à melhor solução.
Workers não preemptivos
- É possível criar um cluster com workers secundários não preemptivos para escalonar a computação sem prejudicar a estabilidade do job. Para fazer isso, especifique
non-preemptiblecomo o tipo de worker secundário. É possível misturar workers secundários não preemptivos com workers spot.
Selecionar workers secundários
É possível especificar o número e o tipo de workers secundários ao criar um cluster usando o Google Cloud console, CLI gcloud ou a API Dataproc.
- É possível misturar workers secundários spot com não preemptivos.
- É possível atualizar seu cluster depois que ele é criado para alterar o número, mas não o tipo, de workers secundários no cluster.
- As atualizações de rótulos são propagadas para todos os workers secundários preemptivos em 24 horas. As atualizações de rótulos não são propagadas para workers secundários não preemptivos. As atualizações de rótulos são propagadas para todos os workers adicionados a um cluster após uma atualização de rótulo. Por exemplo, se você escalonar verticalmente o cluster, todos os novos workers principais e secundários terão os novos rótulos.
Console
É possível especificar o número de workers secundários ao criar um cluster do Serviço Gerenciado para Apache Spark no Google Cloud console. Após a criação de um cluster, você pode adicionar e remover workers secundários editando a configuração do cluster no Google Cloud console.
Criar um cluster com workers secundários
- Abra a página "Criar cluster".
- Clique em Configuração adicional para expandir essa seção.
- Edite Workers secundários.
- No painel aberto, especifique o número, o tipo e outras configurações de workers secundários.
Atualizar um cluster com instâncias secundárias
Para atualizar o número de workers secundários em um cluster, clique no nome do cluster na Clusters página do Google Cloud console. Na página Detalhes do cluster. Clique na guia Configuração e em Editar e atualize o número no campo "Nós de workers secundários".
Remover todas as instâncias secundárias de um cluster
Para remover todos os workers secundários de um cluster, atualize a configuração do cluster conforme explicado anteriormente, especificando 0 no campo "Nós de workers secundários".
Comando da CLI gcloud
Use the
gcloud dataproc clusters create
comando para adicionar workers secundários a um cluster quando ele for criado.
Após a criação de um cluster, você pode adicionar ou remover workers secundários de ou para o
cluster com o
gcloud dataproc clusters update
comando (o número, mas não o tipo de workers secundários, pode ser atualizado).
Criar um cluster com workers secundários
Para criar um cluster com workers secundários, use o
gcloud dataproc clusters create
comando com o --num-secondary-workers argumento. Os workers secundários são VMs preemptivas padrão por padrão. É possível especificar workers secundários não preemptivos ou
spot ao criar um cluster
definindo a flag --secondary-worker-type como `non-preemptible`
ou `spot`. Os exemplos a seguir mostram como criar um cluster com cada
tipo de worker secundário: `preemptible` (padrão), spot (preemptivo)
e não preemptivo. É possível usar outras flags para
misturar workers secundários spot com não preemptivos.
O comando a seguir cria "cluster1" com dois workers secundários preemptivos padrão (tipo padrão).
gcloud dataproc clusters create cluster1 \ --num-secondary-workers=2 \ --region=us-central1
O comando a seguir usa a flag secondary-worker-type para criar "cluster2" com dois workers secundários spot (preemptivos).
gcloud dataproc clusters create cluster2 \ --num-secondary-workers=2 \ --secondary-worker-type=spot \ --region=us-central1
Exemplo 3
O comando a seguir usa a flag secondary-worker-type para criar "cluster3" com dois workers secundários não preemptivos.
gcloud dataproc clusters create cluster3 \ --num-secondary-workers=2 \ --secondary-worker-type=non-preemptible \ --region=us-central1
Mude o tamanho do disco de inicialização do worker secundário.
Por padrão, todos os workers secundários são criados com o menor disco de 1.000 GB ou com o tamanho do disco de inicialização do worker primário. Esse espaço em disco é usado para armazenamento em cache local de dados e não está disponível por meio do HDFS. É possível substituir o tamanho do disco padrão com o
gcloud dataproc clusters create --secondary-worker-boot-disk-size
comando na criação do cluster. Essa flag pode ser especificada mesmo que o cluster não tenha workers secundários no momento da criação.
Deixe o Google Cloud console construir sua solicitação de criação de cluster. Na parte de baixo da página "Criar cluster", clique em Linha de comando equivalente ou REST equivalente para que o Google Cloud console construa um comando da CLI gcloud ou uma solicitação de API REST equivalente.
Atualizar um cluster com workers secundários
Para atualizar um cluster e adicionar ou remover workers secundários, use o
gcloud dataproc clusters update
comando com a --num-secondary-workers flag.
O comando a seguir atualiza example-cluster para usar quatro workers secundários (do tipo padrão ou do tipo especificado ao criar o cluster).
gcloud dataproc clusters update example-cluster \ --num-secondary-workers=4 \ --region=us-central1
Remover todos os workers secundários de um cluster
Para remover todos os workers secundários de um cluster, use o
gcloud dataproc clusters update
comando com --num-secondary-workers definido como 0.
O comando a seguir remove todos os workers secundários de "example-cluster".
gcloud dataproc clusters update example-cluster \ --num-secondary-workers=0 \ --region=us-central1
API REST
Criar um cluster com workers secundários
Use a API
clusters.create
do Serviço Gerenciado para Apache Spark para adicionar workers secundários a um cluster quando ele for criado. Os exemplos a seguir
mostram como criar um cluster com cada
tipo de worker secundário:
preemptible (padrão), spot (preemptivo)
e non-preemptible. É possível usar outros campos para
misturar workers secundários spot com não preemptivos.
A solicitação POST a seguir cria um "cluster1" com dois workers de VM preemptivos padrão (tipo padrão).
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
{
"clusterName": "cluster1",
"config": {
"secondaryWorkerConfig": {
"numInstances": 2
}
}
}
Exemplo 2
A solicitação POST a seguir cria um "cluster2" com dois workers de VM spot (preemptivos).
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
{
"clusterName": "cluster2",
"config": {
"secondaryWorkerConfig": {
"numInstances": 2,
"preemptibility": "SPOT"
}
}
}
Exemplo 3
A solicitação POST a seguir cria "cluster3" com dois não preemptivos workers secundários.
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
{
"clusterName": "cluster3",
"config": {
"secondaryWorkerConfig": {
"numInstances": 2,
"preemptibility": "NON_PREEMPTIBLE"
}
}
}
Atualizar um cluster com workers secundários
Use a API clusters.patch do Serviço Gerenciado para Apache Spark clusters.patch para adicionar e remover workers secundários.
ExemploA seguinte solicitação PATCH atualiza um cluster para ter quatro workers secundários (do tipo padrão ou do tipo especificado ao criar o cluster).
PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
"config": {
"secondaryWorkerConfig": {
"numInstances": 4
}
}
}
Deixe o Google Cloud console construir sua solicitação de criação de cluster. Na parte de baixo da página "Criar cluster", clique em Linha de comando equivalente ou REST equivalente para que o Google Cloud console construa um comando da CLI gcloud ou uma solicitação de API REST equivalente.
Resolver problemas de workers secundários
Problemas de permissão da conta de serviço: os workers secundários são criados por um grupo gerenciado de instâncias. Se houver um problema de permissão, os registros do Serviço Gerenciado para Apache Spark não vão informar a falha na criação de workers secundários, mas os workers com falha serão listados na guia Instâncias de VM da página Detalhes do cluster no Google Cloud console sem uma marca de seleção verde. Para conferir a listagem, abra a página Clusters do Serviço Gerenciado para Apache Spark, e clique no nome do cluster para abrir a página Detalhes do cluster.
Problemas de permissões do grupo gerenciado de instâncias:para verificar se há um problema com as permissões do grupo gerenciado de instâncias:
- Encontre o nome do grupo gerenciado de instâncias (
instanceGroupManagerName).Google Cloud Console do
- Abra a página Clusters e clique no nome do cluster para abrir a página Detalhes do cluster do cluster.
- Clique em REST equivalente na parte de baixo da página e confira o valor
config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.
CLI gcloud
Execute o
gcloud dataproc clusters describecomando com a--formatflag para mostrar oinstanceGroupManagerName.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION \ --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
API REST
Envie uma solicitação
clusters.getpara retornar o valor deconfig.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName. - Visualize os registros em Análise de registros.
Selecione o tipo de recurso
Google Compute Engine Instance Groupe filtre o nome do grupo gerenciado de instâncias.Como alternativa, é possível aplicar um filtro de registro para `resource.type="gce_instance_group" and
resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME.
- Encontre o nome do grupo gerenciado de instâncias (
Misturar workers secundários spot com não preemptivos
É possível especificar uma combinação de workers secundários spot e não preemptivos ao criar um cluster do Serviço Gerenciado para Apache Spark.
Configurações de workers secundários para misturar workers spot com não preemptivos
Use as seguintes configurações de workers secundários ao criar um cluster do Serviço Gerenciado para Apache Spark para ter um nível mínimo de capacidade de worker secundário com a capacidade de aumentar a capacidade quando as VMs spot estiverem disponíveis:
Número de workers secundários:o número total de workers secundários a serem provisionados.
Tipo de worker secundário:
spoté o tipo de worker secundário ao misturar workers spot com não preemptivos.standardCapacityBase:o número de workers secundários não preemptivos (padrão) a serem provisionados. Os workers secundários não preemptivos são provisionados antes de outros tipos de workers secundários.
standardCapacityPercentAboveBase:depois que o número
standardCapacityBasede workers secundários for preenchido, o número restante de workers secundários necessários para atender ao número total de workers secundários solicitados será preenchido com uma combinação de VMs não preemptivas e spot, da seguinte maneira:standardCapacityPercentAboveBase: a porcentagem dos workers secundários restantes a serem preenchidos com VMs não preemptivas.- O número restante necessário para atender ao número total de workers secundários solicitados é preenchido com VMs spot.
Exemplo:
- Número de workers secundários: 15
standardCapacityBase: 5standardCapacityPercentAboveBase30%
Resultado:
- Não preemptivo: 8 = 5 (
standardCapacityBase) + 3 (30% dos 10 restantes) - Spot: 7 (70% dos 10 restantes)
- Total = 15
Criar um cluster com uma combinação de workers secundários spot e não preemptivos
É possível usar a CLI gcloud ou a API Dataproc para misturar workers secundários spot com não preemptivos ao criar um cluster.
gcloud
Execute o comando a seguir localmente ou no Cloud Shell para criar um cluster com uma combinação de workers secundários spot e não preemptivos.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --secondary-worker-type=spot \ --num-secondary-workers=NUMBER_SECONDARY_WORKERS \ --secondary-worker-standard-capacity-base=STANDARD_CAPACITY_BASE \ --secondary-worker-standard-capacity-percent-above-base=STANDARD_CAPACITY_PERCENT_ABOVE_BASE \ OTHER_FLAGS_AS_NEEDED
Observações:
- CLUSTER_NAME: o nome do novo cluster.
- PROJECT_ID: o ID do projeto do Google Cloud . Os IDs do projeto estão listados na seção Informações do projeto no painel do Google Cloud console Dashboard.
- REGION: uma região disponível do Compute Engine para executar a carga de trabalho.
--secondary-worker-type: ao misturar workers secundários spot e não preemptivos, especifique o tipo de worker secundário comospot.- STANDARD_CAPACITY_BASE e STANDARD_CAPACITY_PERCENT_ABOVE_BASE: consulte Configurações de workers secundários para misturar workers spot com não preemptivos.
- OTHER_FLAGS_AS_NEEDED: consulte gcloud dataproc clusters create.
API
Para misturar workers secundários spot com não preemptivos, defina os
campos da API preemptibility, standardCapacityBase e
standardCapacityPercentAboveBase do Serviço Gerenciado para Apache Spark como parte de
uma solicitação cluster.create
, conforme mostrado no exemplo de JSON a seguir:
{
"clusterName": "CLUSTER_NAME",
"config": {
"secondaryWorkerConfig": {
"numInstances": 15,
**"preemptibility": "spot"**,
"instanceFlexibilityPolicy": {
"provisioningModelMix": {
**"standardCapacityBase": STANDARD_CAPACITY_BASE**
**"standardCapacityPercentAboveBase": STANDARD_CAPACITY_PERCENT_ABOVE_BASE**
}
}
}
}
}
Observações:
- CLUSTER_NAME: o nome do novo cluster.
preemptibility: ao misturar workers secundários spot e não preemptivos, especifiquespot.- STANDARD_CAPACITY_BASE e STANDARD_CAPACITY_PERCENT_ABOVE_BASE: consulte Configurações de workers secundários para misturar workers spot com não preemptivos.
Combinar a mistura de workers secundários com VMs flexíveis
É possível misturar workers secundários spot e não preemptivos e especificar formatos de VM flexíveis para workers secundários ao criar um cluster.
Exemplo da CLI gcloud:
gcloud dataproc clusters create cluster-name \ --project=project-id \ --region=us-central1 \ --secondary-worker-type=spot \ --num-secondary-workers=15 \ --secondary-worker-standard-capacity-base=5 \ --secondary-worker-standard-capacity-percent-above-base=30 \ --secondary-worker-machine-types="type=n2-standard-8,rank=0" \ --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1" ...other flags as needed
Características de mistura de workers secundários
Esta seção descreve alguns dos comportamentos e características associados à mistura de workers secundários spot e não preemptivos.
Preferência de worker secundário
O Serviço Gerenciado para Apache Spark não dá preferência a VMs spot ou não preemptivas ao programar aplicativos em workers secundários.
Escalonamento de workers secundários
Quando os workers secundários são escalonados por escalonamento automático ou manual, o Serviço Gerenciado para Apache Spark mantém a proporção spot para não preemptiva solicitada ao adicionar workers secundários.
Atualizar as configurações de mistura de workers secundários
Você especifica a mistura de workers secundários spot e não preemptivos ao criar um cluster do Serviço Gerenciado para Apache Spark. Não é possível mudar as configurações de mistura de workers secundários depois de criar o cluster.
Preempção de worker secundário spot
- O Serviço Gerenciado para Apache Spark não controla o tempo de preempção da VM spot (consulte Preempção de VMs spot).
- Quando a preempção spot ocorre, o grupo de workers secundários pode ser executado com capacidade reduzida temporariamente até que o Compute Engine reprovisione as VMs preemptivas.
- O Serviço Gerenciado para Apache Spark não vai adicionar capacidade a um grupo de workers secundários além das configurações iniciais do grupo.