Apache Kafka - это платформа для распределенной потоковой передачи событий с открытым исходным кодом, разработанная Apache Software Foundation. Она написана на языках программирования Scala и Java. Вы можете установить Kafka на любую платформу, поддерживающую язык программирования Java.
В этом руководстве вы найдете пошаговые инструкции по установке Apache Kafka на Linux-систему Ubuntu 22.04 LTS. Вы также научитесь создавать темы в Kafka и запускать узлы производителей и потребителей.
Шаг 1 - Установка Java
Мы можем запустить сервер Apache Kafka на системах, поддерживающих Java. Поэтому убедитесь, что на вашей системе Ubuntu установлена Java.
Используйте следующие команды для установки OpenJDK на вашу систему Ubuntu из официальных репозиториев.
1 2 | sudo apt update sudo apt install default-jdk |
Проверьте текущую активную версию Java.
1 | java --version |
Шаг 2. Загрузите последнюю версию Apache Kafka
Вы можете загрузить последние бинарные файлы Apache Kafka с его официальной страницы загрузки. В качестве альтернативы вы можете скачать Kafka 3.7.0 с помощью следующей команды.
1 | wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz |
Затем извлеките скачанный архивный файл и поместите его в каталог /usr/local/kafka.
1 2 | tar xzf kafka_2.13-3.7.0.tgz sudo mv kafka_2.13-3.7.0 /usr/local/kafka |
Шаг 3 - Создание сценариев запуска Systemd
Теперь создайте юнит-файлы systemd для сервисов Zookeeper и Kafka. Это поможет вам легко запускать/останавливать службу Kafka.
Сначала создайте файл юнитов systemd для Zookeeper:
1 | sudo nano /etc/systemd/system/zookeeper.service |
И добавьте следующее содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target |
Сохраните файл и закройте его.
Далее создайте файл systemd unit для службы Kafka:
1 | sudo nano /etc/systemd/system/kafka.service |
Добавьте приведенное ниже содержимое. Убедитесь, что задан правильный путь JAVA_HOME в соответствии с установленной в вашей системе Java.
1 2 3 4 5 6 7 8 9 10 11 12 13 | [Unit] Description=Apache Kafka Server Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service [Service] Type=simple Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target |
Сохраните файл и закройте его.
Перезагрузите демон systemd, чтобы применить новые изменения.
1 | sudo systemctl daemon-reload |
Это перезагрузит все файлы systemd в системном окружении.
Шаг 4 - Запуск служб Zookeeper и Kafka
Давайте запустим обе службы по очереди. Сначала нужно запустить службу ZooKeeper, а затем запустить Kafka. Используйте команду systemctl для запуска одноузлового экземпляра ZooKeeper.
1 2 | sudo systemctl start zookeeper sudo systemctl start kafka |
Проверьте состояние обеих служб:
1 2 | sudo systemctl status zookeeper sudo systemctl status kafka |
Если все нормально, то дополнительно добавим службы в автоматический запуск
1 2 | sudo systemctl enable zookeeper sudo systemctl enable kafka |
Вот и все. Вы успешно установили сервер Apache Kafka на систему Ubuntu 22.04. Далее мы создадим темы на сервере Kafka.
Шаг 5 - Создание топика в Kafka
Kafka предоставляет несколько готовых сценариев оболочки для работы с ней. Сначала создайте тему с именем "testTopic" с одним разделом и одной репликой:
1 2 | cd /usr/local/kafka bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic testTopic |
Здесь:
- --create для создания нового топика
- --replication-factor описывает, сколько копий данных будет создано. Поскольку мы работаем с одним экземпляром, оставьте это значение равным 1.
- --partitions задайте количество брокеров, между которыми вы хотите разделить данные. Поскольку мы работаем с одним брокером, оставьте это значение равным 1.
- --topic определяет имя топика.
Вы можете создать несколько топиков, выполнив ту же команду, что и выше. После этого вы сможете увидеть созданные топики в Kafka, выполнив следующую команду:
1 | bin/kafka-topics.sh --list --bootstrap-server localhost:9092 |
Кроме того, вместо ручного создания топиков вы можете настроить брокеры на автоматическое создание топиков в случае публикации несуществующего топика.
Шаг 6 - Отправка и получение сообщений в Kafka
"Продюсер" (producer) - это процесс, отвечающий за отправку данных в Kafka. Kafka поставляется с клиентом командной строки, который будет принимать данные из файла или стандартного ввода и отправлять их в виде сообщений в кластер Kafka. По умолчанию Kafka отправляет каждую строку как отдельное сообщение.
Давайте запустим продюсера, а затем введем в консоль несколько сообщений для отправки на сервер.
1 | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testTopic |
Введите следующий текст
1 2 | Welcome to kafka This is my first topic |
Вы можете выйти из этой команды или оставить терминал запущенным для дальнейшего тестирования. Теперь откройте новый терминал для процесса потребителя Kafka на следующем шаге.
У Kafka также есть потребитель командной строки для чтения данных из кластера Kafka и вывода сообщений на стандартный вывод.
1 | bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning |
Теперь, если у вас все еще запущен продюсер Kafka в другом терминале. Просто наберите текст в терминале. Он сразу же будет виден на терминале потребителя.
Заключение
Это руководство помогло вам установить и настроить сервер Apache Kafka в системе Ubuntu 22.04 Linux. Кроме того, вы научились создавать новые топик на сервере Kafka и запускать пример процесса "производства" и потребления с помощью Apache Kafka.