Usa la interfaz de supervisión de Dataflow

Cuando ejecutas tu canalización con el servicio administrado de Dataflow, puedes ver ese trabajo y cualquier otro mediante la interfaz de usuario de supervisión de Dataflow basada en la Web. La interfaz de supervisión te permite ver tus trabajos de Dataflow y también interactuar con ellos.

Puedes acceder a la interfaz de supervisión de Dataflow mediante Google Cloud Console. La interfaz de supervisión te puede mostrar la siguiente información:

  • Una lista de todos los trabajos de Dataflow que se están ejecutando y los trabajos que se ejecutaron anteriormente en los últimos 30 días
  • Una representación gráfica de cada canalización
  • Detalles sobre el estado de tu trabajo, tipo y versión del SDK
  • Vínculos a la información sobre los servicios de Google Cloud en ejecución en tu canalización, como Compute Engine y Cloud Storage
  • Cualquier error o advertencia que suceda durante un trabajo
  • Diagnóstico adicional para un trabajo.

Puede ver gráficos de supervisión de trabajos en la interfaz de supervisión de Dataflow. Estos gráficos muestran métricas sobre la duración de un trabajo de canalización e incluyen la siguiente información:

  • Visibilidad paso a paso para ayudar a identificar qué etapas de la canalización pueden estar causando un retraso
  • Información estadística que puede revelar comportamientos anómalos
  • Métricas de E/S que pueden ayudarte a identificar cuellos de botella en tus fuentes y receptores

Accede a la interfaz de supervisión de Dataflow

Para acceder a la interfaz de supervisión de Dataflow, sigue estos pasos:

  1. Accede a la consola.
  2. Selecciona tu proyecto de Google Cloud.
  3. Abre el Menú de navegación.
  4. En Macrodatos, haz clic en Dataflow.

Aparecerá una lista de trabajos de Dataflow junto con su estado. Si no ves ningún trabajo, debes ejecutar uno nuevo. Para obtener información sobre cómo ejecutar un trabajo, consulta las guías de inicio rápido de Dataflow.

Una lista de trabajos de Dataflow con trabajos en los estados en ejecución, con errores y finalizado de manera correcta.
Figura 1: Lista de los trabajos de Dataflow en la consola con trabajos en los estados de ejecución, con errores y finalizado de manera correcta.

Un trabajo puede tener los siguientes estados:

  • : La interfaz de supervisión aún no recibió un estado del servicio Dataflow.
  • En ejecución: el trabajo está en ejecución.
  • Iniciando…: Se crea el trabajo, pero el sistema necesita tiempo para prepararse antes de iniciarlo.
  • En cola: un trabajo de FlexRS está en cola o un trabajo de plantilla flexible se lanza (que puede tardar varios minutos).
  • Cancelando…: El trabajo se está cancelando.
  • Cancelado: el trabajo se canceló.
  • Desviando…: el trabajo se está desviando.
  • Desviado: el trabajo se desvió.
  • Actualizando…: el trabajo se está actualizando.
  • Actualizado: el trabajo se actualizó.
  • Finalizado de manera correcta: el trabajo finalizó correctamente.
  • Con errores: No se pudo completar el trabajo.

Para obtener más información sobre una canalización, haz clic en el Nombre de ese trabajo.

Accede a gráficos de supervisión de trabajos

Para acceder a los gráficos de supervisión de un trabajo, haz clic en el nombre del trabajo en la interfaz de supervisión de Dataflow. Se muestra la página Detalles del trabajo, que contiene la siguiente información:

  • Grafo de trabajo: Es la representación visual de tu canalización.
  • Detalles de ejecución: Es la herramienta para optimizar el rendimiento de la canalización.
  • Métricas de empleo: Son las métricas sobre la ejecución de tu trabajo.
  • Panel Información del trabajo: información descriptiva sobre tu canalización
  • Registros de trabajos: registros generados por el servicio de Dataflow en el nivel del trabajo
  • Registros de trabajadores: registros generados por el servicio de Dataflow a nivel del trabajador
  • Diagnóstico: Es la tabla que muestra dónde se produjeron errores a lo largo del cronograma elegido y las posibles recomendaciones para tu canalización.
  • Selector de tiempo: herramienta que te permite ajustar el intervalo de tiempo de tus métricas

En la página Detalles del trabajo, puedes cambiar la vista de trabajo con el Grafo de trabajo, los Detalles de ejecución y las métricas de trabajo..

Vista de la interfaz de supervisión de Dataflow con la pestaña de grafo de trabajos seleccionada. En este modo, puedes ver el grafo de la canalización, la información del trabajo, los registros de trabajo, los registros de trabajadores, el diagnóstico y la herramienta de selección de tiempo.

Vista de la interfaz de supervisión de Dataflow con la pestaña Métricas de trabajos seleccionada.
En este modo, puede ver los gráficos de métricas de trabajos, la información de trabajos, los registros de trabajos, los registros de trabajadores, el diagnóstico y la herramienta de selección de tiempo.

