Перейти к основному содержимому

Список тем Кафки

· 4 мин. чтения

1. Обзор

В этом кратком руководстве мы узнаем, как составить список всех тем в кластере Apache Kafka.

Во-первых, мы настроим одноузловой кластер Apache Kafka и Zookeeper . Затем мы спросим этот кластер о его темах.

2. Настройка Кафки

Прежде чем перечислять все темы в кластере Kafka, давайте настроим тестовый кластер Kafka с одним узлом в три шага:

  • Скачиваем Kafka и Zookeeper
  • Запуск службы Zookeeper
  • Запуск службы Кафка

Во-первых, мы должны убедиться, что скачали правильную версию Kafka с сайта Apache . После завершения загрузки мы должны извлечь загруженный архив:

$ tar xvf kafka_2.13-2.6.0.tgz

Kafka использует Apache Zookeeper для управления метаданными своего кластера, поэтому нам нужен работающий кластер Zookeeper.

В целях тестирования мы можем запустить экземпляр Zookeeper с одним узлом, используя сценарий zookeeper-server-start.sh в каталоге bin :

$ cd kafka_2.13-2.6.0 # extracted directory
$ ./bin/zookeeper-server-start.sh config/zookeeper.properties

Это запустит службу Zookeeper, прослушивающую порт 2181. После этого мы можем использовать другой скрипт для запуска сервера Kafka:

$ ./bin/kafka-server-start.sh config/server.properties

Через некоторое время запустится брокер Kafka. Давайте добавим несколько тем в этот простой кластер:

$ bin/kafka-topics.sh --create --topic users.registrations --replication-factor 1 \
--partitions 2 --zookeeper localhost:2181
$ bin/kafka-topics.sh --create --topic users.verfications --replication-factor 1 \
--partitions 2 --zookeeper localhost:2181

Теперь, когда все готово, давайте посмотрим, как мы можем составить список тем Kafka.

3. Список тем

Чтобы перечислить все темы Kafka в кластере, мы можем использовать сценарий оболочки bin/kafka-topics.sh , включенный в загруженный дистрибутив Kafka. Все, что нам нужно сделать, это передать параметр –list вместе с информацией о кластере . Например, мы можем передать адрес службы Zookeeper:

$ bin/kafka-topics.sh --list --zookeeper localhost:2181
users.registrations
users.verfications

Как показано выше, опция –list указывает сценарию оболочки kafka-topics.sh вывести список всех тем. В этом случае у нас есть две темы для хранения событий, связанных с пользователем. Если темы в кластере нет, то команда вернется без результата.

Кроме того, чтобы поговорить с кластером Kafka, нам нужно передать URL-адрес службы Zookeeper с помощью параметра –zookeeper .

Можно даже напрямую передать адрес кластера Kafka с помощью параметра –bootstrap -server :

$ ./bin/kafka-topics.sh --bootstrap-server=localhost:9092 --list
users.registrations
users.verfications

Наш кластер Kafka с одним экземпляром прослушивает порт 9092, поэтому мы указали «localhost: 9092» в качестве сервера начальной загрузки. Проще говоря, загрузочные серверы — это брокеры Kafka.

Если мы не передадим информацию, необходимую для общения с кластером Kafka, сценарий оболочки kafka-topics.sh выдаст сообщение об ошибке:

$ ./bin/kafka-topics.sh --list
Exception in thread "main" java.lang.IllegalArgumentException: Only one of --bootstrap-server or --zookeeper must be specified
at kafka.admin.TopicCommand$TopicCommandOptions.checkArgs(TopicCommand.scala:721)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:52)
at kafka.admin.TopicCommand.main(TopicCommand.scala)

Как показано выше, сценарии оболочки требуют, чтобы мы передали параметр –bootstrap-server или –zookeeper .

4. Детали темы

Как только мы нашли список тем, мы можем просмотреть детали одной конкретной темы. Для этого мы можем использовать комбинацию параметров « -describe –topic <название темы>» :

$ ./bin/kafka-topics.sh --bootstrap-server=localhost:9092 --describe --topic users.registrations
Topic: users.registrations PartitionCount: 2 ReplicationFactor: 1 Configs: segment.bytes=1073741824
Topic: users.registrations Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: users.registrations Partition: 1 Leader: 0 Replicas: 0 Isr: 0

Эти сведения включают информацию об указанной теме, например, количество разделов и реплик, среди прочего. Как и в случае с другими командами, мы должны передать информацию о кластере или адрес Zookeeper. В противном случае мы не сможем общаться с кластером.

5. Вывод

В этой краткой статье мы узнали, как перечислить все темы в кластере Kafka. Попутно мы увидели, как настроить простой кластер Kafka с одним узлом.

В настоящее время Apache Kafka использует Zookeeper для управления метаданными своего кластера. Это, однако, скоро изменится в рамках KIP-500 , поскольку у Kafka будет свой собственный кворум метаданных.