Primeros pasos con apache-kafka

Instalación o configuración

Paso 1. Instalar Java 7 u 8

Paso 2. Descargue Apache Kafka en: http://kafka.apache.org/downloads.html

Por ejemplo, intentaremos descargar Apache Kafka 0.10.0.0

Paso 3. Extraiga el archivo comprimido.

En Linux:

tar -xzf kafka_2.11-0.10.0.0.tgz

En la ventana: haga clic con el botón derecho –> Extraer aquí

Paso 4. Iniciar Zookeeper

cd kafka_2.11-0.10.0.0

Linux:

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

Ventanas:

bin/windows/zookeeper-server-start.bat config/zookeeper.properties

Paso 5. Inicie el servidor Kafka

Linux:

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

Ventanas:

bin/windows/kafka-server-start.bat config/server.properties

Introducción

Apache Kafka™ es una plataforma de transmisión distribuida.

Lo que significa

1-Te permite publicar y suscribirte a streams de discos. En este sentido, es similar a una cola de mensajes oa un sistema de mensajería empresarial.

2-Te permite almacenar flujos de registros de forma tolerante a fallas.

3-Le permite procesar flujos de registros a medida que ocurren.

Se utiliza para dos amplias clases de aplicación:

1-Creación de canalizaciones de datos de transmisión en tiempo real que obtienen datos de manera confiable entre sistemas o aplicaciones

2-Crear aplicaciones de transmisión en tiempo real que transformen o reaccionen a los flujos de datos

Los scripts de la consola de Kafka son diferentes para las plataformas basadas en Unix y Windows. En los ejemplos, es posible que deba añade la extensión según tu plataforma. Linux: scripts ubicados en bin/ con extensión .sh. Windows: scripts ubicados en bin\windows\ y con extensión .bat.

Instalación

Paso 1: Descargar el código y descomprimirlo:

tar -xzf kafka_2.11-0.10.1.0.tgz
cd kafka_2.11-0.10.1.0

Paso 2: iniciar el servidor.

para poder eliminar temas más tarde, abra server.properties y establezca delete.topic.enable en verdadero.

Kafka depende en gran medida del cuidador del zoológico, por lo que debe iniciarlo primero. Si no lo tiene instalado, puede usar el script de conveniencia empaquetado con kafka para obtener una instancia rápida y sucia de ZooKeeper de un solo nodo.

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

Paso 3: asegúrese de que todo esté funcionando

Ahora debería tener zookeeper escuchando localhost:2181 y un solo corredor kafka en localhost:6667.

Crear un tema

Solo tenemos un intermediario, por lo que creamos un tema sin factor de replicación y solo una partición:

kafka-topics --zookeeper localhost:2181 \
    --create \
    --replication-factor 1 \
    --partitions 1 \
    --topic test-topic

Revisa tu tema:

kafka-topics --zookeeper localhost:2181 --list
test-topic

kafka-topics --zookeeper localhost:2181 --describe --topic test-topic
Topic:test-topic    PartitionCount:1    ReplicationFactor:1 Configs:
Topic: test-topic   Partition: 0    Leader: 0   Replicas: 0 Isr: 0

enviar y recibir mensajes

Lanzar un consumidor:

kafka-console-consumer --bootstrap-server localhost:9092 --topic test-topic

En otro terminal, inicie un productor y envíe algunos mensajes. De forma predeterminada, la herramienta envía cada línea como un mensaje independiente al intermediario, sin codificación especial. Escriba algunas líneas y salga con CTRL+D o CTRL+C:

kafka-console-producer --broker-list localhost:9092 --topic test-topic   
a message
another message
^D

Los mensajes deben aparecer en el terminal del consumidor.

Deja de kafka

kafka-server-stop 

iniciar un clúster de múltiples agentes

Los ejemplos anteriores usan solo un corredor. Para configurar un clúster real, solo necesitamos iniciar más de un servidor kafka. Se coordinarán automáticamente.

Paso 1: para evitar colisiones, creamos un archivo server.properties para cada intermediario y cambiamos las propiedades de configuración id, port y logfile.

Copiar:

cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties

Edite las propiedades de cada archivo, por ejemplo:

vim config/server-1.properties
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/usr/local/var/lib/kafka-logs-1

vim config/server-2.properties
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/usr/local/var/lib/kafka-logs-2

Paso 2: iniciar los tres corredores:

    kafka-server-start config/server.properties &
    kafka-server-start config/server-1.properties &
    kafka-server-start config/server-2.properties &

Crear un tema replicado

kafka-topics --zookeeper localhost:2181 --create --replication-factor 3 --partitions 1 --topic replicated-topic

kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic  PartitionCount:1    ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 1,2,0

Esta vez, hay más información:

  • “líder” es el nodo responsable de todas las lecturas y escrituras de la partición dada. Cada nodo será el líder de una parte seleccionada al azar de las particiones.
  • “réplicas” es la lista de nodos que replican el registro de esta partición, independientemente de si son el líder o incluso si están vivos actualmente.
  • “isr” es el conjunto de réplicas “sincronizadas”. Este es el subconjunto de la lista de réplicas que actualmente está vivo y alcanzado al líder.

Tenga en cuenta que el tema creado anteriormente se deja sin cambios.

prueba de tolerancia a fallas

Publicar algún mensaje al nuevo tema:

kafka-console-producer --broker-list localhost:9092 --topic replicated-topic
hello 1
hello 2
^C

Mata al líder (1 en nuestro ejemplo). En Linux:

ps aux | grep server-1.properties
kill -9 <PID>

En Windows:

wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties" 
taskkill /pid <PID> /f

Mira lo que pasó:

kafka-topics --zookeeper localhost:2181  --describe --topic replicated-topic
Topic:replicated-topic  PartitionCount:1    ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0    Leader: 2   Replicas: 1,2,0 Isr: 2,0

El liderazgo ha cambiado al corredor 2 y “1” ya no está sincronizado. Pero los mensajes siguen ahí (use al consumidor para comprobarlo usted mismo).

Limpiar

Elimine los dos temas usando:

kafka-topics --zookeeper localhost:2181 --delete --topic test-topic
kafka-topics --zookeeper localhost:2181 --delete --topic replicated-topic