Ajuste de escala automático horizontal

El ajuste de escala automático horizontal permite que Dataflow elija la cantidad adecuada de instancias de trabajador para tu trabajo y agregue o quite trabajadores según sea necesario. Dataflow escala en función del uso de CPU promedio de los trabajadores y del paralelismo de una canalización. El paralelismo de una canalización es una estimación de la cantidad de subprocesos necesarios para procesar los datos de la manera más eficiente en un momento determinado.

El ajuste de escala automático horizontal es compatible con canalizaciones por lotes y de transmisión.

Ajuste de escala automático por lotes

El ajuste de escala automático horizontal está habilitado de forma predeterminada en todas las canalizaciones por lotes. Dataflow elige de forma automática la cantidad de trabajadores en función de la cantidad total estimada de trabajo en cada etapa de la canalización. Esta estimación depende del tamaño de entrada y la capacidad de procesamiento actual. Cada 30 segundos, Dataflow vuelve a evaluar la cantidad de trabajo según el progreso de la ejecución. A medida que la cantidad total estimada de trabajo aumenta o disminuye, Dataflow aumenta o disminuye de forma dinámica la cantidad de trabajadores.

La cantidad de trabajadores es sublineal a la cantidad de trabajo. Por ejemplo, un trabajo con el doble de tareas tiene menos del doble de trabajadores.

Si se produce alguna de las siguientes condiciones, Dataflow mantiene o disminuye la cantidad de trabajadores para ahorrar recursos inactivos:

  • El uso promedio de CPU de los trabajadores es menor que el 5%.
  • El paralelismo se limita debido a un trabajo no paralelizable, como datos que no se pueden dividir causados por archivos comprimidos o módulos de E/S que no se dividen.
  • El grado de paralelismo es fijo, por ejemplo, cuando se escriben en archivos existentes en Cloud Storage.

Para establecer un límite superior en la cantidad de trabajadores, establece la opción de canalización --maxNumWorkers. El valor predeterminado es 2,000. Para establecer un límite inferior en la cantidad de trabajadores, establece la opción de servicio --dataflow-service-options=min_num_workers. Estas marcas son opcionales.

Ajuste de escala automático de transmisión

En los trabajos de transmisión, el ajuste de escala automático horizontal permite que Dataflow cambie la cantidad de trabajadores de forma adaptable en respuesta a los cambios en la carga y el uso de recursos.

El ajuste de escala automático horizontal está habilitado de forma predeterminada para los trabajos de transmisión que usan Streaming Engine. Para habilitar el ajuste de escala automático horizontal de trabajos de transmisión que no usan Streaming Engine, configura las siguientes opciones de canalización cuando la inicies:

Java

--autoscalingAlgorithm=THROUGHPUT_BASED
--maxNumWorkers=MAX_WORKERS

Reemplaza MAX_WORKERS por la cantidad máxima de instancias de trabajador.

Python

--autoscaling_algorithm=THROUGHPUT_BASED
--max_num_workers=MAX_WORKERS

Reemplaza MAX_WORKERS por la cantidad máxima de instancias de trabajador.

Go

--autoscaling_algorithm=THROUGHPUT_BASED
--max_num_workers=MAX_WORKERS

Reemplaza MAX_WORKERS por la cantidad máxima de instancias de trabajador.

Para establecer un límite inferior en la cantidad de trabajadores, establece la opción de servicio --dataflow-service-options=min_num_workers. Cuando estableces este valor, el ajuste de escala automático horizontal no se reduce por debajo de la cantidad de trabajadores especificada. Esta marca es opcional.

Mientras se ejecuta un trabajo de transmisión, puedes actualizar los trabajadores mínimos y máximos con una actualización de trabajo en curso. Para ajustar la configuración, establece las marcas min-num-workers y max-num-workers. Para obtener más información, consulta Actualiza el rango de ajuste de escala automático.

Inhabilita el ajuste de escala automático horizontal

Para inhabilitar el ajuste de escala automático horizontal, configura la siguiente opción de canalización cuando ejecutes el trabajo.

Java

--autoscalingAlgorithm=NONE

Si inhabilitas el ajuste de escala automático horizontal, Dataflow establece la cantidad de trabajadores según la opción --numWorkers.

Python

--autoscaling_algorithm=NONE

Si inhabilitas el ajuste de escala automático horizontal, Dataflow establece la cantidad de trabajadores según la opción --num_workers.

Go