Crea alertas de Cloud Monitoring

Dataflow está completamente integrado en Cloud Monitoring, lo que te permite crear alertas cuando tu trabajo supera un umbral definido por el usuario. Para crear una alerta de Cloud Monitoring a partir de un gráfico de métricas, haz clic en Crear política de alertas.

El vínculo **Crear política de alertas** te permite crear una alerta a partir de un gráfico de métricas.

Si quieres obtener instrucciones a fin de crear estas alertas, consulta la página Usa Cloud Monitoring para canalizaciones de Dataflow. Si no puedes ver los grafos de supervisión o crear alertas, es posible que necesites permisos de Monitoring adicionales.

Modo de pantalla completa

Para ver un gráfico de métricas en pantalla completa, haz clic en .

Usa la herramienta de selección de tiempo

Puedes ajustar el período de las métricas con la herramienta de selección de tiempo. Puedes seleccionar una duración predefinida o seleccionar un intervalo de tiempo personalizado para analizar tu trabajo.

La herramienta de selección de tiempo te permite seleccionar un intervalo de tiempo con incrementos de hora y día, o un rango personalizado.

Para las transmisiones o los trabajos por lotes en curso, la visualización predeterminada de los gráficos muestra las seis horas anteriores de las métricas de ese trabajo. En el caso de los trabajos de transmisión detenidos o completados, la visualización predeterminada de los gráficos muestra todo el tiempo de ejecución que haya durado el trabajo.

Métricas de etapas y trabajadores

Puedes ver gráficos en la pestaña Job metrics de la IU de Dataflow. Cada métrica se organiza en los siguientes paneles:

Métricas generales

Métricas de transmisión (solo canalizaciones de transmisión)

Métricas de recursos

Métricas de entradas

Métricas de salidas

Para acceder a información adicional en estos gráficos, haz clic en el botón “Expandir la leyenda del gráfico”.

El botón para activar o desactivar la leyenda se encuentra cerca del botón Crear política de alertas.

Algunos de estos gráficos son específicos solo de las canalizaciones de transmisión. En la sección usa las métricas de supervisión de Dataflow de transmisión, puedes encontrar una lista de situaciones en las que estas métricas pueden ser útiles para la depuración.

Ajuste de escala automático

El servicio de Dataflow elige automáticamente la cantidad de instancias de trabajadores necesarias para ejecutar el trabajo de ajuste de escala automático. La cantidad de instancias de trabajador puede variar con el tiempo según los requisitos del trabajo.

Una visualización de datos que muestra la cantidad de trabajadores en una canalización.

Para ver el historial de los cambios del ajuste de escala automático, haz clic en el botón Más historial. Se muestra una tabla con información sobre el historial de trabajadores de tu canalización.

Una tabla que muestra el historial del historial de trabajadores de una canalización.

Capacidad de procesamiento

La capacidad de procesamiento es el volumen de datos que se procesan en cualquier momento. Esta métrica por paso se muestra como una cantidad de elementos por segundo. Para ver esta métrica en bytes por segundo, desplázate hacia abajo hasta el gráfico Capacidad de procesamiento (bytes/s).

Una visualización de datos que muestra la capacidad de procesamiento de cuatro pasos de una canalización.

Recuento de registros de error de los trabajadores

El Worker error log count (Recuento de registros de errores de los trabajadores) muestra la tasa de errores observados en todos los trabajadores en cualquier momento.

Un resumen de cada error registrado y la cantidad de veces que sucedió.

Actualidad de los datos (con y sin Streaming Engine)

La métrica de actualidad de los datos muestra la diferencia en segundos entre la marca de tiempo del elemento de datos y la hora en que se procesa el evento en la canalización. El elemento de datos recibe una marca de tiempo cuando se produce un evento en el elemento, como un clic en un sitio web o una transferencia de Pub/Sub. La hora en que se procesan los datos es la marca de agua de salida.

En cualquier momento, el trabajo de Dataflow procesa varios elementos. Los datos del gráfico de actualidad de los datos muestran el elemento con el retraso más grande en relación con el tiempo del evento. Por lo tanto, la misma línea del gráfico muestra los datos de varios elementos, con cada dato en la línea que muestra los datos del elemento más lento en esa etapa de la canalización.

Si aún no se han procesado algunos datos de entrada, la marca de agua de salida puede retrasarse, lo que afecta la actualidad de los datos. Una diferencia significativa entre la hora de la marca de agua y la hora del evento indica que la operación es lenta.

Para obtener más información, consulta Marcas de agua y datos tardíos en la documentación de Apache Beam.

El panel incluye los siguientes dos gráficos:

  • Actualidad de los datos por etapas
  • Actualidad de los datos

Visualización de datos que muestra la novedad de los datos en una canalización de transmisión.

