Apache Kafka - Operaciones básicas

Primero, comencemos a implementar la configuración de un solo nodo y un solo agente y luego migraremos nuestra configuración a la configuración de un solo nodo y varios agentes.

Es de esperar que ya haya instalado Java, ZooKeeper y Kafka en su máquina. Antes de pasar a la configuración de Kafka Cluster, primero debe iniciar su ZooKeeper porque Kafka Cluster usa ZooKeeper.

Iniciar ZooKeeper

Abra una nueva terminal y escriba el siguiente comando:

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

Para iniciar Kafka Broker, escriba el siguiente comando:

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

Después de iniciar Kafka Broker, escriba el comando jps en la terminal de ZooKeeper y verá la siguiente respuesta:

821 QuorumPeerMain
928 Kafka
931 Jps

Ahora puede ver dos demonios ejecutándose en la terminal donde QuorumPeerMain es el demonio ZooKeeper y otro es el demonio Kafka.

Configuración de un solo nodo y un solo agente

En esta configuración, tiene una única instancia de identificación de intermediario y ZooKeeper. Los siguientes son los pasos para configurarlo:

Creating a Kafka Topic- Kafka proporciona una utilidad de línea de comandos llamada kafka-topics.sh para crear temas en el servidor. Abra una nueva terminal y escriba el siguiente ejemplo.

Syntax

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 
--partitions 1 --topic topic-name

Example

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1   
--partitions 1 --topic Hello-Kafka

Acabamos de crear un tema llamado Hello-Kafka con una sola partición y un factor de réplica. La salida creada anteriormente será similar a la siguiente salida:

Output- Tema creado Hello-Kafka

Una vez que se ha creado el tema, puede obtener la notificación en la ventana de terminal del agente de Kafka y el registro del tema creado especificado en "/ tmp / kafka-logs /" en el archivo config / server.properties.

Lista de temas

Para obtener una lista de temas en el servidor Kafka, puede utilizar el siguiente comando:

Syntax

bin/kafka-topics.sh --list --zookeeper localhost:2181

Output

Hello-Kafka

Dado que hemos creado un tema, solo incluirá Hello-Kafka . Suponga que, si crea más de un tema, obtendrá los nombres de los temas en la salida.

Iniciar Producer para enviar mensajes

Syntax

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name

De la sintaxis anterior, se requieren dos parámetros principales para el cliente de línea de comandos del productor:

Broker-list- La lista de corredores a los que queremos enviar los mensajes. En este caso solo tenemos un corredor. El archivo Config / server.properties contiene la identificación del puerto del intermediario, ya que sabemos que nuestro intermediario está escuchando en el puerto 9092, por lo que puede especificarlo directamente.

Nombre del tema: a continuación, se muestra un ejemplo del nombre del tema.

Example

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka

El productor esperará la entrada de stdin y publicará en el clúster de Kafka. De forma predeterminada, cada nueva línea se publica como un mensaje nuevo, luego las propiedades predeterminadas del productor se especifican en el archivo config / producer.properties . Ahora puede escribir algunas líneas de mensajes en la terminal como se muestra a continuación.

Output

$ bin/kafka-console-producer.sh --broker-list localhost:9092 
--topic Hello-Kafka[2016-01-16 13:50:45,931] 
WARN property topic is not valid (kafka.utils.Verifia-bleProperties)
Hello
My first message
My second message

Iniciar consumidor para recibir mensajes

Al igual que el productor, las propiedades predeterminadas del consumidor se especifican en el archivo config / consumer.proper-ties . Abra una nueva terminal y escriba la siguiente sintaxis para consumir mensajes.

Syntax

bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic topic-name 
--from-beginning

Example

bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kafka 
--from-beginning

Output

Hello
My first message
My second message

Finalmente, puede ingresar mensajes desde el terminal del productor y verlos aparecer en el terminal del consumidor. A partir de ahora, conoce muy bien el clúster de un solo nodo con un solo agente. Pasemos ahora a la configuración de múltiples agentes.

Configuración de un solo nodo y varios agentes

Antes de pasar a la configuración del clúster de múltiples agentes, primero inicie su servidor de ZooKeeper.

Create Multiple Kafka Brokers- Ya tenemos una instancia de agente de Kafka en con-fig / server.properties. Ahora necesitamos varias instancias de intermediarios, así que copie el archivo server.prop-erties existente en dos nuevos archivos de configuración y cámbiele el nombre a server-one.properties y server-two.prop-erties. Luego edite ambos archivos nuevos y asigne los siguientes cambios:

