Apache Kafka. Быстрый старт на MacOS

Apache Kafka – это один из самых популярных брокеров сообщений на рынке IT. Когда-то был разработан LinkedIn для своих внутренних нужд, позже был передан в OpenSource. В настоящее время главным мэинтейнером Apache Kafka является компания Confluent. Думаю на истории можно остановиться. Подробнее о Apache Kafka можно почитать здесь https://kafka.apache.org.

Какую проблему решает?

С одной стороны, когда мы имеем один источник данных и одного потребителя данных, то Kafka и другие брокеры сообщений нам вообще ни к чему. Примерно выглядит это вот так:

С другой стороны, в реальных проектах современного мира все выглядит немного по-другому. Примерно вот так:

Получается, имея 4 источника и 4 системы потребителя, нужно написать 16 интеграций. Apache Kafka – решает эту проблему, агрегирую внутри себя сообщения от источников, которые потом прочитываются потребителями.

Детально о том как устроена Kafka поговорим как-нибудь в другой раз, а сейчас давайте перейдем к практике и за 5 минут развернем “Кафку” у себя на MacOS.

Всего необходимо сделать следующие шаги:

  1. Установить brew
  2. Скачать и установить Java 8 JDK
  3. Скачать и разархивировать Apache Kafka
  4. Установить Kafka с помощью brew
  5. Настроить конфигурационные файлы Zookeeper и Kafka
  6. Запустить Zookeeper и Kafka
  7. Создать Topic
  8. Запустить потребителя и поставщика данных и отправить сообщения в Kafka

Поехали!

1. Чтобы установить brew просто введите эту строку в терминале

2. Для установки java 8 используем brew. Введите последовательно 2 команды. Сначала

Она будет выполняться около 1 минуты, затем следующую

Проверить, что установка прошла успешно можно командой

Вывод должен быть таким

3. Переходим на сайт https://kafka.apache.org/downloads и скачиваем бинарник.

После успешной загрузки необходимо разархивировать Kafka.

4. Устанавливаем Kafka так же с помощью brew командой

5. Далее необходимо настроить конфигурацию Zookeeper и Kafka.

Zookeeper – что-то типо аркистратора для Kafka. Без Zookeeper вы не сможете запустить Kafka.

Создаем папку data в разархивированном архиве  Kafka. Внутри нее создаем еще две папки Kafka и Zookeeper. Далее редактирует два файла: zookeeper.properties и server.properties. Создаём папки  с помощью последовательного выполнения команд в терминале

После выполнения этих команд в том же терминале можете убедиться что папки создались (командой ls)

Далее, редактируем файлы zookeeper.properties и server.properties.  Здесь нам потребуется получить полный адрес созданной ранее папки zookeeper. Для этого вводим команды

Полученный путь нужно скопировать.

Теперь нам необходимо вернуться в родительский каталог для Kafka и отредактировать конфигурационный файл с помощью nano

Находим dataDir и вставляем вместо временного пути наш. Нажимаем ctrl+X и выходим в терминал, сохраняя изменения.

Повторяем операцию для server.properties.

Копируем путь до папки и открываем файл server.properties с помощью nano и в log.dirs вставляем полный путь до папки data/kafka, после – сохраняем.

6. Отлично! Подготовительная работа позади, и мы можем запустить Zookeeper и Kafka. Делать это нужно последовательно в двух разных терминалах следующими командами

Успешным выполнением первой команды будет следующий лог в терминале

Далее открываем второй терминал и выполняем вторую команду

Успешным выполнением будет лог

7. Не закрывая терминалы с запущенными Zookeeper и Kafka, открываем новый и пишем команду, которая создает топик. Топик (Topic) – это непосредственно место, куда будут записываться сообщения и откуда они будут считываться. Топик состоит из сегментов (Partitions), сегменты включают в себя очередь сообщений, которые имеют возрастающий целочисленный id (offsets). В терминале прописываем следующую команду

параметр replication-factor – это одна из важных фичей Kafka. Указывает сколько копий содержимого данного топика будет реплецироваться с одного брокера на другого в рамках кластера Kafka. Рекомендуемое значение > 1. В нашем примере 1, потому что у нас всего один брокер.

8. Осталось запустить поставщика и потребителя данных. Воспользуемся  Bootstrap-servers, предоставляемыми вместе с Kafka. И так, не закрывая открытые консоли для Zookeeper и Kafka, открываем еще два терминала. В одном пишем команду

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

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

Вот так мы с вами за 5 минут и 8 шагов сумели передать первые сообщения через Apache Kafka!

2 comments On Apache Kafka. Быстрый старт на MacOS

Оставить комментарий:

Ваш email не будет опубликован.