En la imagen anterior, en el área destacada, se muestra una diferencia sustancial entre la hora del evento y la de la marca de agua de salida, que indica una operación lenta.

Latencia del sistema (con y sin Streaming Engine)

La latencia del sistema es la cantidad máxima de segundos actual que un elemento de datos lleva en procesamiento o en espera para que se lo procese. Esta métrica indica cuánto tiempo espera un elemento dentro de cualquier fuente en la canalización. La duración máxima se ajusta después del procesamiento. Los siguientes casos son consideraciones adicionales:

  • Para varias fuentes y receptores, la latencia del sistema es la cantidad máxima de tiempo que un elemento espera dentro de una fuente antes de que se la escriba en todos los receptores.
  • A veces, una fuente no proporciona un valor para el período durante el cual un elemento espera dentro de la fuente. Además, es posible que el elemento no tenga metadatos para definir su hora del evento. En esta situación, la latencia del sistema se calcula a partir del momento en que la canalización recibe el elemento por primera vez.

El panel incluye los siguientes dos gráficos:

  • Latencia del sistema por etapas
  • Latencia del sistema

Una visualización de datos que muestra la latencia del sistema en una canalización de transmisión.

Tareas pendientes

El panel de Tareas pendientes proporciona información sobre los elementos que esperan ser procesados. El panel incluye los siguientes dos gráficos:

  • Segundos de tareas pendientes (solo Streaming Engine)
  • Bytes de tareas pendientes (con y sin Streaming Engine)

En el gráfico de segundos de tareas pendientes, se muestra una estimación de la cantidad de tiempo en segundos necesarios para consumir el trabajo pendiente actual si no llegan datos nuevos y la capacidad de procesamiento no cambia. El tiempo estimado de trabajo pendiente se calcula a partir de la capacidad de procesamiento y los bytes pendientes de la fuente de entrada que aún se deben procesar. La métrica ajuste de escala automático de transmisión usa esta métrica para determinar cuándo aumentar o disminuir la escala.

Una visualización de datos que muestra el gráfico de segundos de tareas pendientes en una canalización de transmisión.

El gráfico Bytes de tareas pendientes muestra la cantidad de entradas sin procesar conocidas de una etapa en bytes. Esta métrica compara los bytes restantes que consume cada etapa con las etapas ascendentes. Para que esta métrica informe con precisión, cada fuente que transfiere la canalización debe configurarse de forma correcta. Las fuentes nativas como Pub/Sub y BigQuery ya son compatibles y están listas para usar, sin embargo, requieren una implementación adicional. Para obtener más detalles, consulta Ajuste de escala automático para fuentes no delimitadas personalizadas.

Una visualización de datos que muestra el gráfico de bytes de tareas pendientes en una canalización de transmisión.

Procesamiento (solo Streaming Engine)

El panel de Procesamiento proporciona información sobre las operaciones de usuario activas. El panel incluye los siguientes dos gráficos:

  • Mapa de calor de las latencias de procesamiento de los usuarios
  • Latencias de procesamiento de los usuarios por etapa

El mapa de calor de las latencias de procesamiento del usuario muestra las latencias máximas de operación del usuario en las distribuciones de percentil 50, 95 y 99. Puedes usar el mapa de calor para ver si alguna operación de cola larga está causando una latencia general del sistema alta o si está afectando de manera negativa la actualización de datos en general.

Tener latencias altas en el percentil 99 suele tener menos impacto en el trabajo que tener latencias altas en el percentil 50. Para solucionar un problema ascendente antes de que se convierta en un problema descendente, establece una política de alertas para latencias altas en el percentil 50.

Una visualización de datos que muestra el gráfico de mapa de calor de latencias de procesamiento del usuario para una canalización de transmisión.

En el gráfico Latencias de procesamiento de usuarios por etapa, se muestra el percentil 99 de cada operación de usuario activa desglosada por etapa. Si el código de usuario causa un cuello de botella, en este gráfico se muestra qué etapa contiene el cuello de botella. Puedes usar los siguientes pasos para depurar la canalización:

  1. Usa el gráfico para encontrar una etapa con una latencia inusualmente alta.

  2. En la página de detalles del trabajo, en la pestaña Detalles de la ejecución, en Vista del gráfico, selecciona Flujo de trabajo de la etapa. En el gráfico del flujo de trabajo de la etapa, busca la etapa que tiene una latencia inusualmente alta.

  3. Para encontrar las operaciones de usuario asociadas, en el gráfico, haz clic en el nodo de esa etapa.

  4. Para encontrar detalles adicionales, navega a Cloud Profiler y usa Cloud Profiler a fin de depurar el seguimiento de pila en el intervalo de tiempo correcto. Busca las operaciones del usuario que identificaste en el paso anterior.

Una visualización de datos que muestra las latencias de procesamiento de usuario por gráfico de etapa para una canalización de transmisión.

Paralelismo (solo Streaming Engine)

