Comprensión del procesamiento de flujos y por lotes

Completado

El procesamiento de datos es simplemente la conversión de datos sin procesar en información significativa a través de un proceso. Existen dos métodos generales para procesar los datos:

  • Procesamiento por lotes, en el que se recopilan y almacenan varios registros de datos antes de procesarse juntos en una sola operación.
  • Procesamiento de flujos, en el que un origen de datos se supervisa y procesa constantemente en tiempo real a medida que se producen nuevos eventos de datos.

Comprender el procesamiento por lotes

En el procesamiento por lotes, los elementos de datos recién llegados se recopilan y se almacenan y todo el grupo se procesa de forma conjunta, como un lote. El momento en el que se procesa cada grupo se puede determinar de varias maneras. Por ejemplo, los datos se pueden procesar según un intervalo de tiempo programado (por ejemplo, cada hora), o bien el procesamiento puede desencadenarse cuando se alcance una determinada cantidad de datos o como resultado de algún otro evento.

Por ejemplo, supongamos que quiere analizar el tráfico de carreteras contando el número de automóviles en un tramo de carretera. Un enfoque de procesamiento por lotes requeriría recopilar los automóviles de un aparcamiento y, a continuación, contarlos en una sola operación mientras están en reposo.

Diagrama de automóviles contados en un estacionamiento.

Si la carretera está ocupada, con un gran número de automóviles que conducen a intervalos frecuentes, este enfoque puede ser poco práctico. Tenga en cuenta que no obtiene ningún resultado hasta que haya estacionado un lote de automóviles y los haya contado.

Un ejemplo real de procesamiento por lotes es la forma en que las empresas de tarjetas de crédito controlan la facturación. El cliente no recibe una factura por cada compra que hace con su tarjeta de crédito, sino una factura mensual para todas las compras de ese mes.

Entre las ventajas del procesamiento por lotes se incluyen las siguientes:

  • Se pueden procesar grandes volúmenes de datos en un momento especificado.
  • Se puede programar para ejecutarse mientras los equipos o sistemas están inactivos, como por la noche o en horas de poca actividad.

Entre las desventajas del procesamiento por lotes están las siguientes:

  • El tiempo de retardo entre la ingesta de los datos y la obtención de los resultados.
  • Todos los datos de entrada de un trabajo por lotes deben estar listos para poder procesar un lote. Esto significa que los datos deben comprobarse con cuidado. Los problemas con los datos, los errores y los bloqueos de los programas que se producen durante los trabajos por lotes provocan la detención de todo el proceso. Los datos de entrada deben comprobarse cuidadosamente antes de volver a ejecutar el trabajo. Incluso los errores de datos menores pueden impedir la ejecución de un trabajo por lotes.

Comprender el procesamiento de flujos

En el procesamiento en streaming, cada nuevo fragmento de datos se procesa cuando llega. A diferencia del procesamiento por lotes, no hay ningún tiempo de espera hasta el siguiente intervalo de procesamiento por lotes y los datos se procesan como unidades individuales en tiempo real en lugar de procesarse de lote en lote. El procesamiento de datos de flujos es beneficioso en los escenarios donde se generan datos dinámicos nuevos de forma continua.

Por ejemplo, un enfoque mejor para nuestro hipotético problema de recuento de automóviles podría ser aplicar un enfoque de flujo de datos, contando los automóviles en tiempo real a medida que pasan:

Diagrama de coches que se cuentan a medida que pasan.

En este enfoque, no es necesario esperar hasta que todos los automóviles hayan estacionado para comenzar a procesarlos, y puede sumar los datos a lo largo de intervalos de tiempo. Por ejemplo, contando el número de automóviles que pasan cada minuto.

Entre los ejemplos reales de datos en streaming se incluyen:

  • Una institución financiera realiza un seguimiento de los cambios en el mercado de valores en tiempo real, calcula el valor en riesgo y reequilibra automáticamente las carteras en función de los movimientos de precio de las acciones.
  • Una empresa de juegos en línea recopila datos en tiempo real sobre las interacciones de los jugadores con los juegos y los incorpora en su plataforma de juegos. Después, analiza los datos en tiempo real y ofrece incentivos y experiencias dinámicas para atraer a los jugadores.
  • Un sitio web inmobiliario hace un seguimiento de un subconjunto de datos de dispositivos móviles y ofrece recomendaciones en tiempo real de las propiedades que pueden visitar los clientes en función de su ubicación geográfica.

