Searching...
jueves, 11 de enero de 2018

Introducci贸n a la ingesta en Tiempo Real con Kafka

En una publicaci贸n anterior aborde el tema de la ingesti贸n de datos masivos usando la herramienta Flume (cons煤ltala aqu铆). Siguiendo con el tema de la ingesti贸n de datos, en este post voy a introducir el uso de Kafka para la ingesti贸n en Tiempo Real sobre Data Lakes construidos en plataformas Big Data, como puede ser Hadoop HDFS.



En el mundo actual, las aplicaciones generan constantemente informaci贸n en tiempo real, y esta informaci贸n necesita formas f谩ciles de enrutarse de manera confiable y r谩pida a m煤ltiples tipos de receptores. La mayor铆a de las veces, las aplicaciones que producen informaci贸n y las aplicaciones que consumen esta informaci贸n est谩n separadas y son inaccesibles entre s铆. Esto, a veces, lleva a un nuevo desarrollo de los productores o consumidores de informaci贸n para proporcionar un punto de integraci贸n entre ellos. Por lo tanto, se requiere un mecanismo que permita una integraci贸n transparente de informaci贸n entre productores y consumidores que evite cualquier tipo de reescritura de una aplicaci贸n en cada extremo.

En la era actual de Big Data, el primer desaf铆o es recopilar los datos, ya que se trata de una cantidad masiva de datos, y el segundo desaf铆o es analizarlos. Este an谩lisis generalmente incluye el siguiente tipo de datos y mucho m谩s:

·       Datos de comportamiento del usuario
·       Trazabilidad del rendimiento de aplicaciones
·       Datos de actividad en forma de logs
·       Mensajes de eventos

La publicaci贸n de mensajes es un mecanismo para conectar varias aplicaciones con la ayuda de mensajes que se enrutan entre ellos, por ejemplo, mediante un intermediario de mensajes como Kafka. Kafka es una soluci贸n a los problemas en tiempo real de cualquier soluci贸n de software, es decir, para tratar vol煤menes de informaci贸n en tiempo real y enrutarlos a m煤ltiples consumidores r谩pidamente. Kafka proporciona una integraci贸n fluida entre la informaci贸n de los productores y los consumidores sin bloquear a los productores de la informaci贸n y sin permitirles saber qui茅nes son los consumidores finales.

Kafka tambi茅n soporta la carga paralela de datos en sistemas Hadoop sobre plataformas Big Data.

El siguiente diagrama muestra un escenario t铆pico de agregaci贸n y an谩lisis de Big Data respaldado por el sistema de mensajer铆a Apache Kafka:


Configuraci贸n de un Cluster Kafka Single-Node Single-Broker

Para la siguiente discusi贸n suponemos que previamente hemos construido e instalado Kafka en una sola m谩quina. Ahora es el momento de configurar un cl煤ster Kafka basado en un 煤nico agente (single node – single br贸ker), como se muestra en el siguiente diagrama:


Inicio del servidor ZooKeeper

Kafka proporciona el archivo de configuraci贸n de ZooKeeper predeterminado y simple que se utiliza para iniciar una 煤nica instancia local de ZooKeeper. Aqu铆, ZooKeeper sirve como la interfaz de coordinaci贸n entre el broker de Kafka y los consumidores. La descripci贸n general de Hadoop que se ofrece en la Wiki de Hadoop es la siguiente (http://wiki.apache.org/hadoop/ ZooKeeper / ProjectDescription):

"ZooKeeper (http://zookeeper.apache.org) permite que los procesos distribuidos se coordinen entre s铆 a trav茅s de un espacio de nombre jer谩rquico compartido de registros de datos (znodes), muy parecido a un sistema de archivos.

Las principales diferencias entre ZooKeeper y los sistemas de archivos est谩ndar son que cada znode puede tener datos asociados y los znodes est谩n limitados a la cantidad de datos que pueden tener. ZooKeeper se ha dise帽ado para almacenar datos de coordinaci贸n: informaci贸n de estado, configuraci贸n, informaci贸n de ubicaci贸n, etc. "

Primero, inicia ZooKeeper con el siguiente comando:

Deber铆as obtener una salida como la que se muestra en la siguiente captura de pantalla:


Las propiedades importantes definidas en zookeeper.properties se muestran en el siguiente c贸digo:


Por defecto, el servidor ZooKeeper escuchar谩 en *: 2181 / tcp. Para obtener informaci贸n detallada sobre c贸mo configurar m煤ltiples servidores de ZooKeeper, visita http://zookeeper.apache.org/.

Inicio del agente Kafka

Ahora inicia el broker Kafka usando el siguiente comando:

Ahora deber铆as ver una salida como la que se muestra en la siguiente captura de pantalla:


server.properties define las siguientes propiedades importantes requeridas para
el agente de Kafka:

Para obtener una lista completa de las propiedades de broker de Kafka, visite http://kafka.apache.org/documentation.html#brokerconfigs.

Creaci贸n de un topic de Kafka

Kafka proporciona una utilidad de l铆nea de comandos para crear topics en el servidor de Kafka. Vamos a crear un topic llamado kafkatopic con una 煤nica partici贸n y solo una r茅plica usando esta utilidad:

Deber铆as obtener una salida como la que se muestra en la siguiente captura de pantalla:


La utilidad mencionada anteriormente crear谩 un topic y mostrar谩 el mensaje de creaci贸n exitoso como se muestra en la captura de pantalla anterior.

Inicio de un productor para enviar mensajes

Kafka proporciona a los usuarios un cliente productor de l铆nea de comandos que acepta entradas de la l铆nea de comandos y las publica como un mensaje al cl煤ster de Kafka. De manera predeterminada, cada nueva l铆nea introducida se considera como un mensaje nuevo. Se usa el siguiente comando para iniciar el productor basado en consola para enviar los mensajes:

Deber铆as ver una salida como la que se muestra en la siguiente captura de pantalla:


Al iniciar el cliente de la l铆nea de comandos del productor, se requieren los siguientes par谩metros:

·       broker-list
·       topic

broker-list especifica los intermediarios que se conectar谩n como <node_address: port>, es decir, localhost: 9092. El tema Kafkatopic es un topic que se cre贸 en la secci贸n de Creaci贸n un topic de Kafka. El nombre del topic es obligatorio para enviar un mensaje a un grupo espec铆fico de consumidores.

Ahora escriba el siguiente mensaje, This is single broker, y presiona Enter. Deber铆as ver una salida como la que se muestra en la siguiente captura de pantalla:


Prueba algunos mensajes m谩s.

Inicio de un consumidor para consumir mensajes

Kafka tambi茅n proporciona un cliente de l铆nea de comandos para el consumo de mensajes. se utiliza el siguiente comando para iniciar el consumidor basado en consola que muestra el resultado en la l铆nea de comando tan pronto como se suscribe al topic creado en el br贸ker de Kafka:

En la ejecuci贸n del comando anterior, debes obtener una salida como la que se muestra en la siguiente captura de pantalla:


Las propiedades predeterminadas para el consumidor se definen en consumer.properties. Las propiedades importantes son:

Ejecutando los cuatro componentes (zookeeper, broker, productor y consumidor) en diferentes terminales, podr谩s introducir mensajes desde el terminal del productor y verlos aparecer en el terminal del consumidor suscrito.

Se puede ver la informaci贸n de uso para las herramientas de l铆nea de comandos tanto del productor como del consumidor ejecutando el comando sin argumentos.

0 comentarios:

Publicar un comentario

Gracias por participar en esta p谩gina.

 
Back to top!