Поиск по сайту:

Как установить Apache Kafka на Rocky Linux


На этой странице

  1. Предпосылки
  2. Установка Java OpenJDK
  3. Скачивание Apache Kafka
  4. Запуск Kafka в качестве службы Systemd
  5. Основные операции с использованием Kafka Console Producer и Consumer
  6. Потоковая передача данных с помощью подключаемого модуля Kafka Connect
  7. Заключение

Apache Kafka — это распределенное хранилище данных для обработки потоковых данных в режиме реального времени. он разработан Apache Software Foundation и написан на Java и Scala. Apache Kafka используется для создания конвейеров потоковой передачи данных в реальном времени и приложений, которые адаптируются к потоку данных, особенно для приложений корпоративного уровня и критически важных приложений. Это одна из самых популярных платформ потоковой передачи данных, используемая тысячами компаний для высокопроизводительных конвейеров данных, потоковой аналитики и интеграции данных.

Apache Kafka объединяет обмен сообщениями, хранение и потоковую обработку в одном месте. Позвольте пользователям настроить высокопроизводительный и мощный поток данных для сбора, обработки и потоковой передачи данных в режиме реального времени. Он используется в современных распределенных приложениях с возможностью масштабирования для обработки миллиардов потоковых событий.

В этом руководстве мы установим Apache Kafka на сервер Rocky Linux и изучим основы использования Kafka в качестве брокера сообщений для потоковой передачи данных через плагин Kafka.

Предпосылки

Чтобы следовать этому руководству, вам потребуются следующие требования:

  • Сервер Rocky Linux. Вы можете использовать сервер Rocky Linux v8 или v9.
  • Пользователь без полномочий root с привилегиями sudo root.

Установка Java OpenJDK

Apache Kafka — это приложение на основе Java. Чтобы установить Kafka, вы сначала установите Java в своей системе. На момент написания этой статьи для последней версии Apache Kafka требовался как минимум Java OpenJDK v11.

На первом этапе вы установите Java OpenJDK 11 из официального репозитория Rocky Linux.

Запустите приведенную ниже команду dnf, чтобы установить Java OpenJDK 11 в вашу систему Rocky Linux.

sudo dnf install java-11-openjdk

Когда будет предложено подтвердить установку, введите y и нажмите ENTER, чтобы продолжить.

После установки Java проверьте версию Java с помощью следующей команды. Вы увидите, что Java OpenJDK 11 установлен в вашей системе Rocky Linux.

java version

Теперь, когда Java установлена, вы начнете установку Apache Kafka.

Скачиваем Апач Кафка

Apache Kafka предоставляет несколько двоичных пакетов для различных операционных систем, включая Linux/Unix. На этом шаге вы создадите нового выделенного системного пользователя для Kafka, загрузите двоичный пакет Kafka и настроите установку Apache Kafka.

Выполните следующую команду, чтобы создать нового системного пользователя с именем kafka. Это создаст нового системного пользователя для Kafka с домашним каталогом по умолчанию /opt/kafka, который будет использоваться в качестве каталога установки Kafka.

sudo useradd -r -d /opt/kafka -s /usr/sbin/nologin kafka

Теперь переместите ваш рабочий каталог в /opt. Затем загрузите двоичный пакет Apache Kafka с помощью приведенной ниже команды curl. Теперь вы увидите файл kafka.tar.gz.

cd /opt
sudo curl -fsSLo kafka.tgz https://downloads.apache.org/kafka/3.3.1/kafka_2.12-3.3.1.tgz

Извлеките файл kafka.tar.gz с помощью команды tar и переименуйте извлеченный каталог /opt/kafka.

tar -xzf kafka.tgz
sudo mv kafka_2.12-3.3.1 /opt/kafka

Затем измените владельца каталога /opt/kafka на пользователя kafka с помощью приведенной ниже команды chmod.

sudo chown -R kafka:kafka /opt/kafka

После этого создайте новый каталог журналов для Apache Kafka. Затем отредактируйте конфигурацию server.properties по умолчанию с помощью редактора nano.

sudo -u kafka mkdir -p /opt/kafka/logs
sudo -u kafka nano /opt/kafka/config/server.properties

Каталог журналов Kafka будет использоваться для хранения журналов Apache Kafka, и вы должны определить каталог журналов в sertver.properties конфигурации Kakfka.

Раскомментируйте параметр log.dirs и измените значение на /opt/kafka/logs.

# logs configuration for Apache Kafka
log.dirs=/opt/kafka/logs

Сохраните файл и выйдите из редактора, когда закончите.

Вы завершили базовую установку и настройку Apache Kafka. Далее вы будете настраивать и запускать Apache Kafka как службу systemd.

Запуск Kafka в качестве службы Systemd

Пакет Apache Kafka включает другое приложение Zookeeper, которое используется для централизации служб и поддержки выбора контроллера Kafka, конфигураций тем и ACL (списков управления доступом) для кластера Apache Kafka.

Чтобы запустить Apache Kafka, вы должны сначала запустить Zookeeper в своей системе. На этом шаге вы создадите новый служебный файл systemd как для Zookeeper, так и для Apache Kafka. Обе службы также будут работать под одним и тем же пользователем kafka.

Создайте новый служебный файл для Zookeeper /etc/systemd/system/zookeeper.service с помощью следующей команды.

sudo nano /etc/systemd/system/zookeeper.service

Добавьте конфигурацию в файл.

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Сохраните файл и выйдите из редактора, когда закончите.

Затем создайте новый служебный файл для Apache Kafka /etc/systemd/system/kafka.service с помощью приведенной ниже команды.

