Usa Dataflow Shuffle para trabajos por lotes

Dataflow Shuffle es la operación base detrás de las transformaciones de Dataflow, como GroupByKey, CoGroupByKey y Combine. La operación de Dataflow Shuffle particiona y agrupa los datos por clave de forma escalable, eficiente y tolerante a errores. La función Dataflow Shuffle (disponible solo para canalizaciones por lotes) retira la operación de Shuffle de las VMs de trabajador y la traslada al backend del servicio de Dataflow.

Los trabajos por lotes usan Dataflow Shuffle de forma predeterminada.

Beneficios de Dataflow Shuffle

Dataflow Shuffle está basado en servicios y tiene los siguientes beneficios:

  • Tiempo de ejecución más rápido de las canalizaciones por lotes para la mayoría de los tipos de trabajo de canalización.
  • Reducción en los recursos consumidos de CPU, memoria y almacenamiento en Persistent Disk en las VMs de trabajador.
  • Mejor ajuste de escala automático horizontal porque las VM no contienen datos aleatorios y, por lo tanto, se puede reducir la escala verticalmente de forma anticipada.
  • Mejor tolerancia a errores: una VM en mal estado que contenga datos de Dataflow Shuffle no hará que falle todo el trabajo, como sucedería si no se usara esta característica.

La mayor parte de la reducción de los recursos de los trabajadores proviene de derivar el trabajo de redistribución en el servicio de Dataflow. Por ese motivo, existe una carga asociada con el uso de Dataflow Shuffle. Sin embargo, la duración puede variar de una ejecución a otra. Si ejecutas una canalización que tiene plazos importantes, recomendamos que asignes suficiente tiempo de búfer antes del plazo.

Usa Dataflow Shuffle

Esta característica está disponible en todas las regiones en las que Dataflow sea compatible. Para ver las ubicaciones disponibles, consulta la página Ubicaciones de Dataflow. Si usas Dataflow Shuffle, los trabajadores deben implementarse en la misma región que el trabajo de Dataflow.

Java

Si usas Dataflow Shuffle para tu canalización, no especifiques las opciones de canalización zone. En su lugar, especifica region y establece el valor en una de las regiones disponibles. Dataflow selecciona de forma automática la zona en la región especificada. Si especificas la opción de canalización zone y la configuras en una zona fuera de las regiones disponibles, Dataflow informará un error. Si configuras una combinación incompatible de region y zone, tu trabajo no puede usar Dataflow Shuffle.

Python

Si usas Dataflow Shuffle para tu canalización, no especifiques las opciones de canalización zone. En su lugar, especifica region y establece el valor en una de las regiones disponibles. Dataflow selecciona de forma automática la zona en la región especificada. Si especificas la opción de canalización zone y la configuras en una zona fuera de las regiones disponibles, Dataflow informará un error. Si configuras una combinación incompatible de region y zone, tu trabajo no puede usar Dataflow Shuffle.

Comienza a usarlo

Si usas Dataflow Shuffle para tu canalización, no especifiques las opciones de canalización zone. En su lugar, especifica region y establece el valor en una de las regiones disponibles. Dataflow selecciona de forma automática la zona en la región especificada. Si especificas la opción de canalización zone y la configuras en una zona fuera de las regiones disponibles, Dataflow informará un error. Si configuras una combinación incompatible de region y zone, tu trabajo no puede usar Dataflow Shuffle.

El tamaño predeterminado del disco de arranque para cada trabajo por lotes es de 25 GB. En algunos trabajos por lotes, es posible que debas modificar el tamaño del disco. Tenga en cuenta lo siguiente:

  • Una VM de trabajador usa parte de los 25 GB de espacio en disco para el sistema operativo, los archivos binarios, los registros y los contenedores. Los trabajos que usan una cantidad significativa de disco y exceden la capacidad restante de este pueden fallar cuando usas Dataflow Shuffle.
  • Los trabajos que usan una gran cantidad de E/S de disco pueden ser lentos debido al rendimiento del disco pequeño. Para obtener más información sobre las diferencias de rendimiento entre los tamaños de disco, consulta Rendimiento de disco persistente de Compute Engine.

A fin de especificar un tamaño de disco más grande para un trabajo de Dataflow Shuffle, puedes usar el parámetro --disk_size_gb.