Los rezagados son elementos de trabajo que impiden que el trabajo de Dataflow se realice en paralelo y lo ralentiza.
Un conjunto es 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 retraso 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 retrasos que se producen durante los trabajos por lotes. Si Dataflow detecta una demora, también intenta determinar la causa de esta demora.
Ver demorados en la interfaz de supervisión de Dataflow
Después de iniciar un trabajo de Dataflow, puedes usar la consola de Google Cloud para ver los retrasos demorados.
Puedes ver los demorados por etapa o por trabajador. Usa estas vistas para encontrar qué etapas tienen demora y, luego, identifica a los trabajadores en los que ocurrieron las demoraciones dentro de cada etapa.
Ver demorados por etapa
Para ver las demoras 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 Graph view, selecciona Stage stage. En el gráfico de progreso, se muestran los recuentos agregados de todas las demoras detectadas en cada etapa.
Para ver los detalles de una etapa, coloque el cursor sobre la barra de esta. Para ver los trabajadores de la etapa, haz clic en Ver trabajadores en el panel de detalles.
Ver demorados por trabajador
Para ver los demorados 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 del trabajador.
En la lista Filtrar trabajadores por etapa (Filter trabajadores por etapa), selecciona la etapa. En el gráfico de progreso, se muestra cualquier demora 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 la demora.
Para ver los detalles de un trabajador, coloca el cursor sobre la barra de ese trabajador.
En el panel Información de la etapa, la sección Detalles de la etapa enumera las demoras 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 retraso.
- El trabajador que experimentó la demora.
- La causa, si se conoce.
Retrasos en la solución de problemas
Dataflow detecta las siguientes causas de demora.
Clave de acceso rápido. 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 Solución de problemas de demora demorados por claves de acceso rápido en este documento.Causa indefinida. Para demora con una causa indeterminada, consulta los pasos generales de solución de problemas para trabajos por lotes lentos en el documento Solución de problemas y depuración de canalización.
Soluciona problemas demorados causados por las teclas de acceso rápido
Varios factores pueden causar retrasos, pero una causa común es la existencia de una clave activa. Una clave de acceso rápido es una clave que representa muchos más elementos que otras claves en el mismo PCollection
. Las claves de acceso rápido pueden crear retrasos que limitan la capacidad de Dataflow de procesar elementos en paralelo.
Si Dataflow detecta una demora que se debe a una clave de acceso rápido, en el panel Detalles de demora se muestra la causa Hot Key
.
De forma predeterminada, Dataflow no muestra el valor de la clave de acceso rápido. 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
ParDo
para 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.
¿Qué sigue?
- Aprende a usar la interfaz de supervisión de Dataflow.
- Obtén información de la pestaña Detalles de la ejecución en la interfaz de supervisión.