Configura VMs de trabajador de Dataflow

En este documento, se describe cómo configurar las VMs de trabajador para un trabajo de Dataflow.

De forma predeterminada, Dataflow selecciona el tipo de máquina para las VMs de trabajador que ejecutan tu trabajo, junto con el tamaño y el tipo de Persistent Disk. Para configurar las VMs de trabajador, establece las siguientes opciones de canalización cuando crees el trabajo.

Tipo de máquina

El tipo de máquina de Compute Engine que usa Dataflow cuando inicia las VMs de trabajador. Puedes usar tipos de máquinas x86 o Arm, incluidos los tipos personalizados de máquinas.

Java

Establece la opción de canalización workerMachineType.

Python

Establece la opción de canalización machine_type.

Go

Establece la opción de canalización worker_machine_type.

  • Para Arm, se admiten las series de máquinas Tau T2A y C4A. Para obtener más información sobre el uso de VMs de Arm, consulta Usa VMs de Arm en Dataflow.

  • Las VMs x86 se admiten automáticamente.

  • No se recomiendan los tipos de máquinas de núcleo compartido (por ejemplo, f1-micro, g1-small, e2-micro, e2-small y e2-medium) para los trabajos de Dataflow y no son compatibles con el Acuerdo de Nivel de Servicio de Dataflow.

  • La facturación es independiente de la familia de tipo de máquina. Para obtener más información, consulta Precios de Dataflow.

  • Para los tipos de máquinas f1-micro y g1-small, Dataflow factura como si tuvieran 1 CPU virtual, y para los tipos de máquinas e2-micro, e2-small y e2-medium, Dataflow factura como si tuvieran 2 CPUs virtuales. Estos índices se facturan incluso si los tipos de máquinas de núcleo compartido proporcionan menos de sus CPUs virtuales facturadas de tiempo de CPU sostenido.

Tipos personalizados de máquinas

Para especificar un tipo personalizado de máquina, usa el siguiente formato: FAMILY-vCPU-MEMORY. Reemplaza lo siguiente:

  • FAMILY. Usa uno de los siguientes valores:
    Series de máquinasValor
    N1custom
    N2n2-custom
    N2Dn2d-custom
    E2e2-custom
  • vCPU. Es la cantidad de CPU virtuales.
  • MEMORY. Es la memoria, en MB.

Para habilitar la memoria extendida, agrega -ext al tipo de máquina. Ejemplos: n2-custom-6-3072, n2-custom-2-32768-ext.

Para obtener más información sobre los tipos personalizados de máquinas válidos, consulta Tipos personalizados de máquinas en la documentación de Compute Engine.

Tipos de máquinas no compatibles con Hyperdisk Balanced

Cuando usas discos Hyperdisk Balanced, es posible que tu trabajo falle con un error similar al siguiente:

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

Esto sucede si seleccionas un tipo de máquina que no es compatible con Hyperdisk Balanced. Este error también puede ocurrir cuando no se especifica ningún tipo de máquina o cuando usas autoVM. Para obtener una lista de los tipos de máquinas compatibles con Hyperdisk Balanced, consulta Acerca de Hyperdisk Balanced.

Tipo de disco

Es el tipo de Persistent Disk que se usará.

No especifiques un Persistent Disk cuando uses Streaming Engine o el tipo de máquina N4 .

Java

Establece la opción de canalización workerDiskType.

Python

Establece la opción de canalización worker_disk_type.

Go

Establece la opción de canalización disk_type.

Para especificar el tipo de disco, usa el siguiente formato: compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE.

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto.
  • ZONE: Es la zona del Persistent Disk, por ejemplo, us-central1-b.
  • DISK_TYPE: Es el tipo de disco, por ejemplo, pd-ssd, pd-standard o hyperdisk-balanced.

Si quieres obtener más información, consulta la página de referencia de la API de Compute Engine para diskTypes.

Aprovisiona IOPS y capacidad de procesamiento

Cuando usas discos Hyperdisk Balanced, puedes aprovisionar IOPS y capacidad de procesamiento de forma independiente del tamaño del disco. Para aprovisionar IOPS y capacidad de procesamiento, usa las siguientes opciones de canalización:

Java

  • Para aprovisionar IOPS, establece la opción de canalización diskProvisionedIOPS.
  • Para aprovisionar la capacidad de procesamiento en MiB/s, establece la opción de canalización diskProvisionedThroughput.

Python

  • Para aprovisionar IOPS, establece la opción de canalización disk_provisioned_iops.
  • Para aprovisionar la capacidad de procesamiento en MiB/s, establece la opción de canalización disk_provisioned_throughput_mibps.

