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!