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_topiccon 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. PresioneCtrl+Cpara 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 paresclave: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_topicpara el grupo de consumidoresmy_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_groupy 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_groupenmy_topical 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-serveres Clave: Asegúrese siempre de especificar el argumento correcto--bootstrap-serverpara conectarse a su clúster de Kafka. Normalmente, se trata de una lista separada por comas dehost:puertopara 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 directoriobinde 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
--propertyo--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-configapuntando 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.propertiesdel broker de Kafka usandodelete.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.