«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 будет свой собственный кворум метаданных.
«