config / server-one.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
# The port the socket server listens on
port=9093
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-1

config / server-two.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2
# The port the socket server listens on
port=9094
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-2

Start Multiple Brokers- Después de que se hayan realizado todos los cambios en tres servidores, abra tres terminales nuevos para iniciar cada bróker uno por uno.

Broker1
bin/kafka-server-start.sh config/server.properties
Broker2
bin/kafka-server-start.sh config/server-one.properties
Broker3
bin/kafka-server-start.sh config/server-two.properties

Ahora tenemos tres corredores diferentes ejecutándose en la máquina. Pruébelo usted mismo para verificar todos los demonios escribiendojps en la terminal de ZooKeeper, verá la respuesta.

Crear un tema

Asignemos el valor del factor de replicación como tres para este tema porque tenemos tres corredores diferentes ejecutándose. Si tiene dos corredores, el valor de réplica asignado será dos.

Syntax

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 
-partitions 1 --topic topic-name

Example

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 
-partitions 1 --topic Multibrokerapplication

Output

created topic “Multibrokerapplication”

El comando Describe se usa para verificar qué corredor está escuchando en el tema creado actual como se muestra a continuación:

bin/kafka-topics.sh --describe --zookeeper localhost:2181 
--topic Multibrokerappli-cation

Output

bin/kafka-topics.sh --describe --zookeeper localhost:2181 
--topic Multibrokerappli-cation

Topic:Multibrokerapplication    PartitionCount:1 
ReplicationFactor:3 Configs:
   
Topic:Multibrokerapplication Partition:0 Leader:0 
Replicas:0,2,1 Isr:0,2,1

De la salida anterior, podemos concluir que la primera línea ofrece un resumen de todas las particiones, mostrando el nombre del tema, el recuento de particiones y el factor de replicación que ya hemos elegido. En la segunda línea, cada nodo será el líder de una parte de las particiones seleccionada al azar.

En nuestro caso, vemos que nuestro primer corredor (con broker.id 0) es el líder. Entonces Réplicas: 0,2,1 significa que todos los corredores replican el tema finalmente Isr es el conjunto de réplicas sincronizadas . Bueno, este es el subconjunto de réplicas que están vivas y capturadas por el líder.

Iniciar Producer para enviar mensajes

Este procedimiento sigue siendo el mismo que en la configuración de un agente único.

Example

bin/kafka-console-producer.sh --broker-list localhost:9092 
--topic Multibrokerapplication

Output

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Multibrokerapplication
[2016-01-20 19:27:21,045] WARN Property topic is not valid (kafka.utils.Verifia-bleProperties)
This is single node-multi broker demo
This is the second message

Iniciar consumidor para recibir mensajes

Este procedimiento sigue siendo el mismo que se muestra en la configuración del agente único.

Example

bin/kafka-console-consumer.sh --zookeeper localhost:2181 
—topic Multibrokerapplica-tion --from-beginning

Output

bin/kafka-console-consumer.sh --zookeeper localhost:2181 
—topic Multibrokerapplica-tion —from-beginning
This is single node-multi broker demo
This is the second message

Operaciones básicas de temas

En este capítulo discutiremos las diversas operaciones temáticas básicas.

Modificar un tema

Como ya ha entendido cómo crear un tema en Kafka Cluster. Ahora modifiquemos un tema creado usando el siguiente comando

Syntax

bin/kafka-topics.sh —zookeeper localhost:2181 --alter --topic topic_name 
--parti-tions count

Example

We have already created a topic “Hello-Kafka” with single partition count and one replica factor. 
Now using “alter” command we have changed the partition count.
bin/kafka-topics.sh --zookeeper localhost:2181 
--alter --topic Hello-kafka --parti-tions 2

Output

WARNING: If partitions are increased for a topic that has a key, 
the partition logic or ordering of the messages will be affected
Adding partitions succeeded!

Eliminar un tema

Para eliminar un tema, puede utilizar la siguiente sintaxis.

Syntax

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic topic_name

Example

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic Hello-kafka

Output

> Topic Hello-kafka marked for deletion

Note −Esto no tendrá ningún impacto si delete.topic.enable no está configurado como verdadero