Get it on Google Play
Tu partner Freelance para tus proyectos IT

Apache Kafka Connector

12-08-2020

A partir de la increíble demanda que parece que tiene Kafka, en el vídeo de hoy hemos hablado sobre Kafka Connect, que básicamente es la posibilidad de usar componentes estadard(O programar los tuyos propios, pero eso para otro vídeo). De esta manera, hay procesos estándar que no tienes porque programar un publicador o subscriptor especifico. Por cierto, que empezamos serie de vídeos dedicados a Kafka.

Tenemos dos tipos de conectores, los que publican a partir de una fuente(source) y los que procesan a partir de una entrada en una lísta(sink). Hoy usaremos dos conectores, uno que leerá los datos de un fichero y los publicará en una lista(source) y otro que leerá los datos de una lista y los escribirá en un fichero(sink).

Instalar y arrancar Kafka

Lo primero que hemos hecho en el vídeo ha sido descargar y descomprimir Kafka de la URL https://kafka.apache.org/. Este es todo el proceso de instalación.

A partir de aquí hemos arrancado primero Zookeeper y después Kafka en modo ‘standalone'(Es decir, que trabajaremos con un cluster de un solo nodo):

<KAFKA_HOME>/bin/zookeeper-server-start.sh config/zookeeper.properties

<KAFKA_HOME>/bin/kafka-server-start.sh config/server.properties

Después hemos arrancado un subscriptor por consola para poder ver como se van publicando los mensajes, esto no es obligatorio pero nos viene bien para ver mejor lo que pasa allí dentro:

<KAFKA_HOME>/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test –from-beginning

Creamos nuestro primer conector(source) y arrancamos Kafka Connector

Primero creamos un fichero de configuración(source.properties) para nuestro primer conector que se va a encargar de leer los datos de un fichero(test.txt) y lo va a insertar en la lista(topic) llamada ‘connect-test’.

name=local-file-source
connector.class=FileStreamSource
tasks.max=1
file=test.txt
topic=connect-test

El fichero de configuración de un conector es muy sencillo: tenemos la propiedad ‘name’ que tiene el nombre del conector que debe ser diferente en todos los conectores, el campo ‘connector.class’ con el nombre de la classe Java que tiene que ejecutar, el campo ‘tasks.max’ con el número máximo de tareas en paralelo que puede procesar, el campo ‘file’ con el fichero a leer y el campo ‘topic’ con el nombre de la lista a insertar mensajes.

Ahora ya solo queda arrancar Kafka Connect:

<KAFKA_HOME>/bin/connect-standalone.sh config/connect-standalone.properties ./source.properties

Lo arrancamos con el script ‘connect-standalone.sh’ que tiene como primer parámetro la configuración del ‘worker’ que en esta caso hemos usado el que viene por defecto y después tantos ficheros de configuración como conectores que tengamos, en este caso uno(source.properties).

Creamos nuestro segundo conector(sink) y reiniciamos Kafka Connector

Configuramos nuestro segundo conector, en este caso del tipo ‘sink’ que va a escribir en un fichero lo que va a leer del topic ‘connect-test’. El fichero de configuración(sink.properties) queda de la siguiente manera:

name=local-file-sink
connector.class=FileStreamSink
tasks.max=1
file=test.sink.txt
topics=connect-test

Y paramos y volvemos ha arrancar Kafka Connector, esta vez con los dos conectores:

<KAFKA_HOME>/bin/connect-standalone.sh config/connect-standalone.properties ./source.properties ./sink.properties
Kafka Connect Flow

Kafka Connect Flow

Si te ha servido, por favor comparte
 

Leave a Reply