0my1u 3 Qptmotfhg.png

En el momento de escribir el artículo, los marcos de procesamiento de datos como Mapa reducido y sus “primos” como Hadoop, Cerdo, Colmenao Chispa – chispear Permitir al consumidor de datos procesar datos por lotes a escala. En el lado del procesamiento de flujo, herramientas como Rueda de molino, Transmisión de chispao Tormenta vino a apoyar al usuario. Aún así, estos modelos existentes no cumplían el requisito en algunos casos de uso comunes.

Considere un ejemplo: los ingresos comerciales de un proveedor de transmisión de video provienen de la facturación a los anunciantes por la cantidad de publicidad vista en su contenido. Quieren saber cuánto facturar a cada anunciante diariamente y agregar estadísticas sobre los videos y anuncios. Además, quieren realizar experimentos fuera de línea con grandes cantidades de datos históricos. Quieren saber con qué frecuencia y durante cuánto tiempo se ven sus videos, con qué contenido/anuncios y por qué grupos demográficos. Toda la información debe estar disponible rápidamente para ajustar su negocio casi en tiempo real. El sistema de procesamiento también debe ser simple y flexible para adaptarse a la complejidad del negocio. También requieren un sistema que pueda manejar datos a escala global, ya que Internet permite a las empresas llegar a más clientes que nunca. He aquí algunas observaciones de la gente de Google sobre el estado de los sistemas de procesamiento de datos de aquella época:

  • Sistemas por lotes como Mapa reducido, FlumeJava (tecnología interna de Google) y Spark no garantizan el SLA de latencia, ya que requieren esperar a que todos los datos ingresados ​​encajen en un lote antes de procesarlos.
  • Los sistemas de procesamiento de streaming que proporcionan escalabilidad y tolerancia a fallos no alcanzan el aspecto de expresividad o corrección.
  • Muchos no pueden proporcionar exactamente una semántica, lo que afecta la corrección.
  • Otros carecen de las primitivas necesarias para la creación de ventanas o proporcionan una semántica de ventanas que se limita a ventanas basadas en tuplas o en tiempo de procesamiento (p. ej., Transmisión de chispa)
  • La mayoría de los que proporcionan ventanas basadas en el tiempo de eventos se basan en pedidos o tienen activación de ventanas limitada.
  • MillWheel y Spark Streaming son suficientemente escalables, tolerantes a fallas y de baja latencia, pero carecen de modelos de programación de alto nivel.

Concluyen que la principal debilidad de todos los modelos y sistemas mencionados anteriormente es la suposición de que los datos de entrada ilimitados eventualmente estarán completos. Este enfoque ya no tiene sentido cuando nos enfrentamos a la realidad de los enormes y altamente desordenados datos actuales. También creen que cualquier enfoque para resolver diversas cargas de trabajo en tiempo real debe proporcionar interfaces simples pero potentes para equilibrar la corrección, la latencia y el costo en función de casos de uso específicos. Desde esa perspectiva, el artículo tiene la siguiente contribución conceptual al modelo de procesamiento de flujo unificado:

  • Permitir calcular los resultados ordenados en el momento del evento (cuando ocurrió el evento) a través de una fuente de datos ilimitada y desordenada con combinaciones configurables de corrección, latencia y atributos de costo.
  • Separar la implementación del proceso en cuatro dimensiones relacionadas:

– ¿Qué resultados se están computando?
– Dónde en el momento del evento se están computando.
– Cuando se materialicen durante el tiempo de procesamiento,
– ¿Cómo se relacionan los resultados anteriores con los perfeccionamientos posteriores?

  • Separar la abstracción lógica del procesamiento de datos de la capa de implementación física subyacente permite a los usuarios elegir el motor de procesamiento.

En el resto de este blog veremos cómo Google permite esta contribución. Una última cosa antes de pasar a la siguiente sección: Google señaló que hay «No hay nada mágico en este modelo. “ El modelo no hace que su costosa tarea calculada se ejecute de repente más rápido; proporciona un marco general que permite la expresión simple de cálculo paralelo, que no está vinculado a ningún motor de ejecución específico como Spark o Flink.

Imagen creada por el autor.

Los autores del artículo utilizan el término ilimitado/limitado para definir datos infinitos/finitos. Evitan el uso de términos de transmisión/por lotes porque generalmente implican el uso de un motor de ejecución específico. El término datos no vinculados describe los datos que no tienen un límite predefinido, por ejemplo, los eventos de interacción del usuario de una aplicación de comercio electrónico activa; el flujo de datos solo se detiene cuando la aplicación está inactiva. Mientras que los datos acotados se refieren a datos que pueden definirse mediante límites claros de inicio y fin, por ejemplo, exportación de datos diarios desde la base de datos de operaciones.