Apache Kafka - это платформа распределенной потоковой передачи данных. Она полезна для построения конвейеров потоковых данных в реальном времени для получения данных между системами или приложениями. Еще одна полезная функция - потоковые приложения реального времени, которые могут преобразовывать потоки данных или реагировать на них.
Это руководство поможет вам установить Apache Kafka на Linux-системы Debian 11, Debian 10 и Debian 9.
Шаг 1 - Установка Java
Для работы Apache Kafka требуется Java. В вашей системе должна быть установлена java. Выполните следующую команду для установки стандартного OpenJDK из официальных PPA.
1 2 | sudo apt update sudo apt install default-jdk |
Шаг 2 - Загрузка Apache Kafka
Загрузите бинарные файлы Apache Kafka с его официального сайта. Вы также можете выбрать любое близлежащее зеркало для загрузки.
1 | wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz |
Затем распакуйте архивный файл
1 2 | tar xzf kafka_2.13-3.6.0.tgz sudo mv kafka_2.13-3.6.0 /usr/local/kafka |
Шаг 3 - Создание файлов модулей Systemd
Далее создайте файлы юнитов systemd для сервисов Zookeeper и Kafka. Это поможет управлять службами Kafka для запуска/остановки с помощью команды systemctl.
Сначала создайте файл юнитов 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 |
Сохраните файл и закройте его.
Далее необходимо создать файл юнитов Kafka systemd с помощью следующей команды:
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-1.11.0-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 | systemctl daemon-reload |
Шаг 4 - Запуск сервера Kafka
Для работы Kafka требуется ZooKeeper, поэтому сначала необходимо запустить сервер ZooKeeper на своей системе. Для запуска одноузлового экземпляра ZooKeeper можно использовать скрипт, поставляемый вместе с Kafka.
1 | sudo systemctl start zookeeper |
Теперь запустите сервер Kafka и просмотрите состояние его работы:
1 2 | sudo systemctl start kafka sudo systemctl status kafka |
Все готово. Установка Kafka успешно завершена. Часть этого руководства поможет вам работать с сервером 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 |
Коэффициент репликации (replication-factor) описывает, сколько копий данных будет создано. Так как мы работаем с одним экземпляром, установите значение 1.
Задайте в параметре partitions количество брокеров, между которыми будут распределяться данные. Поскольку мы работаем с одним брокером, это значение равно 1.
Вы можете создать несколько топиков, выполнив ту же команду, что и выше. После этого можно просмотреть созданные топики в Kafka, выполнив следующую команду:
1 | bin/kafka-topics.sh --list --zookeeper localhost:9092 |
Кроме того, вместо ручного создания тем можно настроить брокеры на автоматическое создание тем в случае публикации несуществующей темы.
Шаг 6 - Отправка сообщений в Kafka
Производитель" - это процесс, отвечающий за помещение данных в Kafka. Kafka поставляется с клиентом командной строки, который принимает данные из файла или из стандартного ввода и отправляет их в виде сообщений в кластер Kafka. По умолчанию Kafka отправляет каждую строку как отдельное сообщение.
Давайте запустим продюсера, а затем введем в консоль несколько сообщений для отправки на сервер.
1 2 3 4 5 | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testTopic >Welcome to kafka >This is my first topic > |
Вы можете выйти из этой команды или оставить этот терминал запущенным для дальнейшего тестирования. Теперь откройте в новом терминале процесс потребителя Kafka на следующем шаге.
Шаг 7 - Использование консьюмера Kafka
Для чтения данных из кластера Kafka и вывода сообщений на стандартный вывод в Kafka существует консьюмер, работающий из командной строки.
1 | bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning |
Теперь, если у вас все еще запущен Kafka producer (шаг №6) в другом терминале. Просто наберите текст на терминале производителя, и он сразу же появится на терминале потребителя. Ниже приведен снимок экрана с работающими производителем и потребителем Kafka:
Заключение
Вы успешно установили и настроили службу Kafka на системе Debian Linux.