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