El procesamiento en streaming es idóneo para las operaciones en las que la velocidad de ejecución es importante y que requieren una respuesta instantánea en tiempo real. Por ejemplo, un sistema que supervisa la presencia de humo y altas temperaturas en un edificio necesita activar alarmas y desbloquear puertas para permitir que los residentes puedan salir inmediatamente en caso de que se produzca un incendio.

Comprender las diferencias entre los datos por lotes y de streaming

Además de las diferencias en la forma en que el procesamiento por lotes y en streaming controlan los datos, hay otras diferencias:

  • Ámbito de los datos: el procesamiento por lotes puede procesar todos los datos del conjunto de datos. Normalmente, el procesamiento en streaming solo tiene acceso a los datos más recientemente recibidos o dentro de una ventana de tiempo móvil (los últimos 30 segundos, por ejemplo).

  • Tamaño de los datos: el procesamiento por lotes es adecuado para administrar grandes conjuntos de datos de forma eficaz. El procesamiento en streaming está diseñado para registros individuales o microlotes que constan de pocos registros.

  • Rendimiento: la latencia es el tiempo que se tarda en recibir y procesar los datos. la latencia del procesamiento por lotes suele ser de unas horas. Normalmente, el procesamiento en streaming se produce inmediatamente, con la latencia en segundos o milisegundos.

  • Análisis: normalmente se usa el procesamiento por lotes para realizar análisis complejos. El procesamiento en streaming se usa para funciones de respuesta simples, agregaciones o cálculos, como el cálculo de la media acumulada.

Combinación del procesamiento por lotes y por flujos

Muchas soluciones de análisis a gran escala incluyen una combinación de procesamiento por lotes y de flujos, lo que permite el análisis de datos históricos y en tiempo real. Es habitual que las soluciones de procesamiento de flujos capturen datos en tiempo real, los filtren o agreguen para procesarlos y los presenten a través de paneles y visualizaciones en tiempo real (por ejemplo, muestran el total de automóviles que han pasado por una carretera durante la hora actual), al tiempo que también se conservan los resultados procesados en un almacén de datos para el análisis histórico junto con los datos procesados por lotes (por ejemplo, para habilitar el análisis de los volúmenes de tráfico durante el último año).

Incluso cuando no se requiere el análisis o la visualización en tiempo real de los datos, las tecnologías de flujos a menudo se usan para capturar datos en tiempo real y almacenarlos en un almacén de datos para su posterior procesamiento por lotes (esto equivale a redirigir todos los automóviles que viajan por una carretera a un aparcamiento antes de contarlos).

En el diagrama siguiente se muestran algunos métodos para combinar el procesamiento por lotes y de flujos en una arquitectura de análisis de datos a gran escala.

Diagrama de una arquitectura de análisis de datos que incluye procesamiento por lotes y flujos.

  1. Los eventos de datos de un origen de datos de streaming se capturan en tiempo real.
  2. Los datos de otros orígenes se ingieren en un almacén de datos (a menudo, un lago de datos) para el procesamiento por lotes.
  3. Si no es necesario llevar a cabo análisis en tiempo real, los datos de flujos capturados se escriben en el almacén de datos para su posterior procesamiento por lotes.
  4. Cuando se requiere un análisis en tiempo real, se usa una tecnología de procesamiento de flujos para preparar los datos de flujos para el análisis o visualización en tiempo real. A menudo, se filtran o suman los datos por periodos de tiempo.
  5. Los datos que no son de flujos se procesan por lotes periódicamente para prepararlos para el análisis y los resultados se conservan en un almacén de datos analíticos (a menudo denominado almacén de datos) para el análisis histórico.
  6. Los resultados del procesamiento de flujos también se pueden conservar en el almacén de datos analíticos para admitir el análisis histórico.
  7. Las herramientas analíticas y de visualización se usan para presentar y explorar los datos históricos y en tiempo real.

Nota:

Entre las arquitecturas de soluciones usadas con más frecuencia para un procesamiento de datos de flujos y por lotes de manera combinada, se encuentran arquitecturaslambda y delta. Los detalles de estas arquitecturas están fuera del ámbito de este curso, pero incorporan tecnologías tanto para el procesamiento de datos por lotes a gran escala como el procesamiento de flujos en tiempo real para crear una solución analítica de un extremo a otro.