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-smallee2-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-microeg1-small, o Dataflow cobra como se eles tivessem 1 vCPU. Para os tipos de máquinae2-micro,e2-smallee2-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á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 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-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 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:
- Acesse o console do Cloud Logging no console do Google Cloud .
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"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.