Comprensión de las herramientas de línea de comandos de Kafka: Guía de referencia de la CLI.

Desbloquee el poder de Apache Kafka con esta completa guía de referencia de la interfaz de línea de comandos (CLI). Aprenda comandos esenciales de Kafka para gestionar temas (`kafka-topics.sh`), enviar mensajes (`kafka-console-producer.sh`), consumir datos (`kafka-console-consumer.sh`) e inspeccionar grupos de consumidores (`kafka-consumer-groups.sh`). Esta guía detalla casos de uso prácticos, argumentos y mejores prácticas para una administración y solución de problemas de Kafka eficaz.

38 vistas

Comprensión de las Herramientas de Línea de Comandos de Kafka: Guía de Referencia CLI

Apache Kafka es una potente plataforma distribuida de transmisión de eventos que permite canalizaciones de datos en tiempo real de alto rendimiento, tolerantes a fallos y escalables. Si bien Kafka se puede administrar e interactuar con él mediante programación a través de sus API, sus herramientas de interfaz de línea de comandos (CLI) ofrecen una forma directa y eficiente de realizar tareas administrativas esenciales, administrar temas, interactuar con consumidores y monitorear el estado del clúster. Esta guía proporciona una referencia completa de las herramientas CLI de Kafka más utilizadas, detallando su propósito, argumentos esenciales y casos de uso prácticos.

Comprender estas herramientas es crucial para los administradores de Kafka, los desarrolladores y cualquier persona involucrada en la administración o solución de problemas de clústeres de Kafka. Permiten la inspección, manipulación y diagnóstico rápidos sin la necesidad de escribir scripts o aplicaciones personalizadas para cada operación simple.

Herramientas CLI Principales de Kafka

Las distribuciones de Kafka suelen incluir un directorio bin/ que contiene varios scripts y ejecutables. Nos centraremos en los más utilizados para administrar Kafka de manera efectiva.

1. kafka-topics.sh

Este es, sin duda, el comando de línea de comandos que se utiliza con más frecuencia. Le permite crear, listar, describir, eliminar, alterar y administrar temas de Kafka. La administración de temas es fundamental para organizar los flujos de datos dentro de Kafka.

Subcomandos y Argumentos Comunes:

  • --create: Crea un nuevo tema.
  • --list: Lista todos los temas del clúster.
  • --describe: Proporciona información detallada sobre temas específicos.
  • --delete: Elimina uno o más temas.
  • --alter: Modifica la configuración de un tema existente.
  • --topic <nombre_tema>: Especifica el nombre del tema.
  • --partitions <num_particiones>: Establece el número de particiones para un tema (se usa con --create).
  • --replication-factor <factor>: Establece el factor de replicación para un tema (se usa con --create).
  • --bootstrap-server <host:puerto>: Especifica el broker de Kafka al que conectarse.

Ejemplos:

  • Crear un tema llamado my_topic con 3 particiones y un factor de replicación de 2:
    bash kafka-topics.sh --create --topic my_topic --partitions 3 --replication-factor 2 --bootstrap-server kafka-broker-1:9092,kafka-broker-2:9092

  • Listar todos los temas del clúster:
    bash kafka-topics.sh --list --bootstrap-server kafka-broker-1:9092

  • Describir un tema llamado my_topic:
    bash kafka-topics.sh --describe --topic my_topic --bootstrap-server kafka-broker-1:9092
    Esto mostrará detalles como particiones, líder, réplicas e ISR (Réplicas en Sincronización).

  • Eliminar un tema llamado old_topic:
    bash kafka-topics.sh --delete --topic old_topic --bootstrap-server kafka-broker-1:9092
    Nota: La eliminación de temas debe estar habilitada en las configuraciones del broker de Kafka (delete.topic.enable=true).

2. kafka-console-producer.sh

Esta herramienta le permite enviar mensajes a un tema de Kafka desde la entrada estándar. Es invaluable para probar productores, inyectar datos de muestra o publicar mensajes manualmente.

