Apache Kafka es un broker de mensajería distribuida diseñado para manejar altos volúmenes de datos con eficiencia en tiempo real. Un cluster de kafka no solamente es altamente escalable y resilente, si no que también ha demostrado tener un rendimiento mucho mas alto que las plataformas convencionales como ActiveMQ o RabbitMQ. Generalmente es usado como un sistema de mensajería pub/sub (ya haré un post sobre esto luego) muchas organizaciones lo utilizan para agregación de logs ya que ofrece almacenamiento persistente para los mensajes que publica.
En este post explico como instalarlo en Ubuntu 14.04, pero podría de forma muy similar instalarse en cualquier sistema operativo basado en debian.
Instalación
Primero hay que crearle un usuario, para ello usamos los siguientes comandos (uno a la vez en la terminal)
#agregar el usuario useradd kafka -m #crear un password para ese usuario passwd kafka #agregar kafka a la lista de sudoers adduser kafka sudo #logearse al usuario recien creado su - kafka
Si aun no lo tienen, instalen java
sudo apt-get install default-jre
Instalar zookeeper, si lo se… que tedio, pero sin esto no vivimos lo prometo.
Apache ZooKeeper es un servicio open source construido para coordinar y sincronizar la configuración de la información de los nodos que pertenecen a un sistema distribuido. Un cluster de Kafka depende de ZooKeeper para realizar, entre otras cosas, operaciones como detectar nodos fallando y elegir nuevos lideres (nodos master).
sudo apt-get install zookeeperd
Para combrobar que zookeeper esta corriendo podemos hacerle un telnet
telnet localhost 2181
Cuando la sesión telnet inicie escribimos ruok, y ZooKeeper debe contestarnos imok y terminar la sesión de telnet (un truco poco conocido 😎 ).
Ahora vamos a lo bueno. Hay que descargar y descomprimir los binarios de kafka. Para obtener la ultima versión podemos visitar la sección de descargas oficial y pinchar el primer enlace en la lista que pone “Binary downloads” a menos que planeen usar Scala, entonces tendrán que usar la versión que concuerde con su versión de Scala.
https://kafka.apache.org/downloads
Ahora hacemos el directorio para almacenar los binarios.
mkdir -p ~/Descargas
Ahora descargamos los binarios con wget aquí para la versión 2.11 (revisen si es la ultima en el link de arriba)
wget "http://mirror.cc.columbia.edu/pub/software/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz" -O ~/Downloads/kafka.tgz
Ahora hacemos un directorio para Kafka
mkdir -p ~/kafka && cd ~/kafka
Y extraemos los binarios en ese directorio
tar -xvzf ~/Descargas/kafka.tgz --strip 1
Ahora hay que configurarlo, y para eso necesitamos un editor de texto yo uso nano porque la vida es muy corta para aprender a usa vi (dicen que en este siglo la gente usa atom…)
nano ~/kafka/config/server.properties
Como por default kafka no permite borrar topics y a nosotros nos gusta ignorar las recomendaciones agregamos esto al final del archivo
delete.topic.enable = true
Porque borrar es importante a veces 😎 . Ahora Guardamos y cerramos (ctrl+o, ctrl+x).
Finalmente! estamos listos para correr nuestro Apache Kafka y para eso usamos el comando nohup y las propiedades que acabamos de configurar
nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 &
Y listo! Kafka ahora esta escuchando en el puerto 9092.
Cuando era niño y el profesor no enseñaba a hacer divisiones, nos decía que si no hacíamos la prueba de la división la tarea estaba incompleta…. En este caso si no comprobamos que kafka esta ejecutándose correctamente no estamos completos en la tarea de instalarlo. Para ello, ponemos el siguiente comando en la terminal:
echo "Hola Mundo" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TopicoPrueba > /dev/null
Como “TopicoPrueba” no existe kafka lo crea automáticamente y produce el mensaje “Hola Mundo” ahora para consumir ese mensaje, usamos el kafka-console-consumer.sh con el parametro –from-beginning asi:
~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning
Les dije que ZooKeeper nos iba a servir! Este comando usa ZooKeeper para encontrar los nodos disponibles con el tópico que creamos y consumir el mensaje que le estamos indicando. Si no hubo ningún problema con la configuración deberíamos ver un output “Hola Mundo” en la terminal.
Y así de “fácil” ya tenemos instalado ZooKeeper en nuestro sistema operativo 🙂
[…] Si aun no tienen instalado Apache Kafka, sigan estas instrucciones […]