Dataflow Shuffle para trabajos por lotes

Los trabajos por lotes usan Dataflow Shuffle de forma predeterminada. Dataflow Shuffle traslada la operación de redistribución fuera de las VMs de trabajador y la traslada al backend del servicio de Dataflow.

Información acerca de Dataflow Shuffle

  • 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.

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 VMs no contienen datos aleatorios y, por lo tanto, se puede reducir la escala verticalmente de forma anticipada.
  • Mejor tolerancia a errores, ya que una VM en mal estado que contenga datos de Dataflow Shuffle no causará que falle todo el trabajo.

Asistencia y limitaciones

  • El ordenamiento aleatorio de Dataflow no está disponible para los trabajos de transmisión.
  • 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. Puede haber diferencias de rendimiento entre las regiones.
  • Los trabajadores deben implementarse en la misma región que el trabajo de Dataflow.
  • No especifiques la opción de canalización zone. En su lugar, especifica el 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, la tarea de Dataflow muestra un error. Si configuras una combinación incompatible de region y zone, tu trabajo no puede usar Dataflow Shuffle.

  • En Python, Dataflow Shuffle requiere el SDK de Apache Beam para la versión 2.1.0 o posterior de Python.

Consideraciones sobre el tamaño del disco

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 del 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.

Precios

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.