El gráfico Procesamiento paralelo muestra la cantidad aproximada de claves que se usan para el procesamiento de datos de cada etapa. Dataflow escala según el paralelismo de una canalización. En Dataflow, 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 procesamiento de cualquier clave determinada se serializa, por lo que la cantidad total de claves para una etapa representa el paralelismo máximo disponible en esa etapa. Las métricas de paralelismo pueden ser útiles a fin de encontrar claves de acceso rápido o cuellos de botella para canalizaciones lentas o atascadas.

Una visualización de datos que muestra el gráfico de procesamiento paralelo en una canalización de transmisión.

Persistencia (solo Streaming Engine)

El panel Persistence proporciona información sobre la velocidad en la que una etapa de canalización en particular escribe y lee el almacenamiento del disco persistente por segundo. El panel incluye los siguientes dos gráficos:

  • Escritura de almacenamiento
  • Lectura de almacenamiento

La velocidad máxima de las operaciones de escritura y lectura está limitada por las IOPS máximas (operaciones de entrada y salida por segundo) del disco seleccionado. Para determinar si el disco actual causa un cuello de botella, revisa las IOPS de los discos que usan los trabajadores. Para obtener más información sobre los límites de rendimiento de los discos persistentes, consulta Límites de rendimiento.

Una visualización de datos que muestra el gráfico de escritura de almacenamiento para una canalización de transmisión.

Duplicados (solo Streaming Engine)

El gráfico Duplicados muestra la cantidad de mensajes procesados por una etapa en particular que se filtraron como duplicados. Dataflow admite muchas fuentes y receptores que garantizan la entrega at least once. La desventaja de la entrega at least once es que puede generar duplicados. Dataflow garantiza la entrega exactly once, lo que significa que los duplicados se excluyen de forma automática. Las etapas descendentes no vuelven a procesar los mismos elementos, lo que garantiza que el estado y los resultados no se vean afectados. Se pueden optimizar los recursos y el rendimiento de la canalización mediante la reducción de la cantidad de duplicados que se producen en cada etapa.

Una visualización de datos que muestra el gráfico de duplicados en una canalización de transmisión.

Temporizadores (solo Streaming Engine)

El panel Temporizadores proporciona información sobre la cantidad de temporizadores pendientes y los que ya se procesaron en una etapa de canalización en particular. Debido a que las ventanas se basan en temporizadores, esta métrica te permite realizar un seguimiento del progreso de las ventanas.

El panel incluye los siguientes dos gráficos:

  • Temporizadores pendientes por etapa
  • Procesamiento de cronómetros por etapa

Estos gráficos muestran la frecuencia con la que las ventanas están pendientes o se procesan en un momento específico. En el gráfico Temporizadores pendientes por etapa, se indica cuántas ventanas se retrasan debido a cuellos de botella. El gráfico Temporizadores pendientes por etapa indica cuántas ventanas recopilan elementos en este momento

Estos gráficos muestran todos los temporizadores de trabajo, por lo que si se usan temporizadores en otra parte de tu código, esos temporizadores también aparecen en estos gráficos.

Una visualización de datos que muestra la cantidad de temporizadores pendientes en una etapa en particular.

Una visualización de datos que muestra la cantidad de temporizadores que ya se procesaron en una etapa en particular.

Uso de CPU

El uso de la CPU es la cantidad de CPU utilizada dividida por la cantidad de CPU disponible para el procesamiento. Esta métrica por trabajador se muestra como un porcentaje. El panel incluye los siguientes cuatro gráficos:

  • Uso de CPU (todos los trabajadores)
  • Uso de CPU (estadísticas)
  • Uso de CPU (los 4 más altos)
  • Uso de CPU (los 4 más bajos)

Una visualización animada de datos que muestra el uso de CPU de un trabajador de Dataflow.

Uso de memoria

El uso de memoria es la cantidad estimada de memoria que usan los trabajadores en bytes por segundo. El panel incluye los siguientes dos gráficos:

  • Uso máximo de memoria de trabajador (bytes estimados por segundo)
  • Uso de memoria (bytes estimados por segundo)

El gráfico de Uso de memoria máximo de trabajadores proporciona información sobre los trabajadores que usan más memoria en el trabajo de Dataflow en cada momento. Si, en diferentes puntos de un trabajo, el trabajador que usa la cantidad máxima de memoria cambia, la misma línea en el gráfico muestra los datos de varios trabajadores, con cada punto en la línea que muestra los datos del trabajador mediante el cantidad máxima de memoria en ese momento. En el gráfico, se compara la memoria estimada que usa el trabajador con el límite de memoria en bytes.

Puedes usar este gráfico para solucionar problemas de memoria insuficiente (OOM). Las fallas de memoria insuficiente del trabajador no se muestran en este gráfico.

En el gráfico Uso de memoria, se muestra una estimación de la memoria que usan todos los trabajadores en el trabajo de Dataflow en comparación con el límite de memoria en bytes.

