Los rezagados son elementos de trabajo que ralentizan los trabajos de Dataflow, ya que impiden que estos se realicen en paralelo.
En el caso de las canalizaciones por lotes, un rezagado se define como un elemento de trabajo con las siguientes características:
- Se tarda mucho más tiempo en completarse en comparación con otros elementos de trabajo de la misma etapa.
- Reduce el paralelismo dentro de la etapa.
- Bloquea el inicio de un trabajo nuevo.
En el peor de los casos, un rezagado demora la finalización de una etapa porque un pequeño porcentaje del trabajo está en progreso, lo que causa retrasos generales en un trabajo.
Dataflow detecta rezagados que se producen durante los trabajos por lotes. Si Dataflow detecta un rezagado, también intenta determinar la causa de esta demora.
Visualiza los rezagados en la consola de Google Cloud
Después de iniciar un trabajo de Dataflow, puedes usar la consola de Google Cloud para ver los rezagados detectados.
Puedes ver los rezagados por etapa o por trabajador. Usa estas vistas para encontrar qué etapas tienen rezagados y, luego, identifica a los trabajadores en los que ocurrieron rezagados dentro de cada etapa.
Cómo ver rezagados por etapa
Para ver los rezagados por etapa, sigue estos pasos:
En la consola de Google Cloud , ve a la página Trabajos de Dataflow.
Ve a Trabajos.
Haz clic en el nombre del trabajo.
En la página de detalles del trabajo, haz clic en la pestaña Detalles de la ejecución.
En la lista Vista de gráfico, selecciona Progreso de la etapa. En el gráfico de progreso, se muestran los recuentos agregados de todos los rezagados detectados en cada etapa.

Para ver los detalles de una etapa, mantén el puntero sobre la barra de una etapa. Para ver los trabajadores de la etapa, haz clic en Ver trabajadores en el panel de detalles.
Cómo ver rezagados por trabajador
Para ver los rezagados por trabajador, haz lo siguiente:
En la consola de Google Cloud , ve a la página Trabajos de Dataflow.
Ve a Trabajos.
Haz clic en el nombre del trabajo.
En la página de detalles del trabajo, haz clic en la pestaña Detalles de la ejecución.
En la lista Vista de gráfico, selecciona Progreso de los trabajadores.
En la lista Filtrar trabajadores por etapa, selecciona la etapa. En el gráfico de progreso, se muestra cualquier rezagado que se detecte para esa etapa. La barra tiene un sombreado más oscuro en el punto en el que se detectó por primera vez al rezagado.

Para ver los detalles de un trabajador, mantén el puntero sobre la barra de ese trabajador.
En el panel Información de la etapa, la sección Detalles de la demora enumera los rezagados de todos los trabajadores que se muestran en la página, con la siguiente información:
- La hora de inicio en la que se detectó el rezagado.
- El trabajador que experimentó el rezagado.
- La causa, si se conoce.
Soluciona problemas de rezagados en trabajos por lotes
Dataflow detecta las siguientes causas de rezagados en las canalizaciones por lotes:
Clave activa. Una clave activa es una clave que representa muchos más elementos que otras en la misma
PCollection. Para obtener más información, consulta Soluciona problemas de rezagados causados por claves activas en este documento.Trabajador lento. En un trabajador lento, los elementos de trabajo se ejecutan más lento de lo normal. A menudo, la velocidad de procesamiento de un trabajador lento es menor que la velocidad de procesamiento de los trabajadores que realizan trabajos similares en la misma etapa. Muchos factores pueden causar lentitud de los trabajadores, incluida la escasez de CPU, la hiperpaginación, la arquitectura de máquina y los procesos de trabajador atascados. Cuando se produce una lentitud, Dataflow intenta mitigar el problema de forma automática. Para obtener más información, consulta Mitiga automáticamente los rezagados causados por trabajadores lentos en este documento.
Causa indefinida. Para rezagados con una causa indefinida, consulta los pasos generales de solución de problemas para trabajos por lotes lentos en "Soluciona problemas de trabajos lentos o atascados".
Soluciona problemas de rezagados causados por claves activas
Varios factores pueden causar rezagados, pero una causa común es la existencia de una
clave activa. Una clave activa es una clave que representa muchos más elementos
que otras en la misma PCollection. Las claves activas pueden crear rezagados
porque limitan la capacidad de Dataflow de procesar elementos en paralelo.
Si Dataflow detecta un rezagado que se debe a una clave activa, en el panel
Detalles de la demora se muestra la causa Hot Key.
De forma predeterminada, Dataflow no muestra el valor de la clave
activa. Para mostrar el valor de la clave, configura la opción de canalización
hotKeyLoggingEnabled
en true cuando ejecutes el trabajo.
Para resolver este problema, verifica que tus datos estén distribuidos de manera uniforme. Si una clave tiene desproporcionadamente muchos valores, considera las siguientes medidas:
- Cambia la clave de tus datos. Aplica una transformación de
ParDopara generar pares clave-valor nuevos. - Para trabajos de Java, usa la transformación de
Combine.PerKey.withHotKeyFanout. - Para trabajos de Python, usa la transformación de
CombinePerKey.with_hot_key_fanout. - Habilita Dataflow Shuffle.
Por ejemplo, si una canalización realiza una operación JOIN como parte de una transformación de SQL,
es probable que una clave determinada contenga una cantidad desproporcionada de
datos cuando se incorporan a la GroupByKey que se realiza como parte de
la operación JOIN expandida.
Para obtener más información, consulta la siguiente solicitud de función: beam-issue/28186.
Mitiga automáticamente los rezagados causados por trabajadores lentos
Los trabajadores lentos no son comunes en Dataflow, pero pueden afectar el rendimiento de los trabajos. Para evitar problemas de rendimiento, cuando Dataflow detecta trabajadores lentos, intenta mitigar el problema antes de que los trabajadores causen rezagados.
La mitigación automática simula un evento de mantenimiento del host. El evento es un mecanismo de mantenimiento de Compute Engine que ocurre con regularidad. Según la política de mantenimiento del host del trabajador, este se migra en vivo o se reinicia. Si se produce una migración en vivo, la carga de trabajo no se interrumpe. Si se reinicia el trabajador, se pierde el trabajo en curso del trabajador lento y se reinicia.
Si se detecta un trabajador lento y se mitiga de forma correcta, el siguiente mensaje se muestra en los registros job-message:
Slow worker ... detected and automatically remediated ...
Como los trabajadores lentos no son rezagados, no es necesario que realices ninguna acción.
Si la mitigación no tiene éxito, el trabajador lento genera un rezagado que se muestra en la interfaz de supervisión de Dataflow.
La mitigación automática puede fallar si tu proyecto se queda sin cuota para solicitudes de simulación de un evento de mantenimiento en instancias. Si deseas obtener más información sobre la cuota predeterminada, consulta Límites de frecuencia de la API para métricas regionales en "Cuotas de uso de recursos y administración de permisos". Para solicitar un límite de cuota más alto, consulta Solicita un ajuste de cuota en "Visualiza y administra las cuotas".
Usa la ejecución especulativa para evitar rezagados
En el caso de las canalizaciones por lotes, puedes habilitar la ejecución especulativa para mitigar el impacto de los rezagados. Para obtener más información, consulta las prácticas recomendadas para las canalizaciones por lotes grandes.
¿Qué sigue?
- Aprende a usar la interfaz de supervisión de Dataflow.
- Obtén información sobre la pestaña Detalles de la ejecución en la interfaz de supervisión.