apache-kafkaEmpezando con apache-kafka


Observaciones

Kafka es un sistema de mensajería de publicación-suscripción de alto rendimiento implementado como un servicio de registro de confirmación duplicado, particionado y distribuido.

Tomado del sitio oficial de Kafka

Rápido

Un solo agente de Kafka puede manejar cientos de megabytes de lecturas y escrituras por segundo de miles de clientes.

Escalable

Kafka está diseñado para permitir que un solo clúster sirva como la red troncal de datos central para una organización grande. Puede expandirse de forma elástica y transparente sin tiempo de inactividad. Los flujos de datos se dividen en particiones y se distribuyen en un grupo de máquinas para permitir flujos de datos mayores que la capacidad de cualquier máquina individual y para permitir grupos de consumidores coordinados

Durable

Los mensajes se guardan en el disco y se replican dentro del clúster para evitar la pérdida de datos. Cada agente puede manejar terabytes de mensajes sin impacto en el rendimiento.

Distribuido por Diseño

Kafka tiene un diseño moderno centrado en el clúster que ofrece durabilidad sólida y garantías de tolerancia a fallas.

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 Extrae el archivo comprimido.

En Linux:

tar -xzf kafka_2.11-0.10.0.0.tgz
 

En la ventana: Haga clic derecho -> Extraer aquí

Paso 4 . Iniciar zookeeper

cd kafka_2.11-0.10.0.0
 

Linux:

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

Windows:

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

Paso 5 Iniciar el servidor Kafka

Linux:

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

Windows:

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 flujos de registros. En este sentido, es similar a una cola de mensajes o un sistema de mensajería empresarial.

2-Le permite almacenar flujos de registros de forma tolerante a fallos.

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

Se utiliza para dos amplias clases de aplicación:

1-Creación de flujos de datos en tiempo real para obtener datos de manera confiable entre sistemas o aplicaciones

2-Creación de aplicaciones de transmisión en tiempo real que transforman o reaccionan a los flujos de datos

Los scripts de la consola Kafka son diferentes para las plataformas basadas en Unix y Windows. En los ejemplos, es posible que necesite agregar la extensión de acuerdo con su 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: Descarga el código y descomprímelo:

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

Paso 2: inicia el servidor.

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

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

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

Paso 3: asegúrate de que todo está funcionando

Ahora debería tener un guardián del zoológico escuchando a localhost:2181 y un solo corredor de kafka en localhost:6667 .

Crear un tema

Solo tenemos un agente, 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 otra terminal, lanza un productor y envía algunos mensajes. De forma predeterminada, la herramienta envía cada línea como un mensaje separado 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 cluster multi-broker

Los ejemplos anteriores utilizan un solo corredor. Para configurar un cluster real, solo necesitamos iniciar más de un servidor kafka. Ellos se coordinarán automáticamente.

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

Dupdo:

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

Editar propiedades para 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 aleatoriamente de las particiones.
  • "réplicas" es la lista de nodos que replican el registro para esta partición, independientemente de si son los líderes o incluso si están actualmente activos.
  • "isr" es el conjunto de réplicas "in-sync". Este es el subconjunto de la lista de réplicas que actualmente está viva y está al día con el líder.

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

prueba de tolerancia a fallos

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" en no sincronizado más. Pero los mensajes todavía están allí (usa al consumidor para verificar por ti mismo).

Limpiar

Borre los dos temas usando:

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