Argumentos Comunes:

  • --topic <nombre_tema>: Especifica el tema de destino.
  • --bootstrap-server <host:puerto>: Especifica el broker de Kafka al que conectarse.
  • --property <clave>=<valor>: Permite establecer propiedades del productor (por ejemplo, key.serializer, value.serializer).
  • --producer-property <clave>=<valor>: Similar a --property, pero específicamente para configuraciones del lado del productor.

Ejemplos:

  • Enviar mensajes a my_topic:
    bash kafka-console-producer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092
    Después de ejecutar esto, puede escribir mensajes línea por línea. Presione Ctrl+C para salir.

  • Enviar mensajes con claves (formato JSON):
    bash kafka-console-producer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092 --property parse.key=true --property key.separator=':'
    Ahora puede escribir pares clave:valor, y Kafka los enviará con la clave especificada.

3. kafka-console-consumer.sh

Esta herramienta se suscribe a uno o más temas de Kafka e imprime los mensajes que recibe en la salida estándar. Es esencial para probar consumidores, inspeccionar datos en temas y depurar aplicaciones de productor/consumidor.

Argumentos Comunes:

  • --topic <nombre_tema>: Especifica el tema (o temas) del que consumir.
  • --bootstrap-server <host:puerto>: Especifica el broker de Kafka al que conectarse.
  • --group-id <id_grupo>: Especifica el ID del grupo de consumidores. Esto es importante para administrar los offsets y permitir que varios consumidores compartan la carga de consumo.
  • --from-beginning: Lee mensajes desde el principio del log del tema.
  • --offset <offset>: Comienza a consumir desde un offset específico.
  • --partition <id_particion>: Consume desde una partición específica.
  • --property <clave>=<valor>: Permite establecer propiedades del consumidor (por ejemplo, value.deserializer).

Ejemplos:

  • Consumir todos los mensajes de my_topic:
    bash kafka-console-consumer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092

  • Consumir mensajes desde el principio de my_topic para el grupo de consumidores my_group:
    bash kafka-console-consumer.sh --topic my_topic --group-id my_group --from-beginning --bootstrap-server kafka-broker-1:9092

  • Consumir mensajes con offsets y claves impresas:
    bash kafka-console-consumer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092 --property print.key=true --property key.separator="\t" --property print.offset=true --property print.headers=true

4. kafka-consumer-groups.sh

Esta herramienta se utiliza para administrar e inspeccionar grupos de consumidores. Es vital para comprender el rezago del consumidor, reasignar particiones y solucionar problemas de consumo.

Subcomandos y Argumentos Comunes:

  • --list: Lista todos los grupos de consumidores del clúster.
  • --describe: Proporciona detalles sobre grupos de consumidores específicos, incluido el rezago.
  • --bootstrap-server <host:puerto>: Especifica el broker de Kafka al que conectarse.
  • --group <id_grupo>: Especifica el ID del grupo de consumidores.
  • --reset-offsets: Restablece los offsets de un grupo de consumidores.
  • --topic <nombre_tema>: Especifica el tema para el restablecimiento de offsets.
  • --to-earliest: Restablece los offsets al mensaje más antiguo disponible.
  • --to-latest: Restablece los offsets al mensaje más reciente disponible.
  • --execute: Ejecuta la operación de restablecimiento de offsets.

Ejemplos:

  • Listar todos los grupos de consumidores:
    bash kafka-consumer-groups.sh --list --bootstrap-server kafka-broker-1:9092

  • Describir un grupo de consumidores my_group y mostrar su rezago:
    bash kafka-consumer-groups.sh --describe --group my_group --bootstrap-server kafka-broker-1:9092
    La salida mostrará el tema, la partición, el offset actual, el offset final del log y el rezago.

  • Restablecer los offsets para my_group en my_topic al mensaje más antiguo disponible:
    bash kafka-consumer-groups.sh --group my_group --topic my_topic --reset-offsets --to-earliest --execute --bootstrap-server kafka-broker-1:9092
    Utilice este comando con precaución, ya que afecta desde dónde comenzarán a leer los consumidores.

