spark_icono Spark Streaming

Analítica de actualizaciones de contenido en Wikipedia en tiempo real con Spark Streaming

Actualización de Wikipedia

Tipo de Artículos

Lenguajes de Artículos

Información

En este ejemplo el cluster de Kafka se usa como respositorio de datos en tiempo real, lo cual significa que todos los datos que se emitan al cluster se ponen a disposición de los consumidores, y además garantiza la persitencia de los mensajes por un número de días configurable, en este caso 3.

Tiene 3 nodos brokers que gestionan el flujo de mensajes desde y hacia producer y consumer respectivamente.
En esta demostración se ha implementado un producer configurable a través de un fichero .properties de java, para conectarse al stream que emite la wikipedia en tiempo real.
La conexión se realiza usando WebSocket con cliente java, pasando las propiedades específicas de cada fuente, wikipedia, wikimedia o wikidata.

Al recibir los mensajes del stream, se envian al cluster con el topic configurado usando una instancia de la clase org.apache.clients.producer.KafkaProducer , aquí se agregan algunos datos útiles en el posterior procesamiento, como la fecha y el tipo de wiki que emite los datos.

Luego se distribuye este componente por diferentes nodos que, en este caso coinciden con los nodos de los brokers de kafka, pero no es una condicion necesaria, y se ponen en marcha el producer para enviar datos al cluster ininterrupidamente.

Para más información, se puede consultar la entrada en el blog de TodoBI.

Información

El cluster Kafka permanece recibiendo datos de las modificaciones de la wikipedia. Esos datos pueden ser obtenidos usando un org.apache.clients.consumer.KafkaConsumer que se conecte al cluster y a los topics de los se quiere recibir datos.

Spark Streaming permite analizar un conjunto de datos recibidos en tiempo real durante una ventana temporal especificada, en este caso, 4 segundos. En esta demostración, se obtiene la ventana temporal usando el conector de Spark Streaming con Kafka, para luego realizar los análisis sobre los datos.

Se realizan tres operaciones Map Reduce para agrupar y contar las actualizaciones, por tipo, idioma y modalidad, para enviar el resultado de estas operaciones al API Rest de Spring Framework

Se ha implementado un cliente http usando la biblioteca java.net de java, para evitar incluir dependencias externas en el programa Spark.

Se pueden añadir funciones propias que se ejecutan dentro de los pasos Map y Reduce, en este caso se implementó un notificador, que usa el Cliente Http mencionado para enviar datos al API REST, así se logra una flexibilidad muy importante en la solución de problemas diversos.

Para más información, se puede consultar la entrada en el blog de TodoBI.

Información

Al abrirse la página de esta demostración, se solicita una conexión con el end point que provee los datos de la wikipedia, mediante un WebSocket.

En el servidor se crea una conexión con el cliente y mientras esté abierta y no ocurran errores en el envio, el sistema busca los datos de los componentes de "Broadcast Queue". Estos componentes, a su vez, están recibiendo datos del API REST, que les llega a través del Cliente Http implementado y usado por Spark para enviar los resultados.

La implementación de la "Broadcast Queue", permite que todas las conexiones al servidor puedan buscar los datos en la misma cola obteniendo un tiempo óptimo de O(1), (Complejidad Computacional de obtener datos de una Cola de Mensajes) para cada conexión en recibir el mensaje.

A su vez, en su papel de Cola de Mensajes permite que la comunicación entre Spark y el Server Socket sea óptima, en O(1) igualmente sin contar los retrazos por red.

Esta implementación permite que un número muy alto de clientes puedan conectarse a visualizar en tiempo real los datos recibidos de la wikipedia.

Para más información, se puede consultar la entrada en el blog de TodoBI.

I+D+i BigData

En StrateBI creemos en el valor de las tecnologías Big Data para el procesamiento de datos y la obtención de conocimiento a partir de los mismos, con el objetivo siempre en mente de mejorar los procesos de toma de decisiones de las organizaciones de cualquier sector, nuestro equipo lleva a cabo una fuerte labor de I+D+i en Big Data.

Investigación

Revisamos novedades y documentación científica de las tecnologías Big Data.

Se hace tanto aquellas emergentes en las que detectamos un gran potencial, como sobre aquellas ya consolidadas.

Con ello detectamos los puntos en los que se puede desarrollar o aprovechar alguna mejora.

Desarrollo

Ponemos en práctica los resultados de las investigaciones anteriores.

Implementamos la mejoras y validamos su aplicación con diversos casos de estudio del mundo real, como los que podemos explorar en nuestra demos Big Data.

Innovación

Una vez hemos comprobado su utilidad y robustez, las introducimos en los proyectos que ofrecemos a nuestros clientes.

De esta forma, StrateBI garantiza el uso de la tecnologías Big Data más novedosas, previamente testeadas y mejoradas por nuestro equipo de I+D+i en Big Data.


Tecnologías Usadas

hadoop

Apache Hadoop es el entorno Big Data por excelencia, permitiendo la computación distribuida en clústeres formados por hardware comercial y de bajo coste.

En su forma más básica incluye almacenamiento distribuido (HDFS), un gestor de recursos de ejecución (YARN) y, funcionando sobre este, el entorno para el desarrollo y ejecución de aplicaciones que implementan en procesamiento distribuido (MapReduce).

Además, sobre la base de los componentes anteriores, han surgido numerosas herramientas, como Hive o Spark, que aportan modelos simplificados de programación para una amplia gama de tareas de procesamiento Big Data.

De entre las distintas tecnologías Big Data, Hadoop es la solución más completa y la que aporta un enfoque más general, siendo ideal para la implementación del novedoso concepto de Data Lake para la posterior explotación de los datos en aplicaciones analíticas.

flume

Flume es un sistema distribuido y confiable para la eficiente colección, agregación y movimiento de datos Streaming.

kafka

Kafka es un sistema de mensajería (publicador-suscriptor) distribuido, tolerante a fallos y de alto rendimiento.

hortonworks cloudera

Con el objetivo de facilitar la instalación y gestión del entorno Hadoop, y de todo el conjunto de aplicaciones que se integran con el mismo, disponemos de lo que se conoce como distribución de Hadoop.

Se trata de un paquete de software, que incluye los componentes básicos de Hadoop junto con una pila de herramientas adicional, listos para su instalación en sistemas operativos Ubuntu, Debian, CentOS o, incluso, Windows Server.

En este sentido, desde de StrateBI recomendamos el uso de una distribución, siendo Hortonworks y Cloudera actualmente las distribuciones líderes. Es por ello que los clústeres Hadoop sobre los que se ejecutan nuestras demos son Hortonworks y Cloudera, siendo ambas soluciones una opción ganadora.

spark spark streaming

Spark implementa el procesamiento de datos haciendo uso intensivo de la Memoria Ram del clúster, en lugar de hacer uso intensivo de disco como MapReduce.

De esta forma se consigue mejorar en gran medida el rendimiento de las aplicaciones Big Data, siendo adecuado para la implementación de algoritmos iterativos de Machine Learning (MLib), análisis estadístico (módulo R) o el análisis de datos en tiempo real (Spark Streaming), aplicación que hemos puesto en práctica en nuestra demo.