Cómo instalar Apache Kafka en Rocky Linux

Apache Kafka es un almacén de datos distribuido para procesar datos en streaming en tiempo real. Está desarrollado por Apache Software Foundation y escrito en Java y Scala. Apache Kafka se utiliza para construir pipelines de flujo de datos en tiempo real y aplicaciones que se adaptan al flujo de datos, especialmente para aplicaciones de nivel empresarial y aplicaciones de misión crítica. Es una de las plataformas de flujo de datos más populares, utilizada por miles de empresas para canalizaciones de datos de alto rendimiento, análisis de flujo e integración de datos.

Apache Kafka combina mensajería, almacenamiento y procesamiento de flujo en un solo lugar. Permite a los usuarios configurar flujos de datos potentes y de alto rendimiento para recopilar, procesar y transmitir datos en tiempo real. Se utiliza en aplicaciones distribuidas modernas con capacidad de escalado para manejar miles de millones de eventos en flujo.

En este tutorial, instalaremos Apache Kafka en el servidor Linux Rocky y aprenderemos el uso básico de Kafka como intermediario de mensajes para el flujo de datos mediante el plugin Kafka.

Requisitos previos

Para seguir este tutorial, necesitarás los siguientes requisitos:

  • Un servidor Rocky Linux – Puedes utilizar el Rocky Linux v8 o v9.
  • Un usuario no root con privilegios de root sudo.

Instalación de Java OpenJDK

Apache Kafka es una aplicación basada en Java. Para instalar Kafka, primero deberás instalar Java en tu sistema. En el momento de escribir esto, la última versión de Apache Kafka requería al menos Java OpenJDK v11.

En el primer paso, instalarás Java OpenJDK 11 desde el repositorio oficial de Rocky Linux.

Ejecuta el siguiente comando dnf para instalar Java OpenJDK 11 en tu sistema Rocky Linux.

sudo dnf install java-11-openjdk

Cuando se te pida que confirmes la instalación, introduce y y pulsa ENTER para continuar.

instalar java

Una vez instalado Java, comprueba la versión de Java mediante el siguiente comando. Verás que Java OpenJDK 11 está instalado en tu sistema Rocky Linux.

java version

comprobar java

Ahora que Java está instalado, comenzarás la instalación de Apache Kafka.

Descarga de Apache Kafka

Apache Kafka proporciona varios paquetes binarios para varios sistemas operativos, incluido Linux/Unix. En este paso, crearás un nuevo usuario de sistema dedicado para Kafka, descargarás el paquete binario de Kafka y configurarás la instalación de Apache Kafka.

Ejecuta el siguiente comando para crear un nuevo usuario del sistema llamado‘kafka‘. Esto creará un nuevo usuario del sistema para Kafka con el directorio principal por defecto ‘/opt/kafka’, que se utilizará como directorio de instalación de Kafka.

sudo useradd -r -d /opt/kafka -s /usr/sbin/nologin kafka

Ahora mueve tu directorio de trabajo a ‘/opt’. A continuación, descarga el paquete binario de Apache Kafka mediante el siguiente comando curl. Ahora verás el archivo‘kafka.tar.gz‘.

cd /opt
sudo curl -fsSLo kafka.tgz https://downloads.apache.org/kafka/3.3.1/kafka_2.12-3.3.1.tgz

descargar kafka

Extrae el archivo «kafka.tar.gz» con el comando tar y cambia el nombre del directorio extraído a «/opt/kafka«.

tar -xzf kafka.tgz
sudo mv kafka_2.12-3.3.1 /opt/kafka

A continuación, cambia la propiedad del directorio «/opt/kafka» al usuario«kafka» mediante el siguiente comando chmod.

sudo chown -R kafka:kafka /opt/kafka

Después, crea un nuevo directorio de registros para Apache Kafka. A continuación, edita la configuración por defecto ‘server.properties’ mediante el editor nano.

sudo -u kafka mkdir -p /opt/kafka/logs
sudo -u kafka nano /opt/kafka/config/server.properties

El directorio de logs de Kafka se utilizará para almacenar los logs de Apache Kafka, y debes definir el directorio de logs en el sertver.properties de configuración de Kakfka.