sudo nano /etc/systemd/system/kafka.service

Добавьте следующую конфигурацию в файл. Вы можете видеть в разделе [Unit], что для службы Kafka требуется, чтобы zookeeper.service запускался первым, и он всегда запускался после zookeeper.service.

[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /opt/kafka/logs/start-kafka.log 2>&1'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Сохраните файл и выйдите из редактора, когда закончите.

Затем выполните следующую команду systemctl, чтобы перезагрузить диспетчер systemd и применить новые службы.

sudo systemctl daemon-reload

Теперь запустите службы zookeeper и kafka, используя следующую команду.

sudo systemctl start zookeeper
sudo systemctl start kafka

Включите автоматический запуск служб kafka и zookeeper при загрузке системы с помощью приведенной ниже команды systemctl.

sudo systemctl enable zookeeper
sudo systemctl enable kafka

Наконец, проверьте службу zookeeper и kafka, используя приведенную ниже команду.

sudo systemctl status zookeeper
sudo systemctl status kafka

В приведенном ниже выводе вы можете увидеть, что текущий статус службы zookeeper запущен, а также включен.

И ниже для статуса службы kafka, которая работает, а также служба включена.

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

Основные операции с использованием Kafka Console Producer и Consumer

Прежде чем вы начнете, все команды, которые будут использоваться в этом примере, предоставляются пакетом Kafka, доступным в каталоге /opt/kafka/bin.

На этом этапе вы узнаете, как создавать и перечислять темы Kafka, запускать производителя и вставлять данные, передавать данные через сценарий потребителя и, наконец, очищать свою среду, удаляя тему Kafka.

Выполните следующую команду, чтобы создать новую тему Kafka. Вы будете использовать сценарий kafka-topics.sh для создания новой темы с именем TestTopic с одной репликацией и разделом.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh \
--create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic TestTopic

Теперь выполните следующую команду, чтобы проверить список тем на вашем Kafka. Вы должны увидеть, что TestTopic создан на вашем сервере Kafka.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

Далее, для создания сообщений вы можете использовать скрипт kafka-console-producer.sh, а затем вставлять данные, которые будут обрабатываться.

Выполните следующую команду, чтобы запустить Kafka Console Producer и указать тему в TestTopic.

sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TestTopic

После того, как вы получили Kafka Console Producer, введите любое сообщение, которое будет обработано.

Затем откройте новую терминальную сессию и войдите на сервер. Затем откройте потребитель консоли Kafka с помощью сценария kafka-conosle-consumer.sh.

Выполните приведенную ниже команду, чтобы запустить потребитель консоли kafka, и укажите тему для TestTopic.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TestTopic --from-beginning

На приведенном ниже снимке экрана вы можете видеть, что все сообщения от Kafka Console Producer обрабатываются на Consumer Console. Вы также можете ввести другие сообщения в Console Producer, и сообщение будет автоматически обработано и отображено на экране Console Consumer.

Теперь нажмите Ctrl+c, чтобы выйти из Kafka Console Producer и Kafka Console Consumer.

Чтобы очистить среду Kafka, вы можете удалить TestTopic с помощью следующей команды.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic TestTopic

Потоковая передача данных с помощью плагина Kafka Connect

Apache Kafka предоставляет несколько подключаемых модулей, которые можно использовать для потоковой передачи данных из нескольких источников. Дополнительные подключаемые модули библиотеки Kafka доступны по умолчанию в каталоге /opt/kafka/libs, вы должны включить подключаемые модули kafka через файл конфигурации /opt/kafka/config/connect-standalone.properties. В данном случае для автономного режима Kafka.

Выполните следующую команду, чтобы изменить файл конфигурации Kafka /opt/kafka/config/connect-standalone.properties.

sudo -u kafka nano /opt/kafka/config/connect-standalone.properties

Раскомментируйте строку plugin.path и измените значение на каталог библиотеки плагинов /opt/kakfa/libs.

plugin.path=/opt/kafka/libs

Сохраните файл и выйдите из редактора, когда закончите.

Затем выполните следующую команду, чтобы создать новый файл /opt/kafka/test.txt, который будет использоваться в качестве источника данных для потока Kafka.

sudo -u kafka echo -e "Test message from file\nTest using Kafka connect from file" > /opt/kafka/test.txt

Теперь выполните следующую команду, чтобы запустить Kafka Consumer в автономном режиме с файлами конфигурации connect-file-source.properties и connect-file-sink.properties.

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

cd /opt/kafka
sudo -u kafka /opt/kafka/bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties

Теперь откройте другой сеанс терминала и выполните следующую команду, чтобы запустить потребитель консоли Kafka. Также укажите тему для подключения-тестирования. Вы увидите сообщение из файла test.txt.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning

Теперь вы можете обновить файл test.txt, и новые сообщения будут автоматически обрабатываться и передаваться в потоковом режиме на потребителе консоли Kafka.

Выполните следующую команду, чтобы обновить файл test.txt новыми сообщениями.

sudo -u kafka echo "Another test message from file test.txt" >> test.txt

В следующем выводе вы можете видеть, что новые сообщения автоматически обрабатываются Kafka при внесении изменений в файл test.txt. Вы завершили базовое использование плагина Kafka connect для потоковой передачи сообщений через файлы.

Заключение

Из этого руководства вы узнали, как установить Apache Kafka в системе Rocky Linux. Вы также изучили основы использования консоли Kafka Producer для создания и обработки сообщений и Kafka Consumer для получения сообщений. В конце концов, вы также узнали, как включать плагины Kafka и использовать плагин Kafka Connect для потоковой передачи сообщений в режиме реального времени из файла.