Configurar VMs de worker do Dataflow

Ao personalizar as VMs de worker, você pode adaptar os recursos de computação e armazenamento aos requisitos de memória e processamento do pipeline. Isso ajuda a otimizar o desempenho do job e gerenciar os custos de infraestrutura para cargas de trabalho com uso intensivo de recursos.

Por padrão, o Dataflow seleciona o tipo de máquina para as VMs de worker que executam o job, além do tamanho e do tipo de Persistent Disk. Para personalizar esses recursos, defina as seguintes opções de pipeline ao criar o job.

Tipo de máquina

O tipo de máquina do Compute Engine que o Dataflow usa ao iniciar as VMs de worker. É possível usar tipos de máquina x86 ou Arm, incluindo tipos de máquina personalizados.

Java

Defina a opção de pipeline workerMachineType.

Python

Defina a opção de pipeline machine_type.

Go

Defina a opção de pipeline worker_machine_type.

  • Para Arm, as séries de máquinas Tau T2A, C4A e N4A são compatíveis. Para mais informações sobre como usar VMs ARM, consulte Usar VMs ARM no Dataflow.

  • As VMs x86 são compatíveis automaticamente.

  • Os tipos de máquina de núcleo compartilhado (por exemplo, f1-micro, g1-small, e2-micro, e2-small e e2-medium) não são recomendados para jobs do Dataflow e não são compatíveis com o Contrato de nível de serviço do Dataflow.

  • O faturamento não depende da família de tipos de máquinas. Para mais informações, consulte Preços do Dataflow.

  • Para os tipos de máquina f1-micro e g1-small, o Dataflow cobra como se eles tivessem 1 vCPU. Para os tipos de máquina e2-micro, e2-small e e2-medium, o Dataflow cobra como se eles tivessem 2 vCPUs. Essas taxas são faturadas, mesmo que os tipos de máquina com núcleo compartilhado forneçam menos do que as vCPUs faturadas de tempo de CPU sustentado.

Tipos de máquina personalizados

Para especificar um tipo de máquina personalizado, use o seguinte formato: FAMILY-vCPU-MEMORY. Substitua o seguinte:

  • FAMILY. Use um dos seguintes valores:
    Série de máquinaValor
    N1custom
    N2n2-custom
    N2Dn2d-custom
    E2e2-custom
  • vCPU. O número de vCPUs.
  • MEMORY: a memória, em MB.

Para ativar a memória estendida, adicione -ext ao final do tipo de máquina. Exemplos: n2-custom-6-3072, n2-custom-2-32768-ext.

Para mais informações sobre tipos de máquina personalizados válidos, consulte Tipos de máquina personalizados na documentação do Compute Engine.

Tipos de máquina não compatíveis com o Hyperdisk Balanced

Quando você usa discos do Hyperdisk Balanced, seu job pode falhar com um erro semelhante ao seguinte:

hyperdisk-balanced disk type cannot be used by MACHINE_TYPE machine type

Isso acontece se você selecionar um tipo de máquina incompatível com o Hyperdisk Balanced. Esse erro também pode acontecer quando nenhum tipo de máquina é especificado ou quando você usa autoVM. Para ver uma lista de tipos de máquina compatíveis com o Hyperdisk Balanced, consulte Sobre o Hyperdisk Balanced.

Tipo de disco

O tipo de Persistent Disk a ser usado.

Não especifique um Persistent Disk ao usar o Streaming Engine ou o tipo de máquina N4.

Java

Defina a opção de pipeline workerDiskType.

Python

Defina a opção de pipeline worker_disk_type.

Go

Defina a opção de pipeline disk_type.

Para especificar o tipo de disco, use o seguinte formato: compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE.

Substitua:

  • PROJECT_ID: ID do projeto;
  • ZONE: a zona do Persistent Disk, por exemplo, us-central1-b.
  • DISK_TYPE: o tipo de disco, por exemplo, pd-ssd, pd-standard ou hyperdisk-balanced.

Para mais informações, consulte a página de referência da API Compute Engine para diskTypes.

Provisionar IOPS e capacidade de processamento

Ao usar discos do Hyperdisk Balanced, é possível provisionar IOPS e capacidade de processamento independentemente do tamanho do disco. Para provisionar IOPS e capacidade de processamento, use as seguintes opções de pipeline:

Java

  • Para provisionar IOPS, defina a opção de pipeline diskProvisionedIOPS.
  • Para provisionar a capacidade de processamento em MiB/s, defina a opção de pipeline diskProvisionedThroughput.

Python

  • Para provisionar IOPS, defina a opção de pipeline disk_provisioned_iops.
  • Para provisionar a capacidade de processamento em MiB/s, defina a opção de pipeline disk_provisioned_throughput_mibps.

