Trabalhadores secundários do Dataproc

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áquinas n1-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 Cloud

Exemplo: 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

Trabalhadores não preemptíveis

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.

Exemplo 1

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
Exemplo 2

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
Altere o tamanho do disco de arranque do trabalhador secundário. Por predefinição, todos 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 a colocação 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 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.

Exemplo

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.

Exemplo

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.

Exemplo 1

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
    }
  }
}
Exemplo 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.

Exemplo

O 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
    }
  }
}
Permita que a Google Cloud consola crie o seu pedido de criação de 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 consola crie um pedido REST da API ou um comando da CLI gcloud equivalentes. Google Cloud

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:

    1. Encontre o nome do grupo de instâncias geridas (instanceGroupManagerName).

      Consola

      1. 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.
      2. 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 comando gcloud dataproc clusters describe com a flag --format para apresentar o instanceGroupManagerName.
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION \
          --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
      

      API REST

      Envie um pedido de clusters.get para devolver o valor de config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.
    2. 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.

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 standardCapacityBasenú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: 5
  • standardCapacityPercentAboveBase 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:

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:

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.