spark_icono Kafka

Adquisición de datos de actualizaciones de Wikipedia con Apache Kafka en tiempo real


Fuentes de datos

Artículos de Wikipedia

Tipo Fecha Título

Artículos de Wikimedia

Tipo Fecha Título

Artículos de Wikidata

Tipo Fecha Título
Información

En la vista "Cluster" a la izquierda se muestra el cluster de 3 brokers y 3 producers que emiten datos hacia el cluster kafka.

El componente "Kafka Producer" se conecta al stream de la wikipedia y registra un listener, que es un sujeto del patrón observer ; cuando se genera una actualización en la wikipedia se recibe a través del "Socket" y este lo notifica al "Listener", que contiene un org.apache.clients.producer.KafkaProducer, el producer registra un callback para notificarle que se ha enviado un mensaje a kafka, la notificación contiene el offset y la partición de cada mensaje, en este paso se envía cada minuto vía API el tiempo en milisegundos y el offset para ese tiempo.

Esta información se almacena en una Base de Datos PostgreSQL, para luego ser consultada. Cuando el usuario selecciona una fecha a partir de la cual quieren ver los mensajes, el sistema busca en la Base de Datos un offset registrado en la fecha solicitada, el cluster kafka mantiene los mensajes en los ficheros locales por 3 días.

Una vez obtenido el offset para la fecha requerida se solicita por medio del "Consumer Holder" un "Thread Safe Kafka Consumer" que realiza las operaciones seek y poll, para indicar el punto y consumir a partir de él respectivamente.

Por defecto, un org.apache.kafka.clients.consumer.KafkaConsumer no es Thread Safe, por tanto para ser usado en un entorno con accesos simultáneo de usuarios se hizo una implementación que permite usar un Consumer por varios hilos, sinchronizando el acceso al objeto.

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

Información

En la vista "Cluster" a la izquierda se muestra el cluster de 3 brokers y 3 producers que emiten datos hacia el cluster kafka.

El componente "Kafka Producer" se conecta al stream de la wikipedia y registra un listener, que es un sujeto del patrón observer ; cuando se genera una actualización en la wikipedia se recibe a través del "Socket" y este lo notifica al "Listener", que contiene un org.apache.clients.producer.KafkaProducer, el producer registra un callback para notificarle que se ha enviado un mensaje a kafka, la notificación contiene el offset y la partición de cada mensaje, en este paso se envía cada minuto vía API el tiempo en milisegundos y el offset para ese tiempo.

Esta información se almacena en una Base de Datos PostgreSQL, para luego ser consultada. Cuando el usuario selecciona una fecha a partir de la cual quieren ver los mensajes, el sistema busca en la Base de Datos un offset registrado en la fecha solicitada, el cluster kafka mantiene los mensajes en los ficheros locales por 3 días.

Una vez obtenido el offset para la fecha requerida se solicita por medio del "Consumer Holder" un "Thread Safe Kafka Consumer" que realiza las operaciones seek y poll, para indicar el punto y consumir a partir de él respectivamente.

Por defecto, un org.apache.kafka.clients.consumer.KafkaConsumer no es Thread Safe, por tanto para ser usado en un entorno con accesos simultáneo de usuarios se hizo una implementación que permite usar un Consumer por varios hilos, sinchronizando el acceso al objeto.

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.