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