Métricas de entrada y salida

Se muestran las métricas de entrada y de salida si el trabajo de transmisión de Dataflow lee o escribe registros mediante Pub/Sub.

Se combinan todas las métricas de entrada del mismo tipo y también se combinan todas las métricas de salida. Por ejemplo, todas las métricas de Pub/Sub se agrupan en una sección. Cada tipo de métrica está organizado en una sección separada. Para cambiar las métricas que se muestran, selecciona la sección a la izquierda que mejor represente las métricas que buscas. En las siguientes imágenes, se muestran todas las secciones disponibles.

Una imagen de ejemplo que muestra las secciones de entrada y salida separadas para un trabajo de Dataflow.

Los siguientes dos gráficos se muestran en las secciones Métricas de entrada y Métricas de salida.

Una serie de gráficos que muestran métricas de entrada y salida para un trabajo de Dataflow.

Solicitudes por s

Las solicitudes por segundo son la tasa de solicitudes a la API para leer o escribir datos por fuente o receptor en el tiempo. Si esta tasa disminuye a cero, o si disminuye de manera significativa durante un período prolongado relativo al comportamiento esperado, es posible que la canalización se bloquee para realizar ciertas operaciones. Además, es posible que no haya datos para leer. En ese caso, revisa los pasos del trabajo que tienen una marca de agua de sistema alta. Además, examina los registros del trabajador para detectar errores o indicaciones sobre el procesamiento lento.

Un gráfico que muestra la cantidad de solicitudes a la API para leer o escribir datos por fuente o receptor a lo largo del tiempo.

Errores de respuesta por segundo, según tipo de error

Los errores de respuesta por segundo según el tipo de error son la tasa de solicitudes incorrectas a la API para leer o escribir datos por fuente o receptor a lo largo del tiempo. Si se producen estos errores con frecuencia, estas solicitudes a la API pueden ralentizar el procesamiento. Estas solicitudes a la API con errores deben investigarse. Para solucionar estos problemas, revisa la documentación general de código de error de E/S y cualquier documentación específica del código de error que use la fuente o el receptor, como los códigos de error de Pub/Sub.

Un gráfico que muestra la tasa de solicitudes incorrectas a la API para leer o escribir datos por fuente o receptor a lo largo del tiempo.

Usa el Explorador de métricas

Las siguientes métricas de E/S de Dataflow se pueden ver en el Explorador de métricas:

Para obtener la lista completa de métricas de Dataflow, consulta la documentación de métricas de Google Cloud.

Próximos cambios en las métricas de Pub/Sub (solo para Streaming Engine)

En la actualidad, Streaming Engine usa la extracción síncrona para consumir datos de Pub/Sub, pero, a partir de febrero de 2022, migraremos a la extracción de transmisión para mejorar el rendimiento. Los gráficos y las métricas existentes de Solicitudes por segundo y Errores de respuesta por segundo son apropiados solo para la extracción síncrona. Agregaremos una métrica sobre el estado de las conexiones de extracción de transmisión y cualquier error que finalice esas conexiones.

La migración no requerirá la participación de los usuarios. Durante la migración, un trabajo puede usar la extracción síncrona durante un período y la extracción de transmisión durante otro período. Por lo tanto, el mismo trabajo puede mostrar las métricas de extracción síncrona durante un período y las métricas de extracción de transmisión durante otro período. Una vez que se complete la migración, las métricas de extracción síncrona se quitarán de la IU.

La migración también afectará las métricas job/pubsub/read_count y job/pubsub/read_latencies en Cloud Monitoring. Esos contadores no se incrementarán mientras un trabajo use la extracción de transmisión.

Los trabajos de transmisión que no usan Streaming Engine no se migrarán a Streaming Pull y no se verán afectados por este cambio. Continuarán mostrando las métricas de extracción síncrona.

Puedes encontrar información adicional sobre la migración de transmisión de extracción en la página Transmisión con Pub/Sub.

Comunícate con el equipo de cuentas si tienes alguna pregunta sobre este cambio.

Visualiza una canalización

Cuando seleccionas un trabajo específico de Dataflow, la interfaz de supervisión muestra información sobre la canalización en ese trabajo. Esta información incluye una representación gráfica de tu canalización a medida que se ejecuta en el servicio de Dataflow, un resumen del trabajo, un registro de trabajo y la información sobre cada paso de la canalización.

La interfaz de supervisión de Dataflow proporciona una representación gráfica de tu canalización: el grafo de ejecución. El grafo de ejecución de una canalización representa cada una de sus transformaciones en la canalización como un cuadro. Cada cuadro contiene el nombre de la transformación y la información sobre el estado del trabajo, que incluye lo siguiente:

  • En ejecución: el paso está en ejecución.
  • En cola: el paso en un trabajo de FlexRS está en cola.
  • Finalizado de manera correcta: el paso finalizó con éxito.
  • Detenido: el paso se detuvo porque el trabajo se detuvo.
  • Desconocido: no se pudo informar el estado del paso.
  • Con errores: no se pudo completar el paso.

