Além de usar VMs do Compute Engine padrão como trabalhadores do Dataproc (denominados trabalhadores "principais"), os clusters do Dataproc podem usar trabalhadores secondary
.
As seguintes caraterísticas aplicam-se a todos os trabalhadores secundários num cluster do Dataproc:
Apenas processamento: os trabalhadores secundários não armazenam dados. Funcionam apenas como nós de processamento. Por conseguinte, pode usar trabalhadores secundários para dimensionar a computação sem dimensionar o armazenamento.
Sem clusters apenas com trabalhadores secundários: o cluster tem de ter trabalhadores principais. Se criar um cluster e não especificar o número de trabalhadores principais, o Dataproc adiciona dois trabalhadores principais ao cluster.
Tipo de máquina: por predefinição, os trabalhadores secundários usam o tipo de máquina dos trabalhadores principais do cluster. Por exemplo, se criar um cluster com trabalhadores principais que usam tipos de máquinas
n1-standard-4
, por predefinição, todos os trabalhadores secundários adicionados ao cluster também usam máquinasn1-standard-4
.Em vez de usar o tipo de máquina de trabalho principal predefinido para os trabalhadores secundários, pode especificar uma ou mais listas classificadas de tipos de máquinas para os trabalhadores secundários. Consulte o artigo VMs flexíveis do Dataproc para mais informações.
Tamanho do disco persistente: por predefinição, os trabalhadores secundários são criados com o menor dos seguintes valores: 1000 GB ou o tamanho do disco de arranque do trabalhador principal. Este espaço em disco é usado para o armazenamento em cache local de dados e não está disponível através do HDFS. Pode substituir o tamanho do disco predefinido com o comando
gcloud dataproc clusters create --secondary-worker-boot-disk-size
durante a criação do cluster. Pode especificar esta flag mesmo que o cluster não tenha trabalhadores secundários quando for criado.Criação assíncrona: quando adiciona trabalhadores secundários criando ou dimensionando um cluster, os trabalhadores secundários podem não ser aprovisionados até a operação de criação ou atualização terminar. Isto deve-se ao facto de o Dataproc gerir trabalhadores secundários através de grupos de instâncias geridas (MIGs), que criam VMs de forma assíncrona assim que podem ser aprovisionadas (consulte Verificar o estado das instâncias geridas).
Trabalhadores secundários preemptíveis e não preemptíveis
Existem três tipos de trabalhadores secundários: VMs do Spot, VMs preemptivas padrão e VMs não preemptivas. O tipo de trabalhador secundário do Dataproc predefinido é a VM padrão preemptível. Pode especificar uma combinação de trabalhadores secundários não predefinidos e de instâncias Spot.
Google CloudExemplo: se selecionar três trabalhadores secundários quando criar um cluster, pode especificar três VMs spot, três VMs preemptivas, três VMs não preemptivas ou uma combinação de trabalhadores spot e não preemptivos.
Trabalhadores preemptivos
Embora a potencial remoção de trabalhadores preemptíveis possa afetar a estabilidade das tarefas, pode optar por usar instâncias preemptíveis para reduzir os custos de computação por hora para o processamento de dados não críticos ou para criar clusters muito grandes a um custo total inferior (pode usar a calculadora de preços do Google Cloud para estimar os custos).
Para ter os melhores resultados, o número de trabalhadores preemptíveis no cluster deve ser inferior a 50% do número total de todos os trabalhadores (principais mais todos os trabalhadores secundários) no cluster.
Quando usa trabalhadores preemptíveis, é mais provável que as suas tarefas tenham um número maior de falhas de tarefas de trabalhador único transitórias em comparação com as tarefas executadas em trabalhadores não preemptíveis. Para aumentar a tolerância das tarefas a falhas de tarefas de baixo nível, pode definir valores de propriedades do cluster semelhantes aos valores de propriedades predefinidos usados com clusters de dimensionamento automático para aumentar o número máximo de novas tentativas de tarefas e ajudar a evitar falhas de tarefas.
Uma consideração de poupança de custos: a utilização de VMs preemptivas nem sempre permite poupar custos, uma vez que as preempções podem causar uma execução de tarefas mais longa com custos de tarefas mais elevados. Embora a utilização do modo de flexibilidade melhorado (EFM) com VMs preemptivas possa ajudar a mitigar este resultado, a poupança de custos geral das VMs preemptivas varia com cada exemplo de utilização. Geralmente, as tarefas de curta duração são mais adequadas para a utilização de VMs preemptivas, uma vez que a probabilidade de preemptivas durante a execução da tarefa é menor. Experimente diferentes opções de tarefas, como nenhuma VM preemptível e VMs preemptíveis com EFM, para estimar os custos e chegar à melhor solução.
Trabalhadores não preemptíveis
- Pode criar um cluster com trabalhadores secundários não preemptíveis para dimensionar a computação sem sacrificar a estabilidade do trabalho. Para tal, especifique
non-preemptible
como o tipo de trabalhador secundário. Pode misturar trabalhadores secundários não preemptíveis com trabalhadores secundários instantâneos.
Selecione trabalhadores secundários
Pode especificar o número e o tipo de trabalhadores secundários quando cria um cluster com a Google Cloud consola, a CLI gcloud ou a API Dataproc.
- Pode misturar instâncias de reserva com trabalhadores secundários não preemptíveis.
- Pode atualizar o cluster depois de criado para alterar o número, mas não o tipo, de trabalhadores secundários no cluster.
- As atualizações de etiquetas propagam-se a todos os trabalhadores secundários preemptíveis no prazo de 24 horas. As atualizações de etiquetas não são propagadas aos trabalhadores secundários não preemptíveis existentes. As atualizações de etiquetas são propagadas a todos os trabalhadores adicionados a um cluster depois de uma atualização de etiquetas. Por exemplo, se aumentar a escala do cluster, todos os novos trabalhadores principais e secundários terão as novas etiquetas.
Consola
Pode especificar o número de trabalhadores secundários quando cria um cluster do Dataproc a partir da Google Cloud consola. Depois de criar um cluster, pode adicionar e remover trabalhadores secundários editando a configuração do cluster a partir daGoogle Cloud consola.
Crie um cluster com trabalhadores secundários
Pode definir o número e o tipo de trabalhadores secundários a aplicar a um novo cluster na secção Nós de trabalhadores secundários do painel Configurar nós na página Criar um cluster da consola Google Cloud . Especifique o número e o tipo de trabalhadores secundários nos campos Nós de trabalhadores secundários e Capacidade de interrupção, respetivamente.
Atualize um cluster com instâncias secundárias
Para atualizar o número de trabalhadores secundários num cluster, clique no nome do cluster na página Clusters da consola Google Cloud . Na página Detalhes do cluster. Clique no separador **Configuração**, clique em Editar e atualize o número no campo Nós de processamento secundários.
Remova todas as instâncias secundárias de um cluster
Para remover todos os trabalhadores secundários de um cluster, atualize a configuração do cluster, conforme explicado anteriormente, especificando 0
no campo de nós de trabalhadores secundários.
Comando da CLI do Google Cloud
Use o comando
gcloud dataproc clusters create
para adicionar trabalhadores secundários a um cluster quando o cluster é criado.
Depois de criar um cluster, pode adicionar ou remover trabalhadores secundários do cluster com o comando gcloud dataproc clusters update
(pode atualizar o número, mas não o tipo de trabalhadores secundários).
Crie um cluster com trabalhadores secundários
Para criar um cluster com trabalhadores secundários, use o comando
gcloud dataproc clusters create
com o argumento --num-secondary-workers
. Por predefinição, os trabalhadores secundários são VMs preemptivas padrão. Pode especificar trabalhadores secundários não preemptíveis ou
de recurso quando cria um cluster
definindo a flag --secondary-worker-type
como "non-preemptible"
ou "spot". Os exemplos seguintes mostram como criar um cluster com cada
tipo de trabalhador secundário: o "preemptible" (predefinição), o de recurso (preemptível)
e o não preemptível. Pode usar flags adicionais para misturar instâncias de spot com trabalhadores secundários não preemptíveis.
O comando seguinte cria "cluster1" com dois trabalhadores secundários padrão preemptíveis (tipo predefinido).
gcloud dataproc clusters create cluster1 \ --num-secondary-workers=2 \ --region=us-central1
O comando seguinte usa a flag secondary-worker-type
para criar o "cluster2" com dois trabalhadores secundários (preemptible) pontuais.
gcloud dataproc clusters create cluster2 \ --num-secondary-workers=2 \ --secondary-worker-type=spot \ --region=us-central1
Exemplo 3
O comando seguinte usa a flag secondary-worker-type
para criar o "cluster3" com dois
trabalhadores secundários não preemptíveis.
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. Esta flag pode ser especificada mesmo que o cluster não tenha trabalhadores secundários no momento da criação.
Permita que a Google Cloud consola crie o pedido de criação do cluster.
Pode clicar nos links REST ou linha de comandos equivalentes na parte inferior do painel esquerdo da página
Criar um cluster do Dataproc para que
a Google Cloud consola crie um pedido REST da API ou um comando da ferramenta gcloud equivalentes.
Atualize um cluster com trabalhadores secundários
Para atualizar um cluster de modo a adicionar ou remover trabalhadores secundários, use o comando
gcloud dataproc clusters update
com a flag --num-secondary-workers
.
O comando seguinte atualiza example-cluster para usar quatro trabalhadores secundários (do tipo predefinido ou do tipo especificado quando criou o cluster).
gcloud dataproc clusters update example-cluster \ --num-secondary-workers=4 \ --region=us-central1
Remova todos os trabalhadores secundários de um cluster
Para remover todos os trabalhadores secundários de um cluster, use o comando
gcloud dataproc clusters update
com --num-secondary-workers
definido como 0
.
O comando seguinte remove todos os trabalhadores secundários de "example-cluster".
gcloud dataproc clusters update example-cluster \ --num-secondary-workers=0 \ --region=us-central1
API REST
Crie um cluster com trabalhadores secundários
Use a API Dataproc
clusters.create
para adicionar trabalhadores secundários a um cluster quando o cluster é criado. Os exemplos seguintes mostram como criar um cluster com cada tipo de trabalhador secundário: preemptible
(predefinição), spot
(preemptível) e non-preemptible
. Pode usar campos adicionais para misturar instâncias de spot com trabalhadores secundários não preemptíveis.
O seguinte pedido POST cria um "cluster1" com dois trabalhadores de VM padrão preemptíveis (tipo predefinido).
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters { "clusterName": "cluster1", "config": { "secondaryWorkerConfig": { "numInstances": 2 } } }
O pedido POST seguinte cria um "cluster2" com dois trabalhadores de VM spot (interrompíveis).
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters { "clusterName": "cluster2", "config": { "secondaryWorkerConfig": { "numInstances": 2, "preemptibility": "SPOT" } } }
Exemplo 3
O seguinte pedido POST cria "cluster3" com dois trabalhadores secundários não preemptíveis.
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters { "clusterName": "cluster3", "config": { "secondaryWorkerConfig": { "numInstances": 2, "preemptibility": "NON_PREEMPTIBLE" } } }
Atualize um cluster com trabalhadores secundários
Use a API clusters.patch do Dataproc para adicionar e remover trabalhadores secundários.
ExemploO seguinte pedido PATCH atualiza um cluster para ter quatro trabalhadores secundários (do tipo predefinido ou do tipo especificado quando criou o cluster).
PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances { "config": { "secondaryWorkerConfig": { "numInstances": 4 } } }
Resolva problemas com trabalhadores secundários
Problemas de autorização da conta de serviço: os trabalhadores secundários são criados através de um grupo de instâncias gerido. Se existir um problema de autorização, os registos do Dataproc não comunicam a falha na criação de trabalhadores secundários, mas os trabalhadores com falhas são apresentados no separador Instâncias de VMs da página Detalhes do cluster na consola sem uma marca de verificação verde.Google Cloud Para ver a listagem, abra a página Clusters do Dataproc e, de seguida, clique no nome do cluster para abrir a página Detalhes do cluster do cluster.
Problemas de autorizações do grupo de instâncias geridas: para verificar se existe um problema com as autorizações do grupo de instâncias geridas:
- Encontre o nome do grupo de instâncias geridas (
instanceGroupManagerName
).Consola
- Abra a página Clusters do Dataproc e, de seguida, clique no nome do cluster para abrir a página Detalhes do cluster do cluster.
- Clique em REST equivalente na parte inferior da página e, de seguida, veja o valor de
config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName
CLI do Google Cloud
Execute o comandogcloud dataproc clusters describe
com a flag--format
para apresentar oinstanceGroupManagerName
.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION \ --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
API REST
Envie um pedido declusters.get
para devolver o valor deconfig.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName
. - Veja os registos no Explorador de registos.
Selecione o tipo de recurso
Google Compute Engine Instance Group
e filtre pelo nome do grupo de instâncias gerido.Em alternativa, pode aplicar um filtro de registo para `resource.type="gce_instance_group" e
resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME
.
- Encontre o nome do grupo de instâncias geridas (
Misture instâncias de spot com trabalhadores secundários não preemptíveis
Pode especificar uma combinação de trabalhadores secundários de instância temporária e não temporária quando cria um cluster do Dataproc.
Definições de trabalhadores secundários para misturar instâncias de spot com trabalhadores secundários não preemptíveis
Use as seguintes definições de worker secundário quando criar um cluster do Dataproc para obter um nível mínimo de capacidade de worker secundário com a capacidade de aumentar a capacidade quando as VMs spot estão disponíveis:
secondary worker number: o número total de trabalhadores secundários a aprovisionar.
secondary worker type:
spot
é o tipo de trabalhador secundário quando mistura instâncias de spot com trabalhadores secundários não preemptíveis.standardCapacityBase: o número de trabalhadores secundários não preemptíveis (padrão) a aprovisionar. Os trabalhadores secundários não preemptíveis são aprovisionados antes de outros tipos de trabalhadores secundários.
standardCapacityPercentAboveBase: depois de o
standardCapacityBase
número de trabalhadores secundários ser preenchido, o número restante de trabalhadores secundários necessário para atingir o número total de trabalhadores secundários pedido é preenchido com uma combinação de VMs não preemptíveis e spot da seguinte forma:standardCapacityPercentAboveBase
: a percentagem de trabalhadores secundários restantes a preencher com VMs não preemptíveis.- O número restante necessário para atingir o número total de trabalhadores secundários pedidos é preenchido com VMs spot.
Exemplo:
- Número de trabalhadores secundários: 15
standardCapacityBase
: 5standardCapacityPercentAboveBase
30%
Resultado:
- Não preemptível: 8 = 5 (
standardCapacityBase
) + 3 (30% dos 10 restantes) - Local: 7 (70% dos 10 restantes)
- Total = 15
Crie um cluster com uma combinação de trabalhadores secundários pontuais e não prioritários
Pode usar a CLI gcloud ou a API Dataproc para misturar trabalhadores secundários de baixo custo com trabalhadores secundários não preemptíveis quando cria um cluster.
gcloud
Execute o seguinte comando localmente ou no Cloud Shell para criar um cluster com uma combinação de trabalhadores secundários spot e não preemptíveis.
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
Notas:
- CLUSTER_NAME: o nome do novo cluster.
- PROJECT_ID: o ID do seu Google Cloud projeto. Os IDs dos projetos estão listados na secção Informações do projeto no Google Cloud painel de controlo da consola.
- REGION: Uma região do Compute Engine disponível para executar a carga de trabalho.
--secondary-worker-type
: Quando misturar trabalhadores secundários de spot e não preemptíveis, especifique o tipo de trabalhador secundário comospot
.- STANDARD_CAPACITY_BASE e STANDARD_CAPACITY_PERCENT_ABOVE_BASE: consulte as definições de trabalhadores secundários para misturar instâncias de spot com trabalhadores secundários não preemptíveis.
- OTHER_FLAGS_AS_NEEDED: consulte o comando gcloud dataproc clusters create.
API
Para misturar instâncias de capacidade instantânea com trabalhadores secundários não preemptíveis, defina os campos da API preemptibility
, standardCapacityBase
e standardCapacityPercentAboveBase
do Dataproc como parte de um pedido 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 } } } } }
Notas:
- CLUSTER_NAME: o nome do novo cluster.
preemptibility
: Quando combinar trabalhadores secundários de intervenção e não antecipáveis, especifiquespot
.- STANDARD_CAPACITY_BASE e STANDARD_CAPACITY_PERCENT_ABOVE_BASE: consulte as definições de trabalhadores secundários para misturar instâncias de spot com trabalhadores secundários não preemptíveis.
Combine a mistura de trabalhadores secundários com VMs flexíveis
Pode misturar trabalhadores secundários de spot e não preemptíveis e especificar formas de VMs flexíveis para trabalhadores secundários quando cria 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
Caraterísticas de mistura de trabalhadores secundários
Esta secção descreve alguns dos comportamentos e caraterísticas associados à combinação de trabalhadores secundários de instância de reserva e não preemptíveis.
Preferência de trabalhador secundário
O Dataproc não dá preferência a VMs spot ou não preemptíveis quando agenda aplicações em trabalhadores secundários.
Escalabilidade de trabalhadores secundários
Quando os trabalhadores secundários são dimensionados através do dimensionamento automático ou do dimensionamento manual, o Dataproc mantém a proporção de instâncias de baixo custo para instâncias não preemptíveis pedida quando adiciona trabalhadores secundários.
A atualizar as definições da combinação de trabalhadores secundários
Especifica a combinação de trabalhadores secundários de execução única e não anuláveis quando cria um cluster do Dataproc. Não é possível alterar as definições de mistura de trabalhadores secundários depois de criar o cluster.
Detete a preempção de trabalhadores secundários
- O Dataproc não controla o momento da remoção preventiva da VM do Spot (consulte a secção Remoção preventiva de VMs do Spot).
- Quando ocorre a remoção preventiva de instâncias do Spot, o grupo de trabalhadores secundário pode ser executado com capacidade reduzida temporariamente até o Compute Engine voltar a aprovisionar as VMs removidas preventivamente.
- O Dataproc não adiciona capacidade a um grupo de trabalhadores secundário superior às definições iniciais do grupo.