Go

  • Para aprovisionar IOPS, establece la opción de canalización disk_provisioned_iops.
  • Para aprovisionar la capacidad de procesamiento en MiB/s, establece la opción de canalización disk_provisioned_throughput_mibps.

Si no estableces estas opciones, los trabajos que usan discos hyperdisk-balanced se establecen de forma predeterminada en el rendimiento de referencia de 3,000 IOPS y 140 MiB/s de capacidad de procesamiento. Para obtener más información, consulta Acerca de Hyperdisk Balanced en la documentación de Compute Engine.

Limitaciones

  • El aprovisionamiento de IOPS y capacidad de procesamiento para Hyperdisk Balanced es compatible con las versiones 2.74.0 o posteriores del SDK de Apache Beam.

Tamaño del disco

Es el tamaño del Persistent Disk.

Java

Establece la opción de canalización diskSizeGb.

Python

Establece la opción de canalización disk_size_gb.

Go

Establece la opción de canalización disk_size_gb.

Si estableces esta opción, especifica al menos 30 GB para tener en cuenta la imagen de arranque del trabajador y los registros locales.

Reducir el tamaño del disco disminuye la redistribución de E/S disponible. Los trabajos vinculados a Shuffle que no usan Dataflow Shuffle o Streaming Engine pueden aumentar el entorno de ejecución y el costo del trabajo.

los trabajos por lotes

Para los trabajos por lotes que usan Dataflow Shuffle, esta opción establece el tamaño del disco de arranque de una VM de trabajador. En los trabajos por lotes que no usan Dataflow Shuffle, esta opción establece el tamaño de los discos que se usan para almacenar datos aleatorios; el tamaño del disco de arranque no se ve afectado.

Si un trabajo por lotes usa Dataflow Shuffle, el tamaño del disco predeterminado es de 25 GB. De lo contrario, el valor predeterminado es 250 GB.

Trabajos de transmisión

En los trabajos de transmisión que usan Streaming Engine, esta opción establece el tamaño de los discos de arranque. En los trabajos de transmisión que no usan Streaming Engine, esta opción establece el tamaño de cada Persistent Disk adicional que crea el servicio de Dataflow; el disco de arranque no se ve afectado.

Si un trabajo de transmisión no usa Streaming Engine, puedes establecer el tamaño del disco de arranque con la marca del experimento streaming_boot_disk_size_gb. Por ejemplo, especifica --experiments=streaming_boot_disk_size_gb=80 para crear discos de arranque de 80 GB.

Si un trabajo de transmisión usa Streaming Engine, el tamaño del disco predeterminado es de 30 GB. De lo contrario, el valor predeterminado es 400 GB.

Plataforma de CPU mínima

Si tienes cargas de trabajo sensibles al rendimiento que dependen de funciones específicas de la CPU, puedes especificar una plataforma de CPU mínima para las VMs de trabajador. Esta opción garantiza que los trabajadores de Dataflow usen un procesador que cumpla o supere la generación de CPU especificada.

Para especificar la plataforma de CPU mínima, establece la min_cpu_platform opción de canalización experimental. El valor debe ser el nombre exacto de la plataforma de CPU seleccionada, como AMD Milan o Intel Ice Lake. Por ejemplo, especifica --experiments=min_cpu_platform='AMD Milan' para establecer la plataforma de CPU mínima en AMD Milan. Para obtener una lista de las plataformas de CPU mínimas compatibles, consulta Disponibilidad de plataformas de CPU. Para obtener información sobre las limitaciones, consulta Limitaciones cuando se especifica una plataforma de CPU mínima.

Para verificar que las VMs de trabajador de Dataflow se creen con la plataforma de CPU mínima especificada, verifica las entradas de Cloud Logging para el trabajo de la siguiente manera:

  1. Navega a la consola de Cloud Logging en la Google Cloud consola.
  2. Usa el siguiente filtro y reemplaza la plataforma de CPU de ejemplo y el ID del trabajo de Dataflow por la información de tu trabajo.

    resource.type="gce_instance"
    protoPayload.request.minCpuPlatform="AMD Milan"
    "dataflow_job_id"
    
  3. Observa los registros resultantes para confirmar que Dataflow especificó correctamente la plataforma de CPU mínima durante el proceso de creación de la VM.

Usa Cloud Storage FUSE para activar tus buckets de Cloud Storage en VMs de Dataflow

Cloud Storage FUSE te permite activar tus buckets de Cloud Storage directamente con las VMs de Dataflow, lo que permite que el software acceda a los archivos como si fueran locales. Esta integración elimina la necesidad de descargar datos previamente, lo que optimiza el acceso a los datos para tus cargas de trabajo. Para obtener más información, consulta Procesa datos de AA con Dataflow y Cloud Storage FUSE.

¿Qué sigue?