Além de usar VMs padrão do Compute Engine como workers do Dataproc (chamados de workers "principais"), os clusters do Dataproc podem usar
workers secondary
.
As seguintes características se aplicam a todos os workers secundários em um cluster do Dataproc:
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.
Nenhum cluster secondary-worker-only: o cluster precisa ter workers principais. Se você criar um cluster e não especificar o número de workers principais, o Dataproc 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 de worker principal padrão para workers secundários, você pode especificar uma ou mais listas classificadas de tipos de máquina para workers secundários. Consulte VMs flexíveis do Dataproc para mais informações.
Tamanho do disco permanente: como padrão, os workers secundários são criados com menos de 100 GB ou com o tamanho do disco de inicialização do worker principal. Esse espaço em disco é usado para armazenamento em cache local de dados e não está disponível por meio do HDFS. Você pode substituir o tamanho padrão do disco com o comando
gcloud dataproc clusters create --secondary-worker-boot-disk-size
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 Dataproc 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 do Spot, VMs preemptivas padrão e VMs não preemptivas. O tipo de worker secundário padrão do Dataproc é 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, será possível especificar três VMs do Spot, três VMs preemptivas, três VMs não preemptivas ou uma combinação de workers do Spot e não preemptivos.
Workers preemptivos
Embora a possível remoção de workers preemptivos possa afetar a estabilidade do job, convém usar instâncias preemptivas para reduzir os custos de computação por hora para processamento de dados não críticos ou para criar clusters muito grandes com um custo total menor. Use a Calculadora de preços do Google Cloud para estimar os 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 secundários) no 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ções sobre a economia de custos:o uso de VMs preemptivas nem sempre economiza custos, porque as preempções podem causar uma execução mais longa do job, resultando em custos mais altos. Embora o uso do modo de flexibilidade aprimorada (EFM, na sigla em inglês) com VMs preemptivas possa ajudar a reduzir esse resultado, a economia geral de custos de 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 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 sacrificar a estabilidade do job. Para fazer isso, especifique
non-preemptible
como o tipo de worker secundário. É possível combinar workers secundários não preemptivos com workers secundários spot.
Selecionar workers secundários
Você pode especificar o número e o tipo de workers secundários ao criar um cluster usando o console do Google Cloud, a gcloud CLI ou a API Dataproc.
- É possível combinar o spot com workers secundários 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ótulo não se propagam para workers secundários não preemptivos atuais. As atualizações de rótulo se propagam para todos os workers adicionados a um cluster após uma atualização de rótulo. Por exemplo, se você escalonar o cluster, todos os novos workers principais e secundários terão os novos rótulos.
Console
Você pode especificar o número de workers secundários ao criar um cluster do Dataproc no console do Google Cloud. Após a criação de um cluster, você pode adicionar e remover workers secundários editando a configuração do cluster no console do Google Cloud.
Criar um cluster com workers secundários
Defina o número e o tipo de workers secundários a serem aplicados a um novo cluster na seção Nós de workers secundários do painel Configurar nós na página Criar um cluster do Dataproc do console do Google Cloud. Especifique o número e o tipo de workers secundários nos campos Nós de workers secundários e Capacidade de preempção, respectivamente.
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 página Clusters do console do Google Cloud. Na página Detalhes do cluster. Clique na guia **Configuração**, depois 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 Google Cloud CLI
Use o comando
gcloud dataproc clusters create
para adicionar workers secundários a um cluster quando ele for criado.
Depois que um cluster é criado, você pode adicionar ou remover workers secundários dele ou dele, com o comando
gcloud dataproc clusters update
.
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 comando
gcloud dataproc clusters create
com o argumento --num-secondary-workers
. 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 o spot com workers secundários 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
gcloud dataproc clusters create --secondary-worker-boot-disk-size
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 console do Google Cloud construir sua solicitação de criação de cluster.
Clique nos links REST equivalente ou linha de comando na parte inferior do painel esquerdo da página Criar um cluster do Dataproc para que o console do Google Cloud construa uma solicitação REST de API equivalente ou um comando da ferramenta gcloud.
Atualizar um cluster com workers secundários
Para atualizar um cluster e adicionar ou remover workers secundários, use o comando
gcloud dataproc clusters update
com a flag --num-secondary-workers
.
O comando a seguir atualiza example-cluster para usar quatro workers secundários (do tipo padrão ou especificado quando você criou 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 comando
gcloud dataproc clusters update
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 Dataproc 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
(preemptível)
e non-preemptible
. É possível usar outros campos para
combinar o spot com workers secundários 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 } } }
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 workers secundários não preemptivos.
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 Dataproc para adicionar e remover workers secundários.
ExemploA solicitação PATCH a seguir atualiza um cluster para ter quatro workers secundários (do tipo padrão ou especificado quando você criou o cluster).
PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances { "config": { "secondaryWorkerConfig": { "numInstances": 4 } } }
Resolver problemas de workers secundários
Problemas de permissão da conta de serviço:os workers secundários são criados em um grupo gerenciado de instâncias. Se houver um problema de permissão, os registros do Dataproc não vão informar a falha na criação de workers secundários, mas os workers com falha vão ser listados na guia Instâncias de VM da página Detalhes do cluster no console do Google Cloud sem uma marca de seleção verde. Para conferir a listagem, abra a página Clusters do Dataproc 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
).Console
- Abra a página Clusters do Dataproc e clique no nome do cluster para abrir a página Detalhes do cluster.
- Clique em REST equivalente na parte de baixo da página e confira o valor de
config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName
.
Google Cloud CLI
Execute o comandogcloud dataproc clusters describe
com a flag--format
para mostrar oinstanceGroupManagerName
.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION \ --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
API REST
Envie uma solicitaçãoclusters.get
para retornar o valor deconfig.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName
. - Acesse os registros no Explorador de registros.
Selecione o tipo de recurso
Google Compute Engine Instance Group
e filtre pelo nome do grupo gerenciado de instâncias.Como alternativa, é possível aplicar um filtro de geração de registros para `resource.type="gce_instance_group" e
resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME
.
- Encontre o nome do grupo gerenciado de instâncias (
Misturar o spot com workers secundários não preemptivos
É possível especificar uma combinação de workers secundários spot e não preemptivos ao criar um cluster do Dataproc.
Configurações de workers secundários para misturar spot com workers secundários não preemptivos
Use as seguintes configurações de worker secundário ao criar um cluster do Dataproc para ter um nível mínimo de capacidade de worker secundário com a capacidade de aumentar a capacidade quando VMs do Spot estiverem disponíveis:
Número de workers secundários:o número total de workers secundários a provisionar.
Tipo de worker secundário:
spot
é o tipo de worker secundário ao misturar workers secundários spot e não preemptivos.standardCapacityBase:o número de workers secundários (padrão) não preemptivos a provisionar. Os workers secundários não preemptivos são provisionados antes de outros tipos de workers secundários.
standardCapacityPercentAboveBase:depois que o número de workers secundários
standardCapacityBase
é preenchido, o número restante de workers secundários necessário para atender ao número total de workers secundários solicitados é 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 preempcionáveis.- O número restante necessário para atender ao número total de trabalhadores secundários solicitados é preenchido com VMs spot.
Exemplo:
- Número de workers secundários: 15
standardCapacityBase
: 5standardCapacityPercentAboveBase
30%
Resultado:
- Não previsível: 8 = 5 (
standardCapacityBase
) + 3 (30% dos 10 restantes) - Vaga: 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 spot com workers secundários não preemptivos ao criar um cluster.
gcloud
Execute o comando a seguir localmente ou no Cloud Shell para criar um cluster com uma mistura 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 pelo ID do projeto no Google Cloud. Os IDs dos projetos estão listados na seção Informações do projeto no Painel do console do Google Cloud.
- REGION: uma região do Compute Engine disponível 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 spot com workers secundários não preemptivos.
- OTHER_FLAGS_AS_NEEDED: consulte gcloud dataproc clusters create.
API
Para misturar o spot com workers secundários não preempíveis, defina os campos da API preemptibility
, standardCapacityBase
e standardCapacityPercentAboveBase
do Dataproc como parte de uma solicitação cluster.create, conforme mostrado no seguinte exemplo JSON:
{ "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 spot com workers secundários não preemptivos.
Combinar a mistura de workers secundários com VMs flexíveis
É possível combinar workers secundários spot e não preemptivos e especificar formas 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-cdbtral1 \ --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 Dataproc 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 Dataproc mantém a proporção spot/não preemptiva solicitada ao adicionar ou excluir workers secundários.
Como atualizar as configurações de mistura de workers secundários
Especifique a combinação de workers secundários spot e não preemptivos ao criar um cluster do Dataproc. Não é possível mudar as configurações da mistura de workers secundários depois de criar o cluster.
Preempção de workers secundários do Spot
- O Dataproc não controla o tempo de preempção de VMs spot. Consulte Preempção de VMs spot.
- Quando a preempção spot ocorre, o grupo de trabalho secundário pode ser executado com capacidade reduzida temporariamente até que o Compute Engine provisione novamente as VMs interrompidas.
- O Dataproc não vai adicionar capacidade a um grupo de workers secundários além das configurações iniciais do grupo.