Cree e inspeccione temas de Kafka

Big DataBeginner
Practicar Ahora

Introducción

Un tema es más que un nombre que se pasa a un productor. Sus particiones organizan el registro de eventos, sus réplicas representan las copias almacenadas y sus ajustes de retención determinan durante cuánto tiempo pueden conservarse los registros. El progreso de lectura corresponde a los consumidores y se gestiona por separado.

Creará dos temas, inspeccionará sus metadatos, asignará una política de retención explícita a ambos y modificará solo uno. Así podrá entender el alcance de un ajuste específico de un tema sin esperar a que se eliminen datos ni modificar la configuración de todo el bróker.

El único bróker del entorno preparado está listo y los nombres de los dos temas son independientes de los laboratorios anteriores. Basta con conocimientos básicos de terminal; no se requiere programación en Python ni Java. Una réplica es adecuada para este entorno de aprendizaje con un solo bróker. Utilice la Terminal.

Cree dos temas y consulte sus metadatos

En este paso comparará dos cantidades de particiones definidas explícitamente. Comience en su espacio de trabajo:

cd /home/labex/project

--bootstrap-server proporciona la dirección del bróker preparado. Cree orders-retained con dos particiones y orders-control con una. Ambos utilizan una réplica porque este entorno contiene un solo bróker:

kafka-topics.sh --bootstrap-server localhost:9092 --create --topic orders-retained --partitions 2 --replication-factor 1
kafka-topics.sh --bootstrap-server localhost:9092 --create --topic orders-control --partitions 1 --replication-factor 1

Enumere los temas y guarde cada descripción. El operador > del intérprete de comandos crea un archivo local o reemplaza su contenido anterior:

kafka-topics.sh --bootstrap-server localhost:9092 --list
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic orders-retained > /home/labex/project/output/orders-retained-description.txt
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic orders-control > /home/labex/project/output/orders-control-description.txt
cat /home/labex/project/output/orders-retained-description.txt
cat /home/labex/project/output/orders-control-description.txt

Localice PartitionCount: 2 frente a 1 y ReplicationFactor: 1 en ambos. Cada partición tiene una entrada de líder. El identificador del bróker líder no es la cantidad de particiones, y dos particiones no implican que haya dos máquinas de bróker.

Un tema puede tener varias particiones en el mismo bróker. El factor de replicación describe las copias de cada partición entre brókeres, no copias independientes para cada consumidor. A continuación, modificará la retención del almacenamiento sin cambiar ninguna de esas propiedades.

Asigne a cada tema un ajuste explícito de retención de un día

En este paso distinguirá un valor predeterminado heredado de un ajuste específico de un tema. kafka-configs.sh administra recursos de configuración. --entity-type topics selecciona los recursos de tipo tema, mientras que --entity-name selecciona el único tema afectado. --describe suele mostrar los ajustes específicos del tema; que no aparezca uno no significa que el bróker carezca de un valor predeterminado.

Inspeccione el tema de retención antes de modificarlo:

kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name orders-retained --describe

retention.ms es una duración en milisegundos. Un día equivale a 24 × 60 × 60 × 1000 = 86400000 milisegundos. --alter --add-config establece el ajuste indicado. Defina la misma política explícita en cada tema de forma independiente:

kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name orders-retained --alter --add-config retention.ms=86400000
kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name orders-control --alter --add-config retention.ms=86400000

Consulte sus ajustes reales y guarde las observaciones:

kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name orders-retained --describe > /home/labex/project/output/retained-one-day-config.txt
kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name orders-control --describe > /home/labex/project/output/control-one-day-config.txt
cat /home/labex/project/output/retained-one-day-config.txt
cat /home/labex/project/output/control-one-day-config.txt

Localice retention.ms=86400000 para cada tema indicado. El cliente también puede mostrar información sobre el origen de la configuración o su carácter sensible; esos detalles y el formato pueden variar.

La retención es una política de almacenamiento del bróker, no una instrucción para borrar un registro en cuanto lo lea un consumidor. La antigüedad del registro y la limpieza de los segmentos del registro de eventos determinan qué datos pueden eliminarse y cuándo; la duración no garantiza que un mensaje concreto desaparezca en un instante exacto. Este ejercicio comprueba el ajuste configurado sin esperar a la limpieza.

Modifique un solo tema y confirme el alcance

En este paso asignará dos días a orders-retained y mantendrá un día en orders-control. Anticipe qué metadatos deben cambiar: el ajuste de retención del primer tema, sin modificar las cantidades de particiones ni los factores de replicación de ambos.

Dos días equivalen a 172800000 milisegundos. Aplique ese valor únicamente al tema de retención indicado:

kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name orders-retained --alter --add-config retention.ms=172800000
kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name orders-retained --describe > /home/labex/project/output/retained-final-config.txt
kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name orders-control --describe > /home/labex/project/output/control-final-config.txt
cat /home/labex/project/output/retained-final-config.txt
cat /home/labex/project/output/control-final-config.txt

Debe encontrar retention.ms=172800000 para orders-retained y retention.ms=86400000 para orders-control. Compartir la dirección del bróker no convierte un ajuste de tema en un ajuste global.

Consulte una vez más la descripción del tema de retención:

kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic orders-retained

Debe seguir teniendo dos particiones y una réplica. El cambio de retención no creó un tema, añadió particiones, copió el progreso de los consumidores ni consumió eventos. Ha comprobado tanto el cambio deseado como que el tema vecino permanece intacto. A continuación, las claves relacionarán las identidades de los pedidos con las particiones.

Resumen

Ha creado temas con particiones y réplicas explícitas, inspeccionado sus metadatos y aplicado ajustes de retención en milisegundos. Al modificar un tema, el otro permaneció intacto, lo que permite distinguir la política de almacenamiento de un tema del progreso de sus consumidores. A continuación, dirigirá eventos relacionados mediante claves e inspeccionará sus desplazamientos dentro de cada partición.