Grafo de ejecución básico

Código de canalización:

Java


  // Read the lines of the input text.
  p.apply("ReadLines", TextIO.read().from(options.getInputFile()))
     // Count the words.
     .apply(new CountWords())
     // Write the formatted word counts to output.
     .apply("WriteCounts", TextIO.write().to(options.getOutput()));

Python


(
    pipeline
    # Read the lines of the input text.
    | 'ReadLines' >> beam.io.ReadFromText(args.input_file)
    # Count the words.
    | CountWords()
    # Write the formatted word counts to output.
    | 'WriteCounts' >> beam.io.WriteToText(args.output_path))

Go


  // Create the pipeline.
  p := beam.NewPipeline()
    s := p.Root()
  // Read the lines of the input text.
  lines := textio.Read(s, *input)
  // Count the words.
  counted := beam.ParDo(s, CountWords, lines)
  // Write the formatted word counts to output.
  textio.Write(s, *output, formatted)

Nota: Algunos nombres de la imagen de la derecha no coinciden con los nombres de la transformación de este SDK.

Grafo de ejecución:

El grafo de ejecución de una canalización de WordCount como se muestra en la interfaz de supervisión de Dataflow.

Figura 2: Código de canalización para una canalización WordCount que se muestra con el grafo de ejecución resultante en la interfaz de supervisión Dataflow.

Transformaciones compuestas

En el grafo de ejecución, las transformaciones compuestas contienen varias subtransformaciones anidadas y son expandibles. Las transformaciones compuestas expandibles se marcan con una flecha en el grafo. Haz clic en la fecha para expandir la transformación y visualizar las subtransformaciones en su interior.

Código de canalización:

Java


  // The CountWords Composite Transform
  // inside the WordCount pipeline.

  public static class CountWords
    extends PTransform<PCollection<String>, PCollection<String>> {

    @Override
    public PCollection<String> apply(PCollection<String> lines) {

      // Convert lines of text into individual words.
      PCollection<String> words = lines.apply(
        ParDo.of(new ExtractWordsFn()));

      // Count the number of times each word occurs.
      PCollection<KV<String, Long>> wordCounts =
        words.apply(Count.<String>perElement());

      return wordCounts;
    }
  }

Nota: FormatCounts en la imagen de la derecha no es relevante para este SDK.

Python


# The CountWords Composite Transform inside the WordCount pipeline.
@beam.ptransform_fn
def CountWords(pcoll):
  return (
      pcoll
      # Convert lines of text into individual words.
      | 'ExtractWords' >> beam.ParDo(ExtractWordsFn())
      # Count the number of times each word occurs.
      | beam.combiners.Count.PerElement()
      # Format each word and count into a printable string.
      | 'FormatCounts' >> beam.ParDo(FormatCountsFn()))

Go


  // The CountWords Composite Transform inside the WordCount pipeline.
  func CountWords(s beam.Scope, lines beam.PCollection) beam.PCollection {
    s = s.Scope("CountWords")

    // Convert lines of text into individual words.
    col := beam.ParDo(s, &extractFn{SmallWordLength: *smallWordLength}, lines)

    // Count the number of times each word occurs.
    return stats.Count(s, col)
  }

Nota: FormatCounts en la imagen de la derecha no es relevante para este SDK y algunos nombres en la imagen de la derecha no coinciden con los nombres de transformación en este SDK.

Grafo de ejecución:

El grafo de ejecución de una canalización de WordCount con la transformación CountWords expandida a fin de mostrar las transformaciones que la componen.

Figura 3: Código de canalización de los pasos secundarios de la transformación CountWords mostrado con el grafo de ejecución expandido de toda la canalización.

Transforma nombres

Dataflow tiene varias maneras de obtener el nombre de la transformación que se muestra en el grafo de ejecución de supervisión:

Java

  • Dataflow puede usar un nombre que asignas cuando aplicas tu transformación. El primer argumento que proporcionas al método apply es el nombre de tu transformación.
  • Dataflow puede inferir el nombre de la transformación, ya sea a partir del nombre de la clase (si creaste una transformación personalizada) o del nombre de tu objeto de función DoFn (si usas una transformación central como ParDo).

Python

  • Dataflow puede usar un nombre que asignas cuando aplicas tu transformación. Para establecer el nombre de transformación, debes especificar el argumento label.
  • Dataflow puede inferir el nombre de la transformación, ya sea a partir del nombre de la clase (si creaste una transformación personalizada) o del nombre de tu objeto de función DoFn (si usas una transformación central como ParDo).

Go

  • Dataflow puede usar un nombre que asignas cuando aplicas tu transformación. Para establecer el nombre de transformación, debes especificar el Scope.
  • Dataflow puede inferir el nombre de la transformación, ya sea a partir del nombre de la estructura si usas una DoFn estructural o del nombre de la función si usas una función funcional DoFn.

