Workers secundários do Dataproc

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áquinas n1-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, poderá 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

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.

Exemplo 1

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

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
Altere 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 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. É possível substituir o tamanho padrão do disco com o comando 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.

Exemplo

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.

Exemplo

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.

Exemplo 1

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

Exemplo

A 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
    }
  }
}
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 CLI gcloud.

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:

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

      Console

      1. Abra a página Clusters do Dataproc e clique no nome do cluster para abrir a página Detalhes do cluster.
      2. 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 comando gcloud dataproc clusters describe com a flag --format para mostrar o instanceGroupManagerName.
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION \
          --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
      

      API REST

      Envie uma solicitação clusters.get para retornar o valor de config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.
    2. 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.

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

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:

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-a-não-preemptivo solicitada ao adicionar 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.