Cuando Hadoop no es suficientemente rápido!!!

Llevamos ya varios posts dedicados a Hadoop, casi como sinónimo de BigData pero qué pasa cuando Hadoop no es suficientemente rápido!!!

Para ciertas cosas como calcular trending topics en Twitter sin ir más lejos el flujo de Hadoop es muy lento. El motivo es que Hadoop no está pensado para trabajar en tiempo real.

En este post vamos a analizar Twitter Storm:

En 2011 Twitter adquirió la compañía de análisis online BackType. En septiembre de 2011 Twitter liberó Storm como librería open source.

Storm funciona de forma semejante a Hadoop pero en lugar de jobs MapReduce Storm corre topologías que nunca acaban.

Storm puede usarse para :

· Procesamiento de streams de datos Storm es escalable y tolerante a fallos

· Computación continua Storm puede ejecutar una query de forma continua y hacer stream de los resultados a los clientes en tiempo real (así se usa para los trending topics)

· RPC distribuido: Storm permite paralelizar una query al vuelo

Existen varias alternativas a Storm que intentaremos analizar en otros posts (Hstreaming y Apache S4 como poco), sobre estas Storm ofrece:

· Open Source: Hstreaming no lo es

· Modelo de programación simple

· Corre en cualquier lenguaje: Clojure, Java, Ruby y Python se soportan pero se pueden añadir nuevos sólo implementando el protocolo de comunicación

· Tolerante a fallos

· Escalable horizontalmente

· Garantiza el procesamiento del mensaje: Storm garantiza que cada mensaje se ha proceso por completo al menos una vez. S4 no lo garantiza.

· Rápido: usa ØMQ como capa de mensajería

· Modo local: para simular un cluster Storm y hacer test unitarios de topologías

Para correr Storm se necesita Apache Zookeeper, ØMQ, JZMQ, Java 6 y Python:

· ZooKeeper se encarga de gestionar los components de un cluster

· ØMQ como sistema de mensajería interno y JZMQ como Java Binding para ØMQ.

Existe un subproyecto, storm-deploy, que permite el despliegue inmediato de clusters Storm clusters en AWS.

Mientras nos ponemos con el post que explique el funcionamiento de Storm podéis seguir su tutorial.

OmniFaces: librería de utilidad para JSF

OmniFaces es una librería de utilidad para simplificar el desarrollo sobre JSF. Pretende solucionar muchos de los problemas de JSF 2.

OmniFaces funciona sobre las librerías JSF, entre sus características tiene:

· Remarcado de campos para los que falla la validación:

· Conversión automática de objetos en drop-downs y otros components Select: ya no necesitamos el FacesConverter!!!

· Validadores multicampo:

· Kit de renderizado HTML5 que añade soporte para atributos específicos HTML5

· Exception Handler AJAX

· Árbol completamente configurable

· Funciones EL para tratar con arrays, conversions, fechas,…

· Filtro de compression GZIP para respuestas

· …

Aquí podéis ver en funcionamiento OmniFaces y todas las nuevas características incluidas en componentes, conversores, listeners, filtros, funciones, utilidades, validadores,…

Para integrarlo en nuestro proyecto basta con incluirlo en nuestro proyecto Maven y definir su namespace:

Explicando Hadoop

MapReduce surgió porque las aproximaciones para procesar grandes cantidades de datos no funcionaban.

Google desarrolló este paradigma en 2004 para indexar la Web cada día.

En 2005 Yahoo inició el desarrollo de Hadoop como una implementación de MapReduce en 2005 y lo liberó como proyecto open source en 2007.

Aunque Hadoop surgió sólo como una implementación de MapReduce en la actualidad se ha convertido en un sistema operativo completo para el procesamiento distribuido de grandes cantidades de datos.

Se define como sistema operativo porque Hadoop contiene todas las estructuras básicas de un SO: un sistema de ficheros, un modelo de programación, una gestión de la distribución de esos programas,

Leer más

Y un poco más

Y una visión algo más crítica