5. kafka-log-dirs.sh

Esta herramienta ayuda a inspeccionar los directorios de logs en los brokers de Kafka. Puede ser útil para comprender el uso del disco y localizar datos de temas.

Argumentos Comunes:

  • --bootstrap-server <host:puerto>: Especifica el broker de Kafka al que conectarse.
  • --topic <nombre_tema>: Filtra la salida para mostrar directorios de un tema específico.

Ejemplos:

  • Listar directorios de logs en un broker:
    bash kafka-log-dirs.sh --bootstrap-server kafka-broker-1:9092

  • Mostrar directorios de logs de un tema específico:
    bash kafka-log-dirs.sh --bootstrap-server kafka-broker-1:9092 --topic my_topic

6. kafka-preferred-replica-election.sh

Este script inicia elecciones de réplicas preferidas para temas. Una réplica preferida es el broker que se elige como líder de una partición según su factor de replicación. Si un broker falla y una réplica no preferida se convierte en líder, esta herramienta puede usarse para devolver el liderazgo a la réplica preferida.

Argumentos Comunes:

  • --topic <nombre_tema>: Especifica el tema para el cual elegir réplicas preferidas.
  • --broker-list <id_broker1,id_broker2,...>: Especifica una lista separada por comas de IDs de brokers.
  • --bootstrap-server <host:puerto>: Especifica el broker de Kafka al que conectarse.

Ejemplos:

  • Elegir réplicas preferidas para my_topic:
    bash kafka-preferred-replica-election.sh --topic my_topic --bootstrap-server kafka-broker-1:9092

  • Elegir réplicas preferidas para varios temas:
    bash kafka-preferred-replica-election.sh --topic topic1,topic2 --bootstrap-server kafka-broker-1:9092

Consideraciones Importantes y Mejores Prácticas

  • --bootstrap-server es Clave: Asegúrese siempre de especificar el argumento correcto --bootstrap-server para conectarse a su clúster de Kafka. Normalmente, se trata de una lista separada por comas de host:puerto para sus brokers.
  • Entorno: Estos comandos se encuentran típicamente en el directorio bin/ de su instalación de Kafka. Deberá navegar a este directorio o asegurarse de que el directorio bin de Kafka esté en la variable PATH de su sistema.
  • Permisos: Asegúrese de que el usuario que ejecuta estos comandos tenga el acceso de red necesario para llegar a los brokers de Kafka.
  • Configuración: Muchas herramientas CLI pueden aceptar configuraciones de cliente de Kafka a través de los argumentos --property o --producer-property/--consumer-property. Esto es útil para anular serializadores/deserializadores predeterminados o establecer otras configuraciones específicas del cliente.
  • Seguridad: Para clústeres de Kafka seguros (por ejemplo, con autenticación SSL/TLS o SASL), deberá pasar argumentos adicionales relacionados con la seguridad (como --command-config apuntando a un archivo de propiedades del cliente) a estas herramientas.
  • Eliminación de Temas: Recuerde que la eliminación de temas es una operación sensible y debe habilitarse explícitamente en el archivo server.properties del broker de Kafka usando delete.topic.enable=true.

Conclusión

Las herramientas de línea de comandos de Kafka proporcionan una interfaz robusta y accesible para administrar e interactuar con su clúster de Kafka. Dominar herramientas como kafka-topics.sh, kafka-console-producer.sh, kafka-console-consumer.sh y kafka-consumer-groups.sh es esencial para operaciones eficientes de Kafka, solución de problemas y desarrollo. Al comprender sus argumentos y casos de uso, puede optimizar significativamente su flujo de trabajo y obtener una comprensión más profunda de su infraestructura de transmisión de eventos.

Consultar regularmente estos comandos no solo le ayudará a realizar tareas administrativas diarias, sino que también le permitirá diagnosticar y resolver problemas de manera más efectiva. A medida que se familiarice más con Kafka, podrá explorar otros scripts de utilidad disponibles en el directorio bin/ para operaciones más avanzadas.