Descomenta la opción ‘log.dirs’ y cambia el valor a‘/opt/kafka/logs‘.

# logs configuration for Apache Kafka
log.dirs=/opt/kafka/logs

Guarda el archivo y sal del editor cuando hayas terminado.

extraer Kafka

Ya has completado la instalación y configuración básica de Apache Kafka. A continuación, configurarás y ejecutarás Apache Kafka como un servicio systemd.

Ejecutar Kafka como servicio Systemd

El paquete de Apache Kafka incluye otra aplicación, Zookeeper, que se utiliza para centralizar los servicios y mantener la elección del controlador de Kafka, las configuraciones de los temas y las ACL (Listas de Control de Acceso) para el clúster de Apache Kafka.

Para ejecutar Apache Kafka, primero debes ejecutar Zookeeper en tu sistema. Y en este paso, crearás un nuevo archivo de servicio systemd tanto para Zookeeper como para Apache Kafka. Ambos servicios también se ejecutarán bajo el mismo usuario‘kafka‘.

Crea un nuevo archivo de servicio para Zookeeper ‘/etc/systemd/system/zookeeper.service‘ utilizando el siguiente comando.

sudo nano /etc/systemd/system/zookeeper.service

Añade la configuración al archivo.

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, crea un nuevo archivo de servicio para Apache Kafka ‘/etc/systemd/system/kafka.service‘ utilizando el siguiente comando.

sudo nano /etc/systemd/system/kafka.service

Añade la siguiente configuración al archivo. Puedes ver en la sección ‘[Unidad]’ que el servicio Kafka requiere que el‘zookeeper.service’ se ejecute primero, y siempre se ejecuta después del‘zookeeper.service‘.

