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.
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
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
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.
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.
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.
Y abajo para el estado del servicio kafka, que está en ejecución y también el servicio está habilitado.
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
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.
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 archivo‘prueba.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 archivo‘test.txt’. Ahora has completado el uso básico del plugin Kafka connect para transmitir mensajes a través de archivos.
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.