Comprende las métricas

Tiempo

Cuando haces clic en un paso, la métrica Tiempo se muestra en el panel Información del paso. Esta métrica indica el tiempo aproximado total empleado en todos los subprocesos en todos los trabajadores para las siguientes acciones:

  • Inicializando el paso
  • Procesamiento de datos
  • Redistribución de datos
  • Finalización del paso

En el caso de los pasos compuestos, el tiempo indica la suma de tiempo empleado en los pasos que los integran. Esta estimación puede ayudarte a identificar pasos lentos y a diagnosticar a qué parte de tu canalización le lleva más tiempo del que debería.

Puedes ver el tiempo que le toma a un paso ejecutarse en tu canalización.
Figura 4: La métrica Tiempo puede ayudarte a garantizar que tu canalización se ejecute de manera eficaz.

Métricas de entradas complementarias

Las Métricas de entradas complementarias te muestran la forma en que tus patrones y algoritmos de acceso de entradas complementarias afectan el rendimiento de tu canalización. Cuando tu canalización usa una entrada complementaria, Dataflow escribe la colección en una capa persistente, como un disco, y tus transformaciones leen de esa colección persistente. Estas operaciones de lectura y escritura afectan el tiempo de ejecución de tu trabajo.

La interfaz de supervisión de Dataflow muestra las métricas de entradas complementarias cuando seleccionas una transformación que crea o consume una colección de entrada complementaria. Puedes ver las métricas en la sección Métricas de entradas complementarias del panel Información de pasos.

Transformaciones que crean una entrada complementaria

Si la transformación seleccionada crea una colección de entrada complementaria, la sección Métricas de entradas complementarias muestra el nombre de la colección, junto con las métricas siguientes:

  • Time spent writing: (Tiempo dedicado a la escritura) el tiempo de ejecución empleado para escribir la colección de entradas complementarias.
  • Bytes written: (Bytes escritos) la cantidad total de bytes escritos en la colección de entradas complementarias.
  • Tiempo y bytes de la lectura de entradas complementarias: una tabla que contiene métricas adicionales de todas las transformaciones que consumen la colección de entradas complementarias llamada consumidores de entradas complementarias.

La tabla de Tiempo y bytes leídos de las entradas complementarias contiene la información siguiente para cada consumidor de entrada complementaria:

  • Side input consumer: (Consumidor de entradas complementarias): nombre de la transformación del consumidor de entradas complementarias
  • Tiempo dedicado a la escritura: tiempo que este consumidor emplea en leer la colección de entradas complementarias.
  • Bytes read: (Bytes leídos) cantidad de bytes que este consumidor lee de la colección de entradas complementarias.

Si tu canalización tiene una transformación compuesta que crea una entrada complementaria, expande la transformación compuesta hasta que veas la subtransformación específica que crea la entrada complementaria. Luego, selecciona esa subtransformación para ver la sección Métricas de entradas complementarias.

En la figura 5, se muestran las métricas de entradas complementarias de una transformación que crea una colección de entradas complementarias.

Puedes seleccionar que la transformación y sus métricas de entradas complementarias sean visibles en el panel lateral de información del paso.
Figura 5: Grafo de ejecución con una transformación compuesta expandida (MakeMapView). Está seleccionada la subtransformación que crea la entrada complementaria (CreateDataflowView), y se observan las métricas de las entradas complementarias en la pestaña Información del paso.

Transformaciones que consumen una o más entradas complementarias

Si la transformación seleccionada consume una o más entradas complementarias, la sección de las Métricas de entradas complementarias muestra la tabla Tiempo y bytes leídos de las entradas complementarias. Esta tabla contiene la información siguiente para cada colección de entrada complementaria:

  • Colección de entrada complementaria: nombre de la colección de la entrada complementaria.
  • Tiempo dedicado a la escritura: tiempo que la transformación emplea en leer la colección de entradas complementarias.
  • Bytes leídos: cantidad de bytes que la transformación lee de la colección de entradas complementarias.

Si tu canalización tiene una transformación compuesta que lee una entrada complementaria, expande la transformación compuesta hasta que veas la subtransformación específica lee la entrada complementaria. Luego, selecciona esa subtransformación para ver la sección Métricas de entradas complementarias.

En la figura 6, se muestran las métricas de entradas complementarias de una transformación que lee de una colección de entradas complementarias.

Puedes seleccionar que la transformación y sus métricas de entradas complementarias sean visibles en el panel lateral de información del paso.
Figura 6: La transformación JoinBothCollections lee de una colección de entradas complementarias. JoinBothCollections está seleccionado en el grafo de ejecución, y se observan las métricas de entradas complementarias en el panel lateral Información del paso.

Identifica los problemas de rendimiento de la entrada complementaria

