Com a personalização das VMs de worker, é possível adaptar os recursos de computação e armazenamento aos requisitos de memória e processamento do seu 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 seu 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 e C4A são compatíveis. Para mais informações sobre o uso de VMs ARM, consulte Usar VMs ARM no Dataflow.
As VMs x86 são compatíveis automaticamente.
Os tipos de máquina com núcleo compartilhado (por exemplo,
f1-micro,g1-small,e2-micro,e2-smallee2-medium) não são recomendados para jobs do Dataflow e não são aceitos no 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-microeg1-small, o Dataflow cobra como se eles tivessem uma vCPU. Para os tipos de máquinae2-micro,e2-smallee2-medium, o Dataflow cobra como se eles tivessem duas vCPUs. Essas taxas são cobradas mesmo que os tipos de máquina com núcleo compartilhado forneçam menos vCPUs do que o tempo de CPU sustentado cobrado.
Tipos de máquina personalizados
Para especificar um tipo de máquina personalizado, use o seguinte formato:
FAMILY-vCPU-MEMORY. Substitua:
- FAMILY. Use um dos seguintes valores:
Série de máquina Valor N1 customN2 n2-customN2D n2d-customE2 e2-custom - vCPU: o número de vCPUs.
- MEMORY: a memória, em MB.
Para ativar a memória estendida, adicione -ext ao tipo de máquina. Exemplos: n2-custom-6-3072,
n2-custom-2-32768-ext.
Para mais informações sobre tipos de máquinas personalizados válidos, consulte Tipos de máquinas personalizados na documentação do Compute Engine.
Tipos de máquina não compatíveis com o Hyperdisk Balanced
Quando você usa discos Hyperdisk Balanced, seu job pode falhar com um erro semelhante a este:
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 Balanceado. Esse erro também pode ocorrer quando nenhum tipo de máquina é especificado ou quando você usa o autoVM. Para uma lista de tipos de máquinas 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-standardouhyperdisk-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 Hyperdisk Balanced, é possível provisionar IOPS e capacidade de processamento independente 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 Provisionada 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 Provisionada 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 Provisionada 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 por padrão o desempenho de referência de 3.000 IOPS e capacidade de processamento de 140 MiB/s. 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.
Diminuir o tamanho do disco reduz a E/S de embaralhamento disponível. Jobs vinculados ao Shuffle que não usam o Dataflow Shuffle ou o Streaming Engine podem resultar em aumento do tempo de execução e do 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 da 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, defina 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 da 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 mínima de CPU, 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 das plataformas de CPU mínimas compatíveis, consulte
Disponibilidade de plataformas de CPU.
Para 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, confira as entradas de registro do Cloud Logging do job da seguinte maneira:
- Acesse o console do Cloud Logging no console do Google Cloud .
Use o filtro a seguir e substitua a plataforma de CPU e o ID da tarefa do Dataflow de exemplo pelas informações do seu job.
resource.type="gce_instance" protoPayload.request.minCpuPlatform="AMD Milan" "dataflow_job_id"Analise os registros resultantes para confirmar se o Dataflow especificou a plataforma de CPU mínima durante o processo de criação da VM.
Usar o Cloud Storage FUSE para ativar seus buckets do Cloud Storage em VMs do Dataflow
O Cloud Storage FUSE permite ativar seus buckets do Cloud Storage diretamente com VMs do Dataflow, permitindo que o software acesse arquivos como se eles fossem locais. Essa integração elimina a necessidade de pré-download de dados, simplificando o acesso a dados para suas cargas de trabalho. Para mais informações, consulte Processar dados de ML usando o Dataflow e o Cloud Storage FUSE.