Seguimos con los posts sobre kafka:

  1. ¿Qué es Apache Kafka?
  2. Cómo instalar y configurar el Oracle Java Development Kit.
  3. Cómo instalar y configurar en modo clúster el Apache Zookeeper.
  4. Cómo instalar y configurar en modo clúster el Apache Kafka.
  5. Operaciones habituales en Apache Zookeeper.
  6. Operaciones habituales en Apache Kafka.
  7. Cómo monitorizar Zookeeper desde el PRTG.
  8. Cómo monitorizar Apache Kafka con el PRTG.
  9. Mejoras de rendiemiento en Apache Kafka y valores óptimos de los sensores.
  10. Problemas frecuentes en la instalación, configuración y uso de un clúster Kafka.

Todos los ficheros de configuración de esta serie de posts estan publicados en gitlab.

Durante la instalación de Apache Kafka se instalan en /opt/kafka/bin todos las herramientas para interactuar con kafka. Estas herramientas son las siguientes:

connect-distributed.sh
 connect-standalone.sh
 kafka-acls.sh
 kafka-configs.sh
 kafka-console-consumer.sh
 kafka-console-producer.sh
 kafka-consumer-groups.sh
 kafka-consumer-offset-checker.sh
 kafka-consumer-perf-test.sh
 kafka-mirror-maker.sh
 kafka-preferred-replica-election.sh
 kafka-producer-perf-test.sh
 kafka-reassign-partitions.sh
 kafka-replay-log-producer.sh
 kafka-replica-verification.sh
 kafka-run-class.sh
 kafka-server-start.sh
 kafka-server-stop.sh
 kafka-simple-consumer-shell.sh
 kafka-streams-application-reset.sh
 kafka-topics.sh
 kafka-verifiable-consumer.sh
 kafka-verifiable-producer.sh
 zookeeper-security-migration.sh
 zookeeper-server-start.sh
 zookeeper-server-stop.sh
 zookeeper-shell.sh

De todas ellas la más importante para las operaciones habituales es kafka-topics.sh. Vamos a ver un cómo usarla para llevar a cabo las operaciones siguientes:

  • Listar los topics existentes
  • Crear un topic
  • Eliminar un topic
  • Obtener información detallada de un topic
  • Modificar el número de particiones de un topic (o modificar su configuración en general)

Para obtener más información sobre uso de las herramientas o parámetros disponibles se puede consultar la página de documentación de kafka.

Listar los topics existentes

Para ver los topics que hay creados en un clúster usaremos la herramienta kafka-topics.sh con la opción –list. Esta herramienta la podemos usar para crear, eliminar, modificar o ver las propiedades de los topics de kafka.

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

Ejemplo:

ubnsrv01:/opt/kafka/bin# ./kafka-topics.sh --zookeeper localhost:2181 --list
 __consumer_offsets
 queue.comb.unica
 queue.iis.logs
 queue.jpproxy
 queue.jpproxy.stats

Crear un topic

Para crear un topic usaremos la herramienta kafka-topics.sh con la opción –create

Ejemplo:

/opt/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic queue.new-fancy-topic-name --partitions 8 --replication-factor 2

En este caso crearíamos un topic nuevo con el nombre queue.new-fancy-topic-name, con 8 particiones, cada una de ellas replicada en dos nodos. Esta herramienta (en realidad todas) requiere el nombre de uno de los nodos de zookeeper del clúster. Si ejecutamos el comando anterior obtendremos dos mensajes. El primero con un Warning, como este:

WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.

No debemos preocuparnos, sólo es un aviso que indica que no es recomendable usar los signos ‘.’ o ‘_’ a la vez en los nombres de topic. El segundo mensaje nos indica si todo ha funcionado correctamente.

Created topic "queue.new-fancy-topic-name"

Eliminar un topic

Para eliminar un topic usaremos la herramienta kafka-topics.sh con la opción –delete

Ejemplo:

/opt/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic queue.new-fancy-topic-name

