Acerca del detector de cuello de botella de Dataflow

Detección de cuellos de botella en la consola debido a operaciones con tiempos de procesamiento largos.

Usa el detector de cuellos de botella de Dataflow para diagnosticar los bloqueos de progreso y optimizar el rendimiento de las canalizaciones en tus trabajos de transmisión de Dataflow. El detector destaca automáticamente los componentes de tus canalizaciones de datos que limitan la capacidad de procesamiento y causan tareas pendientes.

Al identificar la ubicación exacta y la causa probable de las demoras en la ejecución, el detector de cuellos de botella te permite solucionar problemas de canalizaciones de transmisión complejas de Apache Beam sin conjeturas de prueba y error.

Cómo funciona la detección de cuellos de botella

Las canalizaciones de transmisión suelen constar de una secuencia de pasos conectados por colas. Los datos fluyen de forma secuencial desde las fuentes ascendentes a través de transformaciones intermedias hasta los receptores descendentes.

En muchas canalizaciones, la capacidad de procesamiento general está limitada por un solo componente o paso, lo que crea un cuello de botella o una desaceleración en el progreso del trabajo. Si un componente descendente no puede procesar los datos tan rápido como un componente ascendente los produce, la cola entre ellos comienza a llenarse. Por ejemplo, si un componente de ordenamiento aleatorio de transmisión ascendente produce datos más rápido de lo que una DoFn definida por el usuario descendente lenta puede procesarlos, la cola se llena.

Con el tiempo, esta demora afecta todos los pasos de una canalización. Las tareas pendientes aumentan en sentido ascendente y, finalmente, limitan la velocidad a la que la canalización puede ingerir y procesar la entrada de la fuente original. Este comportamiento se denomina propagación de tareas pendientes.

Cuando se produce la propagación de tareas pendientes, varias etapas de la canalización pueden parecer poco saludables o lentas, aunque solo un paso esté causando la restricción subyacente. El detector de cuellos de botella supervisa continuamente las demoras en la ejecución en todos los componentes, incluidos los siguientes:

  • Ordenamientos aleatorios de transmisión
  • Funciones definidas por el usuario (subprocesos DoFn)
  • Confirmaciones de estado persistente

Cuando un componente experimenta una demora en el procesamiento que supera los cinco minutos, el detector de cuellos de botella de Dataflow lo registra como un cuello de botella. Destaca el paso en el gráfico de ejecución del trabajo y proporciona información de diagnóstico detallada.

Tipos de cuellos de botella

Detección de cuellos de botella en la consola debido a claves populares o paralelismo de claves insuficiente

Cuando un cuello de botella está activo, el detector de cuellos de botella lo clasifica en uno de los siguientes estados:

  • El procesamiento se atascó y no avanza: El progreso de la canalización se detiene por completo en el paso afectado.
  • El procesamiento está en curso, pero se está retrasando: El paso actual está funcionando, pero no puede procesar los datos entrantes tan rápido como llegan, lo que genera una acumulación de tareas pendientes.
  • El procesamiento está en curso, pero las tareas pendientes son constantes: El paso procesa los datos a una velocidad igual a la velocidad de entrada. Las tareas pendientes no aumentan, pero siguen siendo elevadas.
  • El procesamiento está en curso y se está poniendo al día con las tareas pendientes: El paso borra correctamente las tareas pendientes. Si inicias una canalización con tareas pendientes existentes, este estado es normal y no requiere intervención.

Para obtener más información sobre cómo ver los diagnósticos del detector de cuellos de botella y cómo abordarlos, consulta Detecta y resuelve cuellos de botella.

¿Qué sigue?