Welcome to Apache Kafka -PARTE II (Instalación).

Fede Sardo
5 min readMar 6, 2020

--

En pleno proceso de aprendizaje, nada mejor que compartir conocimiento.

¡Hola! En la PARTE I te comenté sobre que es, para que sirve y cuáles son los conceptos que tenemos que mínimamente conocer si vamos a hablar con alguien sobre Apache Kafka (la idea es que puedas asentir con la cabeza y digas ¡Oh, I know it!). Ahora avanzando un poco más te voy a contar lo fácil que me resultó instalar kafka. Obviamente mi instalación fue con fines de desarrollo y pruebas locales, si lo que buscas es instalar/configurar kafka en un entorno productivo creo que esta no es la lectura indicada para vos.

Mi ambiente

Tampoco es que voy a escribir tanto en esta parte, pero como tengo windows 10 como sistema operativo base y dicen que es un lío levantar kafka ahí es que me armé una máquina virtual, un ubuntu 18.04 server en virtual box (v6.0).

Te cuento que para usar kafka necesitamos si o si tener instalado java 8 (hasta el momento en que escribo estas palabras es la versión que funciona posta).

Primero lo primero, siempre “up-to-date” con el sistema operativo:

sudo apt-get update
sudo apt upgrade

Para la JDK yo elegí instalar esta versión:

sudo apt install openjdk-8-jdk

Después de eso, me hice el hacker furioso y dejé seteados el JAVA_HOME y agregué java al PATH, para eso edité el archivo .bashrc e hice scroll hasta el final de todo (para asegurarme de no romper nada jeje) y lo que agregué fue:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

Reinicié mi máquina virtual y eso fue todo. Esto de java es el único pre-requisito. Además en mi ubuntu instalé docker (yo usé este link)y también docker-compose (me ayudé con esto) y esa fue toda la ciencia.

Instalando kafka, sin condimentos.

Espero que hayas leído la sección anterior porque si no, no te va a andar nada. Acá tenemos que laburar más, arrancamos con descomprimir en la máquina virtual los binarios de kafka que te los bajás de acá. Como yo tengo ubuntu server y no tengo el navegador web, lo que hice fue posicionado sobre el home de mi usuario y descargarlo así (y de paso me hacía el linuxero furioso con un wget jeje):

wget http://apache.dattatec.com/kafka/2.4.0/kafka_2.12-2.4.0.tgz

Con ese comando te bajas el comprimido y listo. Como nunca me acuerdo los parámetros para descomprimir en el comando tar, te los dejo acá también para vos:

tar -xvf kafka_2.12-2.4.0.tgz

Con esto ya alcanzaría (pero no es suficiente para que lo dejemos lo más re utilizable posible). Para verificar, podes posicionarte sobre la carpeta que descomprimiste (no voy a poner el comando de un cd) y ejecutar:

./bin/kafka-topics.sh

Si hiciste todo mal vas a ver un montón de errores feos feos, pero si estamos ok, vas a ver algo como esto:

lo cual es kafka diciéndote “che te faltan parámetros!”.

La otra cosita que vamos a hacer es agregar kafka al PATH y como ya sabes cómo hacerlo, agregamos:

export PATH=/home/<reemplazar_por_tu_usuario>/kafka_2.12–2.4.0/bin:$PATH

¿Y qué ganamos con esto? Simple, que ahora vas a poder ejecutar los comandos de kafka desde cualquier lugar sin tener que estar posicionado dentro de la carpeta /bin. ¡¡Listo!! Kafka está “instalado” peeeero…no está iniciando, vamos a por ello:

Posicionados sobre la carpeta donde se descomprimieron los binarios vamos a crear dos carpetas data/zookeeper y data/kafka. Por si te hace falta el comando mkdir -p siempre ayuda:

mkdir -p data/zookeeper
mkdir -p data/kafka

Ahora tenemos que decirle a zookeeper que tiene que utilizar la carpeta que acabamos de crear. Tenemos que editar el archivo zookeeper.properties que se encuentra en <kafka_home>/config. Por si te confunde, en mi caso es: /home/<reemplazar_por_tu_usuario>/kafka_2.12–2.4.0/config/

Actualizamos la entrada dataDir para que utilice la carpeta que creamos recién:

dataDir=/home/<reemplazar_por_tu_usuario>/kafka_2.12–2.4.0/data/zoookeeper

Liiiissstorti, ahora tenemos que arrancar zookeeper y decirle que use el archivo de configuración que acabamos de editar (te recomiendo que lo hagas en otra consola ya que ahí podras ver luego los logs):

zookeeper-server-start.sh config/zookeeper.properties

Si estamos bien, zookeeper va a iniciarse y al final vas a ver algo como esto:

zookeeper está funcionado! ¡ohh yeah!

Ahora tenemos que hacer algo similar pero en el archivo server.properties (que también se encuentra en la carpeta config). Abrimos el archivo, bajamos, seguí, seguí…ahí…! La entrada que buscamos y que hay que dejarla así es:

log.dirs=/home/<reemplazar_por_tu_usuario>/kafka_2.12–2.4.0/data/kafka

Ya estamos, ya estamos, ahora solo nos queda arrancar kafka:

kafka-server-start.sh config/server.properties

En todos esos logs, bajá hasta el final, controlá tu adrenalina y fijate si vez esto:

kafka is up and running

We are done !!! Merecemos una buena…taza de café, mate, cerveza, lo que quieras! Los logros por más pequeños que sean se festejan. (En mi caso haber aprendido a instalar kafka no tiene nada de pequeño logro, je).

Bonus: Kafka en los tiempos de docker

La parte de levantar kafka en docker (y usando docker-compose) también fue simple porque hay un geniecito que la tiene re clara (se llama Stéphane Maarek y te recomiendo todo su contenido) quien tiene un repo en GitHub con varios archivos yml (esos que usa docker-compose) que te sirven para levantar kafka en varios modos:

- Un nodo zk y un broker de kafka (básicamente como hicimos antes pero sin que vos tengas que laburar).

- Un nodo zk y varios brokers de kafka.

- Varios nodos de zk y un broker kakfa.

- Varios nodos de zk y múltiples brokers de kafka.

Bueno, ¿Qué hice yo? Posicionado en el home de mi usuario me cloné el repo (también podrías haberlo descargado) pero para hacerme el groso y tirar un git clone ejecuté:

git clone https://github.com/simplesteph/kafka-stack-docker-compose.git

Es importante que exportes esta variable antes de iniciar el stack:

export DOCKER_HOST_IP=<ip_de_tu_virtual>

Ayuda: si no sabes la IP de tu máquina virtual el comando: ‘ip a’ puede serte de mucha utilidad.

Ahora sí, te posicionas en la carpeta donde acabas de clonar y lo que haces es ejecutar el archivo yml con el que estés necesitando trabajar y listo. En mi caso:

docker-compose -f zk-single-kafka-multiple.yml up -d

Bueno espero no haberte aburrido y sobre todo que todo esto te haya sido útil. Con esto podes tener tu ambiente listo para empezar a jugar con kafka. Cualquier comentario, corrección es siempre bienvenido.

¿Qué sigue?

En el próximo artículo vamos a practicar y entender algunas cosas, vamos a crear tópicos, producirlos y consumirlos.. Te dejo un abrazo y nos vemos a la próxima!

Gracias por leer! 👍

--

--

Fede Sardo

Mail: fedesardo@gmail.com || Twitter: @fedesardo || Instagram: fede.sardo ||💻 data engineer ||🎓 Studying software engineering || Argentina.