Reiteración es un problema de rendimiento de entrada complementaria común. Si tu entrada complementaria PCollection es demasiado grande, los trabajadores no pueden almacenar en caché toda la colección en la memoria. En consecuencia, los trabajadores deben leer de la colección de entradas complementarias persistente varias veces.

En la figura 7, las métricas de entradas complementarias muestran que el total de bytes leídos desde la colección de entradas complementarias es mucho mayor que el tamaño de la colección (el total de bytes escritos).

Puedes seleccionar que la transformación y sus métricas de entradas complementarias sean visibles en el panel lateral de información del paso.
Figura 7: Un ejemplo de reiteración. La colección de entradas complementarias es de 563 MB y la suma de bytes leídos cuando se consumen las transformaciones es de casi 12 GB.

Si deseas mejorar el rendimiento de esta canalización, vuelve a diseñar tu algoritmo para evitar la iteración o la recuperación de los datos de la entrada complementaria. En el ejemplo siguiente, la canalización crea el producto cartesiano de dos colecciones. El algoritmo itera a través de toda la colección de entrada complementaria para cada elemento de la colección principal. Puedes mejorar el patrón de acceso de la canalización si agrupas en lotes varios elementos de la colección principal. Este cambio reduce la cantidad de veces que los trabajadores deben volver a leer la colección de entrada complementaria.

Se puede generar otro problema de rendimiento común si tu canalización realiza una unión mediante la aplicación de un ParDo con una o más entradas complementarias grandes. En este caso, los trabajadores dedican un alto porcentaje del tiempo de procesamiento a la operación de unión a leer las colecciones de entradas complementarias.

En la figura 8, se muestra un ejemplo de métricas de entradas complementarias cuando ocurre este problema:

Puedes seleccionar que la transformación y sus métricas de entradas complementarias sean visibles en el panel lateral de información del paso.
Figura 8: La transformación JoinBothCollections tiene un tiempo de ejecución total de 18 min y 31 s. Los trabajadores dedican la mayor parte del tiempo de ejecución (10 min y 3 s) a leer de la colección de entradas complementarias de 10 GB.

Si deseas mejorar el rendimiento de esta canalización, usa CoGroupByKey, en lugar de las entradas complementarias.

Recomendaciones y diagnósticos

Dataflow proporciona recomendaciones para mejorar el rendimiento del trabajo, reducir los costos y solucionar errores. En esta sección, se explica cómo revisar e interpretar las recomendaciones. Ten en cuenta que algunas recomendaciones pueden no ser relevantes para tu caso de uso.

Diagnóstico

La pestaña Diagnóstico en Registros recopila y muestra ciertas entradas de registro que se produjeron en tus canalizaciones. Estos incluyen mensajes que indican un posible problema con la canalización y mensajes de error con seguimientos de pila. Las entradas de registro recopiladas anulan el duplicado y se combinan en grupos de errores.

La pestaña Diagnostics de un trabajo de Dataflow con un grupo de errores del servicio.

El informe de error incluye la siguiente información:

  • Una lista de errores con los mensajes de error
  • La cantidad de veces que sucedió cada error.
  • Un histograma que indica cuándo sucedió cada error.
  • La hora en que sucedió el error más reciente.
  • La hora en que se produjo el error por primera vez.
  • El estado del error.

Para ver el informe de error de un error específico, haz clic en la descripción en la columna Errores. Se mostrará la página Error Reporting. Si el error es un error del servicio, se mostrará un vínculo adicional con la documentación, que incluye más pasos (“Guía de solución de problemas”).

La página de detalles del grupo de errores para un error del servicio de Dataflow.

Si deseas obtener más información sobre la página, consulta Visualiza errores.

Silencia un error

Para silenciar un mensaje de error, abre la pestaña Diagnóstico, haz clic en el error que deseas silenciar y abre el menú de estado de resolución (etiquetado como Abierto | Confirmado | Resuelto | Silenciado) y selecciona Silenciado.

Recomendaciones

La pestaña Recomendaciones muestra estadísticas de Dataflow relacionadas con la canalización. El objetivo de estas estadísticas es identificar situaciones en las que se podrían realizar mejoras en costo y rendimiento.

La pestaña Recomendaciones para un trabajo de Dataflow con recomendaciones de muestra.

La columna Fecha de actualización indica la última vez que se observó una estadística. Las recomendaciones se almacenarán durante 30 días a partir de la Fecha de actualización.

Acceso programático a las recomendaciones

Para acceder de manera programática a las recomendaciones, usa la API del Recomendador.

Descarta una recomendación

Puedes descartar una recomendación en el Centro de recomendaciones de tu proyecto.

Para descartar una recomendación, haz clic en el menú de navegación en la esquina superior izquierda de la consola y selecciona Página principal > Recomendaciones. En la tarjeta Diagnóstico de Dataflow, haz clic en Ver todo, selecciona la recomendación que deseas descartar y haz clic en Descartar.

¿Qué sigue?