Eliminamos el topic con el nombre queue.new-fancy-topic-name. Este comando nos devuelve dos mensajes.

Topic queue.new-fancy-topic-name is marked for deletion.
 Note: This will have no impact if delete.topic.enable is not set to true.

Lo que hace en realidad es marcar el topic para eliminarlo, y si la opción delete.topic.enable está configurada como true en el fichero de configuración.

Obtener información detallada de un topic

Para obtener información detallada de un topic usaremos la herramienta kafka-topics.sh con la opción –describe

Ejemplo:

ubnsrv01:/opt/kafka/bin# /opt/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic queue.comb.unica
 Topic:queue.comb.unica    PartitionCount:8    ReplicationFactor:2    Configs:
 Topic: queue.comb.unica    Partition: 0    Leader: 1    Replicas: 1,2    Isr: 2,1
 Topic: queue.comb.unica    Partition: 1    Leader: 2    Replicas: 2,3    Isr: 2,3
 Topic: queue.comb.unica    Partition: 2    Leader: 3    Replicas: 3,1    Isr: 1,3
 Topic: queue.comb.unica    Partition: 3    Leader: 1    Replicas: 1,3    Isr: 1,3
 Topic: queue.comb.unica    Partition: 4    Leader: 2    Replicas: 2,1    Isr: 2,1
 Topic: queue.comb.unica    Partition: 5    Leader: 3    Replicas: 3,2    Isr: 2,3
 Topic: queue.comb.unica    Partition: 6    Leader: 1    Replicas: 1,2    Isr: 2,1
 Topic: queue.comb.unica    Partition: 7    Leader: 2    Replicas: 2,3    Isr: 2,3

Nos devuelve el listado de todas las particiones del topic con el id del nodo leader para cada una de ellas y los id de los nodos en los que están las réplicas. Si no pasamos el nombre de topic como argumento nos devuelve la información detallada de todos los topics.

Modificar el número de particiones de un topic

Para modificar el número de particiones de un topic, usaremos la herramienta kafka-topics.sh con la opción –alter. Evidentemente tendremos que pasar por parámetro el nombre del topic a modificar y el nuevo número de particiones.

Ejemplo:

/opt/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic queue.new-fancy-topic-name --partitions 16

El número de particiones sólo se puede incrementar, así que si el número de particiones que indicamos es inferior al número de particiones existentes obtendremos un error. Con la opción –alter podemos modificar muchos más parámetros en los topics existentes. El listado de parámetros que se pueden modificar son los siguientes:

cleanup.policy
 compression.type
 delete.retention.ms
 file.delete.delay.ms
 flush.messages
 flush.ms
 follower.replication.throttled.
 index.interval.bytes
 leader.replication.throttled.replicas
 max.message.bytes
 message.format.version
 message.timestamp.difference.max.ms
 message.timestamp.type
 min.cleanable.dirty.ratio
 min.compaction.lag.ms
 min.insync.replicas
 preallocate
 retention.bytes
 retention.ms
 segment.bytes
 segment.index.bytes
 segment.jitter.ms
 segment.ms
 unclean.leader.election.enable

Ejemplo:

/opt/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic queue.new-fancy-topic-name --config delete.retention.ms=60000

La opción de modificar la configuración de los topics desde la herramienta kafka-topics.sh esta marcada como deprecated, y en el futuro sólo se permitirá con la herramienta kafka-configs.sh.

Cambiar la retención de un topic (en ms o en bytes)

Para cambiar el período de retención de un topic en particular (para limitar el tamaño de datos a guardar) se hace con el kafka-topics.sh usando la opción –alter.
Ejemplo:
/opt/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic queue.comb.unica --config retention.ms=300000
Con esta instrucción modificamos el período de retención a 5 minutos (300000 ms). También se puede hacer por tamaño, indicando el número de bytes.

Ejemplo:
/opt/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic queue.comb.unica --config retention.bytes=123289600
Con esta segunda instrucción modificamos el tamaño máximo que se almacenará. En este caso 100 MB (123289600 bytes).

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s