jueves, 25 de noviembre de 2010

S4: manejando flujos continuos de datos

S4: distributed stream computing platform

S4 es un nuevo proyecto Java abierto generado por los laboratorios de Yahoo!, orientado al procesamiento masivo de información.

Ya están establecidas como práctica corriente para este tipo de escenarios tecnologías como MapReduce o su implementación abierta Hadoop, pero hasta ahora casi todas ellas trabajaban por lotes (en batch), iniciando el procesamiento a raíz de un proceso interactivo (como una búsqueda) o programado con cierta frecuencia.

S4 está diseñado para procesar los datos a medida que van llegando (en forma de stream), sin almacenamiento intermedio. La arquitectura se basa en el modelo de actores, retomando una tendencia impulsada últimamente por AkkaIo y SALSA, e implementada localmente por el ubicuo Angel "Java" López en AjAgents.

Las características principales que busca S4 son proveer un servicio indefinidamente escalable en función a agregar nodos al cluster, descentralizado en la medida en que todos los nodos son iguales, parcialmente tolerante a fallas donde los eventos pueden volver a enrutarse en caso de fallas en cualquier nodo, elástico en la medida en que la carga se distribuye automáticamente a través de los nodos, expansible a través de un API simple y orientada a objetos, donde la comunicación entre nodos se escribe utilizando POJOs (plain Java objects).

Hay un tutorial basado en una aplicación que procesa mensajes de Twitter.