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 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
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.