1. Apache Kafka: instalar Kafka, ZooKeeper y Java
Para instalar eel kit de java se introduce el siguiente comando en el terminal:
sudo apt-get install openjdk-8-jdk
ya instalado Java, se hace lo mismo con el servicio de sincronización de
procesos Apache ZooKeeper. que se ejecuta con el siguiente comando:
sudo apt-get install zookeeperd
Con este comando, se puede verificar si el servicio de ZooKeeper está activo:
sudo systemctl status zookeeper
Apache ZooKeeper ejecutándose
En la entrada «Active» puedes averiguar si ZooKeeper está activo y desde cuando
Se crea un perfil de usuario de Kafka para volver a utilizar el servidor más
adelante. Se escribe en el terminal el siguiente comando:
2. sudo useradd kafka -m
Mediante el administrador de contraseñas passwd, se puede asignar al usuario la
contraseña que se desee, escribiendo primero el comando y luego la contraseña:
sudo passwd kafka
lo siguiente es conceder los derechos sudo al usuario «kafka»:
sudo adduser kafka sudo
Con el perfil de usuario que acaba de crear, puede iniciar sesión en cualquier
momento:
su – Kafka
para instalar Kafka. Existen muchas fuentes de descarga fiables que ofrecen
versiones actuales y anteriores de este software de procesamiento de flujo, para
obtener los archivos de instalación de primera mano en el directorio de
descargas de Apache Software Foundation. Se recomienda disponer de
una versión actualizada de Kafka, por lo que, al escribir el
siguiente comando en el terminal, quizás tenga que adaptarlo a la nueva versión:
wget http://www.apache.org/dist/kafka/2.1.0/kafka_2.12-2.1.0.tgz
El siguiente paso es descomprimir el archivo comprimido que ha descargado:
sudo tar xvzf kafka_2.12-2.1.0.tgz --strip 1
3. Utiliza el parámetro «--strip 1» para asegurar que los archivos extraídos se
almacenan directamente en el directorio «~/Kafka». De lo contrario, Ubuntu
pondría todos los archivos en el directorio «~/kafka/kafka_2.12-2.1.0», según la
versión utilizada en este tutorial de Kafka. El requisito es que hayas creado
previamente un directorio llamado «Kafka» mediante mkdir y lo hayas cambiado
con «cd Kafka».
Configurar el sistema de transmisión y mensajería
Instalado Apache Kafka, Java Runtime Environment y ZooKeeper, se podrá
ejecutar el servicio de Kafka en cualquier momento. Pero primero se debe hacer
unas pequeñas configuraciones para que el software ejecute todas las tareas de
manera óptima en el futuro.
Desbloquear la eliminación de topics
En su configuración predeterminada, Kafka no permite eliminar topics, es
decir, las unidades de almacenamiento y categorización de un clúster de
Kafka, aunque puede modificarse fácilmente mediante el archivo de
configuración server.properties. Para abrir este archivo, que se encuentra en la
carpeta «config», introduce el siguiente comando en el editor de
texto nano estándar:
sudo nano ~/kafka/config/server.properties
Después de configurar este archivo, se introduce una nueva entrada que permita
eliminar los topics de Kafka:
4. delete.topic.enable=true
En el archivo de configuración también se puede modificar otros elementos, como el puerto TCP
(predeterminado: 2181), que se utiliza para ejecutar ZooKeeper.
crear un archivo de ZooKeeper para el administrador de sesiones
systemd de Ubuntu
se crea el archivo para el servicio de sincronización de ZooKeeper introduciendo
el siguiente comando en el terminal:
sudo nano /etc/systemd/system/zookeeper.service
Con esto se creará el archivo y también lo abrirá en el editor nano. Se Introduce
las siguientes líneas y, luego, se guarda el archivo:
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
5. Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh
/home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
Como resultado, systemd entenderá que ZooKeeper no puede iniciarse hasta que
la red y el sistema de archivos estén listos, como se define en la sección [Unit]. En
[Service] se especifica que el administrador de sesión debe utilizar los
archivos zookeeper-server-start.sh y zookeeper-server stop.sh
para iniciar y detener ZooKeeper. Además, se define un reinicio automático para
los casos en los que el servicio se detenga de improviso. La entrada [Install]
regula cuándo se inicia el archivo, estableciendo «multi-user.target» como valor
predeterminado para un sistema multiusuario (por ejemplo, un servidor).
crear un archivo de Kafka para el administrador de sesiones
systemd de Ubuntu
El archivo .service de Apache Kafka se puede crear escribiendo el siguiente
comando en el terminal:
sudo nano /etc/systemd/system/kafka.service
En el nuevo archivo que se abrirá en el editor nano, se copia el siguiente
contenido:
[Unit]
Requires=zookeeper.service
6. After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh
/home/kafka/kafka/config/server.properties > /home/kafka/kafka/kafka.log
2>&1'
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
En la sección [Unit] de este archivo, se especifica que el servicio de Kafka depende
de ZooKeeper, lo que asegura que el servicio de sincronización también se inicie
cuando se ejecute el archivo kafka.service. Bajo [Service], se introducen los
archivos del Shell kafka-server-start.sh y kafka-server-
stop.sh para iniciar o detener el servidor de Kafka. En este archivo también se
especifica el reinicio automático en caso de caída de la conexión, así como la
entrada referente al sistema multiusuario.
7. Kafka: primer arranque y creación de una entrada de inicio
automático
Una vez que se haya creado las entradas del administrador de sesiones
para Kafka y ZooKeeper, podemos iniciar Kafka con el siguiente comando
sudo systemctl start kafka
para comprobar si el servidor Kafka se ha iniciado usamos el comando:
sudo journalctl -u kafka
El output debería tener este aspecto:
Finalmente se activa el inicio automático como parte del inicio del sistema:
8. sudo systemctl enable kafka
Apache Kafka: Implementación
se debe procesar un primer mensaje utilizando la plataforma de mensajería. En
el cual se necesitará un productor y un consumidor, es decir, una instancia que
permita escribir y publicar datos en topics, así como una instancia que pueda
leer los datos de los topics. En primer lugar, se creará un topic, que se
llamará TutorialTopic . Como se trata de un topic sencillo a modo de prueba, tan
solo incluirá una partición y una réplica:
> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-
factor 1 --partitions 1 --topic TutorialTopic
Luego se crea un productor que inserte un primer mensaje de muestra (como
«¡Hola, mundo!») en el topic que se acaba de establecer. Para ello se utiliza
el script de Shell kafka-console-producer.sh, que recibirá el nombre del host, el
puerto del servidor y el nombre del topic como argumentos:
echo "¡Hola, mundo!" | ~/kafka/bin/kafka-console-producer.sh -
-broker-list localhost:9092 --topic TutorialTopic > /dev/null
Utilizando el script kafka-console-consumer.sh, se creará un consumidor de Kafka
que procesará mensajes de TutorialTopic. asimismo, el nombre del host y el puerto
del servidor de Kafka y el nombre del topic son necesarios como argumentos.
Además, se añadirá el argumento «--from-beginning» para que el mensaje
«¡Hola, mundo!», que en este caso se publicó antes de que el consumidor se
iniciara, pueda ser procesado por este:
9. > bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic
TutorialTopic --from-beginning
Como resultado, el mensaje «¡Hola, mundo!» aparece en el terminal, con el script
ejecutándose y esperando a que se publiquen más mensajes en el topic. Si se
introduce más datos en otra ventana del terminal mediante el productor, también
debería verse en la ventana donde se ejecuta el script del consumidor.
Puede detener los scripts del consumidor en cualquier momento presionando la combinación de
teclas [Ctrl] + [C].