2.
STREAMING PROCESSING
Introducción
El Streaming Processing es un paradigma de computación que permite a algunas
aplicaciones fácilmente explotar una forma limitada de procesamiento paralelo.
Algunas aplicaciones pueden utilizar múltiples unidades computacionales, como la
unidad de punto flotante en el procesamiento de gráficos sin necesidad de administrar
la localización, la sincronización o la comunicación entre estas unidades.
Apache pulsar es un sistema de mensajería de publicación de nivel empresarial
desarrollado originalmente en Yahoo y ahora se está desarrollando bajo la fundación
Apache. En Yahoo, Pulsar ha estado en producción durante más de tres años.
Este paradigma hace más simple el software y el hardware paralelo, ya que restringe la
cantidad de cálculo paralelo a realizar.
El funcionamiento general es, dado un conjunto de datos (secuencia), sobre ellos se
aplican operaciones (funciones) a cada elemento de la secuencia. Normalmente, estas
funciones son canalizadas y se intenta reutilizar, de manera óptima, la memoria local
del chip para minimizar perdida de ancho de banda.
El Hardware puede utilizar el marcador para empezar un acceso directo a memoria
(DMA) cuando se conocen las dependencias. Eliminar la administración manual de
DMA hace que el software sea menos complejo.
En los años 80, fue explorado el Streaming Processing dentro de la programación de
flujo de datos. Como ejemplo está el lenguaje SISAL.
El Streaming Processing es un compromiso que está impulsado por un modelo que se
centra en datos y funciona perfectamente para aplicaciones GPU o DSP
(Procesamiento de imagen, señal digital...).
Por otro lado, no funciona tan bien en aplicaciones que procesen datos con una forma
de acceso más aleatoria (Ej: Bases de datos).
Utilizar el Streaming Processing es, especialmente indicado y adecuado para
aplicaciones que tengan las siguientes 3 características:
1. Paralelismo de datos: Si se pueden procesar, de un flujo de entrada,
varios registros a la vez, sin esperar que haya que obtener resultados de
los registros anteriores.
2. Intensidad de cálculo: Número de operaciones aritméticas por E/S
elevado. Actualmente supera, de forma amplia, el 50:1 en muchas
aplicaciones que procesan señales.
3. Data Locality: Hace referencia a localidad temporal y se utiliza,
normalmente, para aplicaciones que procesen señales y donde los datos
son producidos una vez, son leídos una o dos veces y posteriormente no
son vueltos a ser leídos.
Dentro de las transmisiones, como ejemplo de registros incluyen:
1. Procesamiento de imágenes: Cada píxel puede ser un registro.
2. Procesamiento de señales inalámbricas: Cada secuencia de muestras
que son recibidas de una antena puede ser un registro.
3. Gráficos: En el ejemplo de un triángulo, cada registro podría ser la
información de vértice, normal y color.
4. Codificador de video: Cada registro podría ser un macrobloque de 256
píxeles.
Por cada registro, el flujo es: Leer la entrada, ejecutar operaciones (funciones) sobre ella
y escribir la salida. Se pueden tener varias entradas y varias salidas, pero no está
permitido que un registro de memoria sea legible y escribible al mismo tiempo.
Mapa conceptual
STREAMING
PROCESSING
FUNDAMENTOS DE IMPLEMENTACIÓN SPARK PULSA Y
STREAMING KAFKA DE UN SISTEMA STREAMING APACHE APEX
PROCESSING REAL-TIME