«1. Обзор

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

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

2. Настройка Kafka

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

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

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

$ tar xvf kafka_2.13-2.6.0.tgz

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

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

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

Через некоторое время запустится брокер 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

3. Список тем

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

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

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

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

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

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

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

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

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

$ ./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)

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

Как только мы нашли список тем, мы можем взглянуть на детали одной конкретной темы. Для этого мы можем использовать комбинацию опций «описать — тема \u003cназвание темы\u003e»:

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

$ ./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

5. Заключение

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

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

«