Inicio Rápido: Watcher & Node-RED hacia Kafka

Parte 1. ¿Qué es Kafka?
Apache Kafka es una plataforma distribuida de transmisión de eventos diseñada para el procesamiento de datos con alta capacidad de transferencia y tolerancia a fallos. Permite flujos de datos en tiempo real mediante la publicación de mensajes por parte de productores en temas (topics), mientras que los consumidores se suscriben a estos temas para procesar los datos. Kafka es ampliamente utilizado para construir pipelines de datos, análisis en tiempo real e integración de diversas fuentes de datos. Su arquitectura robusta garantiza escalabilidad y durabilidad, lo que lo convierte en una opción popular para aplicaciones modernas basadas en datos.
Parte 2. Crear un clúster de Kafka con Docker
¿Por qué usar Docker? Porque Docker puede simular el entorno de múltiples computadoras en una sola máquina y desplegar aplicaciones con gran facilidad. Por lo tanto, en este proyecto usaremos Docker para configurar el entorno y mejorar la eficiencia.
Paso 1. Descargar Docker
Descarga el instalador adecuado según tu sistema operativo. Haz clic aquí para ir al sitio.

Si tu computadora es Windows, NO instales Docker hasta haber terminado el Paso 2.
Paso 2. Instalar WSL (Subsistema de Windows para Linux)
Este paso es para Windows. Si estás en Mac o Linux, puedes omitirlo.
- Ejecuta el siguiente código como administrador.

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
-
Descarga esta herramienta desde aquí y haz doble clic para instalarla.
-
Ve a la Microsoft Store, busca y descarga la versión de Linux que prefieras. En este ejemplo se instaló Ubuntu.

- Después de instalar Linux, ábrelo, establece un nombre de usuario y contraseña, y espera unos minutos para que se inicialice.

- Ejecuta las siguientes instrucciones para usar WSL.

- Una vez que hayas instalado WSL, ahora puedes ejecutar el instalador de Docker. Si ves la siguiente imagen, significa que está funcionando correctamente.

Paso 3. Crear imagen de Kafka y ejecutarla
- Elige una ubicación y crea un archivo llamado docker-compose.yml, luego copia el siguiente código en él.

services:
zookeeper:
image: wurstmeister/zookeeper ## image
container_name: zookeeper
ports:
- "2181:2181" ## Externally exposed port number
kafka:
image: wurstmeister/kafka ## image
container_name: kafka
volumes:
- ./volume:/volume ## Mounting location
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 ## Host machine IP
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 ## Running Kafka is base to zookeeper
KAFKA_ADVERTISED_PORT: 9092
KAFKA_LOG_RETENTION_HOURS: 120
KAFKA_MESSAGE_MAX_BYTES: 10000000
KAFKA_REPLICA_FETCH_MAX_BYTES: 10000000
KAFKA_GROUP_MAX_SESSION_TIMEOUT_MS: 60000
KAFKA_NUM_PARTITIONS: 3
KAFKA_DELETE_RETENTION_MS: 1000
kafka-manager:
image: sheepkiller/kafka-manager ## image: open source web manage interface about kafka cluster
container_name: kafka-manager
environment:
ZK_HOSTS: 127.0.0.1 ## host machine IP
ports:
- "9009:9000" ## exposed port
- Ejecutar Kafka en contenedor e ingresar
docker-compose up -d
docker exec -it kafka /bin/bash

- Crear un nuevo topic, producir y consumir mensajes para probar si Kafka funciona correctamente.
kafka-topics.sh --create --topic watcher --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1
kafka-console-producer.sh --topic=watcher --broker-list kafka:9092
kafka-console-consumer.sh --bootstrap-server kafka:9092 --from-beginning --topic watcher

Parte 3. Ejecutar módulo de mensajes Kafka en Node-RED
Paso 4. Instalar el módulo de mensajes Kafka
- Haz clic en Manage palette. Si aún no instalas Node-RED, haz clic aquí.

- Busca kafka-manager e instálalo.

Paso 5. Configurar el módulo Kafka
- Arrastra los módulos (inject, kafka producer, kafka consumer, debug) al área de trabajo.

- Haz doble clic en Kafka Producer para configurarlo. Durante este paso, asegúrate de agregar un nuevo broker.

- Haz doble clic en Kafka Consumer y configúralo como se muestra a continuación.


- Una vez finalizada la configuración, haz clic en el botón Deploy para desplegarlo.

Cada vez que realices cambios, haz clic en Deploy para aplicar.
- Haz clic en el botón cuadrado para enviar una marca de tiempo y verificar si todo el proceso funciona correctamente. Si funciona, deberías recibir la marca de tiempo en el Kafka Consumer.

Parte 4. Ejecutar una tarea en Watcher
- Primero, necesitas ejecutar una tarea en el Watcher como se muestra en el siguiente video. Si deseas saber más, haz clic aquí.
- Después de ejecutar una tarea en el Watcher, debes seguir esta guía para enviar mensajes del Watcher a Node-RED.
Parte 5. Recibir datos en Kafka
- Reemplaza el módulo timestamp por los módulos OpenStream y function, luego haz doble clic para configurarlos. No olvides hacer Deploy para aplicar los cambios.
node.send({ payload: msg.payload.value[0].content });
node.send({ payload: msg.payload.value[0].image_url });

- Yo ejecuté un modelo de Detección de Personas en el Watcher. Así, el Watcher enviará un mensaje a Kafka cada vez que detecte una persona, y podrás ver la imagen correspondiente al abrir el enlace.

¡Felicidades por completar la integración de Watcher con Kafka!
Kafka ofrece un sinfín de funciones útiles que puedes seguir explorando. Sigue con el excelente trabajo y adéntrate en las emocionantes posibilidades que te esperan.
Soporte técnico y discusión del producto
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte distintos tipos de soporte y asegurar que tu experiencia sea lo más fluida posible.
Ofrecemos varios canales de comunicación para adaptarnos a tus preferencias y necesidades.