Go

  • Para provisionar IOPS, defina a opção de pipeline disk_provisioned_iops.
  • Para provisionar a capacidade de processamento em MiB/s, defina a opção de pipeline disk_provisioned_throughput_mibps.

Se você não definir essas opções, os jobs que usam discos hyperdisk-balanced vão usar como padrão o desempenho de referência de 3.000 IOPS e 140 MiB/s de capacidade de processamento. Para mais informações, consulte Sobre o Hyperdisk Balanced na documentação do Compute Engine.

Limitações

  • O provisionamento de IOPS e capacidade de processamento para o Hyperdisk Balanced é compatível com as versões 2.74.0 ou mais recentes do SDK do Apache Beam.

Tamanho do disco

O tamanho do disco permanente.

Java

Defina a opção de pipeline diskSizeGb.

Python

Defina a opção de pipeline disk_size_gb.

Go

Defina a opção de pipeline disk_size_gb.

Se você definir essa opção, especifique pelo menos 30 GB para considerar a imagem de inicialização do worker e os registros locais.

Reduzir o tamanho do disco diminui a E/S de embaralhamento disponível. Os jobs vinculados ao Shuffle que não usam o Dataflow Shuffle ou o Streaming Engine podem resultar em um aumento no tempo de execução e no custo do job.

jobs em lote

Para jobs em lote que usam o Dataflow Shuffle, essa opção define o tamanho de um disco de inicialização de VM de worker. Para jobs em lote que não usam o Dataflow Shuffle, essa opção define o tamanho dos discos usados para armazenar dados embaralhados. O tamanho do disco de inicialização não é afetado.

Se um job em lote usar o Dataflow Shuffle, o tamanho padrão do disco será de 25 GB. Caso contrário, o padrão é 250 GB.

Jobs de streaming

Para jobs de streaming que usam o Streaming Engine, essa opção define o tamanho dos discos de inicialização. Para jobs de streaming que não usam o Streaming Engine, essa opção define o tamanho de cada Persistent Disk adicional criado pelo serviço do Dataflow. O disco de inicialização não é afetado.

Se um job de streaming não usar o Streaming Engine, será possível definir o tamanho do disco de inicialização com a flag de experimento streaming_boot_disk_size_gb. Por exemplo, especifique --experiments=streaming_boot_disk_size_gb=80 para criar discos de inicialização de 80 GB.

Se um job de streaming usar o Streaming Engine, o tamanho de disco padrão será de 30 GB. Caso contrário, o padrão é 400 GB.

Plataforma de CPU mínima

Se você tiver cargas de trabalho sensíveis ao desempenho que dependem de recursos específicos de CPU, especifique uma plataforma de CPU mínima para as VMs de worker. Essa opção garante que os workers do Dataflow usem um processador que atenda ou exceda a geração de CPU especificada.

Para especificar a plataforma de CPU mínima, defina a opção de pipeline experimental min_cpu_platform. O valor precisa ser o nome exato da plataforma de CPU selecionada, como AMD Milan ou Intel Ice Lake. Por exemplo, especifique --experiments=min_cpu_platform='AMD Milan' para definir a plataforma de CPU mínima como AMD Milan. Para uma lista de plataformas de CPU mínimas compatíveis, consulte Disponibilidade de plataformas de CPU. Para mais informações sobre limitações, consulte limitações ao especificar uma plataforma de CPU mínima.

Para verificar se as VMs de worker do Dataflow foram criadas com a plataforma de CPU mínima especificada, verifique as entradas de registro do Cloud Logging para o job da seguinte maneira:

  1. Acesse o console do Cloud Logging no console do Google Cloud .
  2. Use o filtro a seguir e substitua o exemplo de plataforma de CPU e o ID da tarefa do Dataflow pelas informações do seu job.

    resource.type="gce_instance"
    protoPayload.request.minCpuPlatform="AMD Milan"
    "dataflow_job_id"
    
  3. Confira os registros resultantes para confirmar que o Dataflow especificou corretamente a plataforma de CPU mínima durante o processo de criação da VM.

Usar o Cloud Storage FUSE para montar os buckets do Cloud Storage em VMs do Dataflow

O Cloud Storage FUSE permite montar os buckets do Cloud Storage diretamente com VMs do Dataflow, permitindo que o software acesse arquivos como se fossem locais. Essa integração elimina a necessidade de fazer o download prévio de dados, simplificando o acesso aos dados para suas cargas de trabalho. Para mais informações, consulte Processar dados de ML usando o Dataflow e o Cloud Storage FUSE.

A seguir