Las tareas por lotes usan Dataflow Shuffle de forma predeterminada. Dataflow Shuffle traslada la operación Shuffle fuera de las máquinas virtuales de trabajadores y la ubica en el backend del servicio Dataflow.
La información de esta página se aplica a los trabajos por lotes. Las tareas de streaming usan un mecanismo de aleatorización diferente, llamado aleatorización de streaming.
Acerca de Shuffle de Dataflow
- Dataflow Shuffle es la operación básica que hay detrás de las transformaciones de Dataflow, como
GroupByKey
,CoGroupByKey
yCombine
. - La operación Shuffle de Dataflow particiona y agrupa los datos por clave de manera escalable, eficiente y tolerante a fallos.
Ventajas de Dataflow Shuffle
El shuffle de Dataflow basado en servicios ofrece las siguientes ventajas:
- Tiempo de ejecución más rápido de las canalizaciones por lotes para la mayoría de los tipos de tareas de canalización.
- Una reducción de los recursos de CPU, memoria y almacenamiento de disco persistente consumidos en las VMs de los trabajadores.
- Mejor escalado horizontal automático, ya que las VMs no contienen datos de aleatorización y, por lo tanto, se pueden reducir antes.
- Mayor tolerancia a fallos, ya que una máquina virtual en mal estado que contenga datos de aleatorización de Dataflow no provoca que falle toda la tarea.
Compatibilidad y limitaciones
- Esta función está disponible en todas las regiones en las que se admite Dataflow. Para ver las ubicaciones disponibles, consulta el artículo sobre ubicaciones de Dataflow. Puede haber diferencias de rendimiento entre regiones.
- Los trabajadores deben desplegarse en la misma región que el trabajo de Dataflow.
No especifique la opción
zone
del flujo de procesamiento. En su lugar, especifique elregion
y asigne el valor a una de las regiones disponibles. Dataflow selecciona automáticamente la zona de la región que hayas especificado.Si especificas la opción
zone
pipeline y la asignas a una zona que no se encuentra en las regiones disponibles, la tarea de Dataflow devuelve un error. Si defines una combinación incompatible deregion
yzone
, tu trabajo no podrá usar el orden aleatorio de Dataflow.En Python, el orden aleatorio de Dataflow requiere la versión 2.1.0 o posterior del SDK de Apache Beam para Python.
Consideraciones sobre el tamaño del disco
El tamaño de disco de arranque predeterminado de cada tarea por lotes es de 25 GB. En algunas tareas por lotes, es posible que tengas que modificar el tamaño del disco. Ten en cuenta lo siguiente:
- Una máquina virtual 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 superan la capacidad de disco restante pueden fallar cuando se usa el orden aleatorio de Dataflow.
- Los trabajos que usan muchas operaciones 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 la página Rendimiento de los discos persistentes de Compute Engine.
Para especificar un tamaño de disco mayor para una tarea de Shuffle de Dataflow, puedes usar el parámetro --disk_size_gb
.
Precios
La mayor parte de la reducción de los recursos de los trabajadores se debe a la descarga del trabajo de orden aleatorio en el servicio Dataflow. Por este motivo, se aplica un cargo por usar el orden aleatorio de Dataflow. Los tiempos de ejecución pueden variar de una ejecución a otra. Si estás ejecutando una pipeline que tiene plazos importantes, te recomendamos que asignes suficiente tiempo de margen antes de la fecha límite.