[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c ‘/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /opt/kafka/logs/start-kafka.log 2>&1’
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Guarda el archivo y sal del editor cuando hayas terminado.

configurar servicio kafka

A continuación, ejecuta el siguiente comando systemctl para recargar el gestor systemd y aplicar los nuevos servicios.

sudo systemctl daemon-reload

Ahora inicia los servicios zookeeper y kafka utilizando el siguiente comando.

sudo systemctl start zookeeper
sudo systemctl start kafka

Habilita los servicios kafka y zookeeper para que se ejecuten automáticamente al arrancar el sistema mediante el siguiente comando systemctl.

sudo systemctl enable zookeeper
sudo systemctl enable kafka

Por último, verifica los servicios zookeeper y kafka utilizando el siguiente comando.

sudo systemctl status zookeeper
sudo systemctl status kafka

En la siguiente salida, puedes ver que el estado actual del servicio zookeeper es en ejecución y también está habilitado.

comprobar guardián del zoo

Y abajo para el estado del servicio kafka, que está en ejecución y también el servicio está habilitado.

cheque kafka

Ahora que ya has terminado la instalación de Apache Kafka y que ya está en marcha, a continuación aprenderás el uso básico de Apache Kafka como intermediario de mensajes para producir mensajes, y también aprenderás a utilizar el plugin de Kafka para transmitir datos en tiempo real.

Funcionamiento básico utilizando la consola Kafka Productor y Consumidor

Antes de empezar, todo el comando que se utilizará para este ejemplo lo proporciona el paquete Kafka que está disponible en el directorio ‘/opt/kafka/bin’.

En este paso, aprenderás a crear y listar temas Kafka, iniciar el productor e insertar datos, transmitir datos mediante el script del consumidor y, por último, limpiarás tu entorno eliminando el tema Kafka.

Ejecuta el siguiente comando para crear un nuevo tema Kafka. Utilizarás el script‘kafka-topics.sh‘ para crear un nuevo tema con el nombre‘TestTopic‘ con una replicación y una partición.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh \
--create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic TestTopic

Ahora ejecuta el siguiente comando para verificar la lista de temas en tu Kafka. Deberías ver que‘TestTopic’ está creado en tu servidor Kafka.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

crear tema

A continuación, para producir mensajes puedes utilizar el script‘kafka-console-producser.sh‘ y luego insertar los datos que serán procesados.

Ejecuta el siguiente comando para iniciar Kafka Console Producer y especifica el tema a‘TestTopic‘.

sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TestTopic

Una vez que tengas el Productor de Consola Kafka, introduce cualquier mensaje que vaya a ser procesado.

A continuación, abre una nueva sesión de terminal e inicia sesión en el servidor. A continuación, abre el Consumidor de la Consola Kafka mediante el script‘kafka-conosle-consumer.sh‘.

Ejecuta el siguiente comando para iniciar el Consumidor de Consola kafka y especifica el tema a‘TestTopic‘.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TestTopic --from-beginning

En la siguiente captura de pantalla, puedes ver que todos los mensajes del Productor de la Consola Kafka se procesan en la Consola del Consumidor. También puedes escribir otros mensajes en la Consola Productora y el mensaje se procesará automáticamente y se mostrará en la pantalla de la Consola Consumidora.

transmitir datos con la consola kafka consumidor y productor

Ahora pulsa Ctrl+c para salir tanto de la Consola Kafka Productora como de la Consola Kafka Consumidora.

Para limpiar tu entorno Kafka, puedes borrar y eliminar el‘TestTopic‘ mediante el siguiente comando.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic TestTopic

Transmisión de datos con el plugin Kafka Connect

Apache Kafka proporciona múltiples plugins que pueden utilizarse para transmitir datos desde múltiples fuentes. Los plugins adicionales de la biblioteca Kafka están disponibles por defecto en el directorio ‘/opt/kafka/libs‘, debes habilitar los plugins kafka mediante el archivo de configuración ‘/opt/kafka/config/connect-standalone.properties‘. En este caso, para el modo Kafka standalone.

Ejecuta el siguiente comando para editar el archivo de configuración de Kafka‘/opt/kafka/config/connect-standalone.properties’.

sudo -u kafka nano /opt/kafka/config/connect-standalone.properties

Descomenta la línea ‘plugin.path’ y cambia el valor al directorio de la biblioteca del plugin‘/opt/kakfa/libs‘.

plugin.path=/opt/kafka/libs

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para crear un nuevo archivo‘/opt/kafka/test.txt‘ que se utilizará como fuente de datos para el flujo Kafka.

sudo -u kafka echo -e "Test message from file\nTest using Kafka connect from file" > /opt/kafka/test.txt

Ahora ejecuta el siguiente comando para iniciar el Consumidor Kafka en modo autónomo con los archivos de configuración ‘connect-file-source.properties’ y‘connect-file-sink.properties‘.

Este comando y esta configuración son un ejemplo predeterminado del flujo de datos Kafka con el archivo fuente‘test.txt ‘ que acabas de crear. Este ejemplo también creará automáticamente un nuevo tema ‘connect-test’ al que podrás acceder a través de la Consola del Consumidor Kafka.

cd /opt/kafka
sudo -u kafka /opt/kafka/bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties

Ahora, abre otra sesión de terminal y ejecuta el siguiente comando para iniciar el Consumidor de la Consola Kafka. Especifica también el tema «connect-test». Verás el mensaje del archivo ‘prueba.txt‘.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning

Ahora puedes actualizar el archivo ‘prueba.txt‘ y los nuevos mensajes se procesarán y transmitirán automáticamente en el Consumidor de la Consola Kafka.

Ejecuta el siguiente comando para actualizar el archivoprueba.txt’ con nuevos mensajes.

sudo -u kafka echo "Another test message from file test.txt" >> test.txt

En la siguiente salida, puedes ver que los nuevos mensajes son procesados automáticamente por Kafka cuando hay cambios en el archivotest.txt’. Ahora has completado el uso básico del plugin Kafka connect para transmitir mensajes a través de archivos.

transmitir mensaje mediante archivo

Conclusión

A lo largo de esta guía, has aprendido a instalar Apache Kafka en el sistema Rocky Linux. También has aprendido el uso básico de la Consola del Productor de Kafka para producir y procesar mensajes y del Consumidor de Kafka para recibir mensajes. Por último, también has aprendido a habilitar los plugins de Kafka y a utilizar el plugin Kafka Connect para transmitir mensajes en tiempo real desde un archivo.

También te podría gustar...