Как установить и настроить ZooKeeper и Apache Kafka на Windows 10

Как установить и настроить ZooKeeper и Apache Kafka на Windows 10

Запустить Apache Kafka и ZooKeeper на Windows 10 проще, чем кажется! Перед вами подробная инструкция без Docker и облаков: установка, настройка, создание тестового топика и обработка первых сообщений.

Лого Apache Kafka

Apache Kafka — это распределённая система для стриминга данных, разработанная специально для обработки больших объёмов сообщений в реальном времени. Эта платформа используется повсеместно — от логирования и мониторинга до построения полноценных event-driven систем и микросервисной архитектуры. Она позволяет передавать сообщения между продюсерами (отправителями) и консьюмерами (получателями) через надёжную очередь, называемую топиком.

Однако Kafka не работает в одиночку. До версии 2.8 для управления кластером и хранения метаданных ей необходим компонент под названием ZooKeeper. ZooKeeper выполняет функции координатора: отслеживает состояние брокеров Kafka (серверов, обрабатывающих и хранящих сообщения), управляет выборами контроллера и помогает поддерживать целостность данных. Начиная с версии 2.8 Kafka поддерживает режим без ZooKeeper (KRaft mode). Однако в этом гайде используется классическая схема с ZooKeeper.

В продакшене Kafka обычно разворачивают двумя способами. Первый — в облаке или в виде кластера на VPS или собственных Linux-серверах, управляют всей инфраструктурой при этом самостоятельно. И второй — бессерверный Kafka, управляемый сторонними поставщиками услуг. Но для обучения, тестирования и небольших задач вполне подойдёт и локальная установка на Windows. В этой статье мы разберём последний способ и пошагово пройдём через весь процесс: от подготовки системы до запуска Kafka и отправки первого сообщения.

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Подготовка системы

Прежде чем приступать к установке, проверим, готова ли система. Обе платформы написаны на Java, поэтому для их работы требуется установленная Java Virtual Machine (JVM) и библиотеки. Также желательно иметь консольные утилиты, такие как curl, и текстовый редактор — например, Notepad++ или VS Code — для работы с конфигурационными файлами.

Установка Java

Kafka требует Java 8 или выше. Мы рекомендуем OpenJDK 17 или 21 как стабильные и совместимые версии.

Скачайте OpenJDK. Перейдите на официальный сайт Adoptium и скачайте Temurin 17 (это сборка OpenJDK). Выберите установочный .msi-файл для Windows 10.

Установите Java. Запустите установщик и следуйте инструкциям. Убедитесь, что вы отметили галочку «Set JAVA_HOME variable», если такая опция есть.

После установки Java убедитесь, что переменная окружения JAVA_HOME настроена, а в Path добавлен путь к её bin. Пример:

JAVA_HOME=C:\Program Files\Adoptium\jdk-17
Path=…;%JAVA_HOME%\bin

Проверьте установку. Откройте терминал PowerShell или CMD и выполните команду:

java -version

Ожидаемый вывод:

openjdk version "17.0.x"

Если команда не распознаётся, проверьте значение JAVA_HOME и Path.

Создание рабочих директорий

При раздельной установке выделите отдельные папки для ZooKeeper и Kafka. Продумайте структуру, в нашем примере оба каталога будут находиться в корне диска C. В этих директориях мы разместим и скачанные архивы, и конфигурационные файлы.

Папки нужно создавать как можно ближе к корню — чтобы избежать ошибок при запуске.

Установка 7-Zip

Продукты Apache распространяются в .tgz-архивах. Чтобы их распаковать, установите 7-Zip или любую другую win-утилиту, поддерживающую .tar.gz.

Теперь, когда подготовка завершена, приступим к установке и настройке ZooKeeper. Если вы устанавливаете обе платформы раздельно, то он потребуется первым, так как Kafka ставится поверх него.

Отдельная установка и запуск ZooKeeper

ZooKeeper нужен для хранения метаданных, отслеживания брокеров и координации кластера. В этом разделе мы установим его и настроим базовую конфигурацию.

Скачайте ZooKeeper. Перейдите на официальный сайт ZooKeeper в раздел «Download» и скачайте последнюю стабильную версию (на момент написания статьи это 3.8.4) в архиве .tar.gz.

Переместите архив в C:\zookeeper\. Распакуйте его в 7-Zip или аналогичной программе. После распаковки ZooKeeper будет находиться в папке с номером версии:

C:\zookeeper\zookeeper-3.8.4\

Следующий шаг — создание конфигурации. ZooKeeper может работать в двух режимах: Standalone и Replicated. Мы рассмотрим Standalone Mode. В этом режиме ZooKeeper использует конфигурационный файл zoo.cfg, который нужно создать вручную. Перейдите в директорию conf:

C:\zookeeper\zookeeper-3.8.4\conf\

Там находится пример — файл zoo_sample.cfg. Скопируйте его и переименуйте копию в zoo.cfg, затем откройте для редактирования. В нём нужно указать путь к директории с данными. По умолчанию указано:

dataDir=/tmp/zookeeper

Поменяем значение на актуальное:

tickTime=2000
dataDir=C:/zookeeper/zookeeper-3.8.4/data
clientPort=2181
maxClientCnxns=60

Не забудьте создать соответствующий каталог.

После этого добавим переменную среды окружения:

ZOOKEEPER_HOME=C:\zookeeper\zookeeper-3.8.4

И в конец системной переменной Path добавьте:

%ZOOKEEPER_HOME%\bin

Обратите внимание

В Windows не требуется ставить точку с запятой вручную, если редактировать переменные через GUI — система сама добавит разделитель. Указание «;%ZOOKEEPER_HOME%\bin;» допустимо только при редактировании переменной вручную через set.

Готово! Теперь переходим к запуску.

ZooKeeper запускается через скрипт zkServer.cmd. Откройте терминал PowerShell:

cd C:\zookeeper\zookeeper-3.8.4\bin
.\zkServer.cmd

По умолчанию ZooKeeper запускается на порту 2181. Этот порт можно изменить в конфигурационном файле zoo.cfg.

Установка Kafka и ZooKeeper одним пакетом

Kafka поставляется с базовой конфигурацией ZooKeeper и утилитами запуска, но не содержит полноценной самостоятельной сборки ZooKeeper. Для надёжной работы рекомендуется установить ZooKeeper отдельно. Скачайте архив с бинарными файлами с сайта проекта, у нас это kafka_2.13-4.0.0.tgz. Найдите его, и распакуйте с помощью архиватора, поддерживающего .tgz (например, 7-Zip). После распаковки у вас будет папка с номером версии в имени. Для удобства можно переименовать её, например, в Kafka.

Обратите внимание

Убедитесь, что версия Scala (2.13) совместима с установленной версией Kafka. Не всегда новые Kafka-сборки поддерживают все старые версии Scala.

Структура каталогов

Откройте проводник и перейдите в папку Kafka. Структура дерева каталогов

должна быть примерно такой:

C:\
  └── kafka\
      ├── bin\
      │   └── windows\
      ├── config\
      └── ...

Здесь:

  • bin — исполняемые скрипты для управления кластером. В подкаталоге /windows расположены файлы, адаптированные для работы под ОС Windows.
  • config — хранит конфигурационные файлы (например, zookeeper.properties, server.properties), позволяющие кастомизировать настройки брокера и ZooKeeper.
  • libs — включает библиотеки зависимостей (JAR-файлы), необходимые для работы Kafka.
  • logs — директория с журналами событий. Логи помогают анализировать работу системы, диагностировать ошибки и отслеживать взаимодействие компонентов.
  • site-docs — официальная документация по текущей версии Kafka — полезный ресурс для изучения функционала.
  • LICENSE и NOTICE — текстовые файлы с информацией о лицензионных условиях и юридическими уведомлениями.

Настройка ZooKeeper

Модуль ZooKeeper находится в папке bin\windows, его конфигурационный файл — по пути config\zookeeper.properties. Он уже содержит рабочие настройки по умолчанию, но для понимания стоит знать основные параметры:

dataDir=C:/kafka/zookeeper-data
clientPort=2181
maxClientCnxns=0

Где:

  • dataDir — путь, где ZooKeeper будет хранить свои данные. Его нужно изменить на win-совместимый. Windows не имеет каталога /tmp. Путь по умолчанию здесь — свидетельство того, что Kafka изначально создавался для Linux.
  • clientPort — порт, на котором ZooKeeper принимает подключения. По умолчанию — 2181.

Изменим dataDir на Windows-путь.

Откройте в любом текстовом редакторе файл:

config\zookeeper.properties

Замените строку:

dataDir=/tmp/zookeeper

на

dataDir=C:/kafka/zookeeper-data

Создайте папку zookeeper-data внутри каталога Kafka, если она ещё не существует, затем дайте пользователю права на запись:

icacls "C:\kafka\zookeeper-data" /grant "*Users":(OI)(CI)F

Запуск ZooKeeper

В PowerShell или командной строке зайдите в корневую папку Kafka и выполните:

.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

Если всё настроено верно, вы увидите лог со строкой:

INFO binding to port 0.0.0.0/0.0.0.0:2181

Настройка и запуск Kafka

После запуска ZooKeeper можно переходить к Kafka.

Конфигурация Kafka

Конфиги Kafka находятся по пути:

config\server.properties

Откройте этот файл для редактирования и найдите следующие параметры:

broker.id=0
log.dirs=C:/kafka/kafka-logs
zookeeper.connect=localhost:2181

Внесём изменения для Windows. В строке log.dirs по умолчанию указан путь в стиле Linux (/tmp/kafka-logs), который не существует в Windows. Замените его, например, на:

log.dirs=C:/kafka/kafka-logs

Убедитесь, что zookeeper.connect указывает на localhost и порт 2181 (если вы не меняли его ранее):

zookeeper.connect=localhost:2181

Создайте папку kafka-logs в каталоге Kafka, чтобы избежать ошибок при запуске и предоставьте права на запись:

icacls "C:\kafka\kafka-logs" /grant "*Users":(OI)(CI)F

Запуск Kafka-сервера

Теперь, когда всё настроено, можно запускать Kafka. Откройте второе окно PowerShell или командной строки и войдите в каталог Kafka, например:

cd C:\kafka

Затем запустите Kafka:

.\bin\windows\kafka-server-start.bat ".\config\server.properties"

Если всё работает правильно, вы увидите в выводе сообщение, означающее, что Kafka успешно запущен и готов к работе:

INFO [KafkaServer id=0] started (kafka.server.KafkaServer)

Проверка работы Kafka

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

Создание топика

Откройте ещё одно окно PowerShell (Kafka и ZooKeeper уже работают в своих окнах) и перейдите в папку Kafka:

cd C:\kafka

Выполните для создания нового топика:

.\bin\windows\kafka-topics.bat --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

Если всё прошло успешно, вы увидите сообщение:

Created topic test-topic

Проверить список доступных топиков можно так:

.\bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092

Отправка сообщения

Теперь отправим сообщение в созданный топик. Для этого используется Kafka Producer. Запустите в том же окне (третьем):

.\bin\windows\kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test-topic

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

Если вы работаете с нестандартными типами данных (например, JSON или Avro), Kafka может потребовать указания сериализаторов. В этом случае при запуске Producer добавьте параметры:

--producer-property key.serializer=org.apache.kafka.common.serialization.StringSerializer ^
--producer-property value.serializer=org.apache.kafka.common.serialization.StringSerializer

Для строковых сообщений эти параметры не обязательны — Kafka использует их по умолчанию.

Чтение сообщений из топика

Откройте ещё одно окно PowerShell (да, у вас теперь уже 4 окна) и запустите Kafka Consumer:

cd C:\kafka
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-topic --from-beginning

Если обработка сообщений проходит успешно — и Producer, и Consumer работают корректно, — то вы должны увидеть отправленное сообщение.

Завершение работы Kafka и ZooKeeper

После тестирования или использования Kafka важно корректно завершить работу сервисов, чтобы избежать повреждения логов или потери информации.

Остановка Kafka

Найдите окно PowerShell, где запущен Kafka-сервер. Просто нажмите Ctrl+C — это отправит сигнал остановки, и Kafka завершит работу.

Пример вывода:

[KafkaServer id=0] shutting down
[KafkaServer id=0] shut down completed

Если Kafka не реагирует на Ctrl+C, можно закрыть окно PowerShell, но это менее предпочтительный способ.

Остановка ZooKeeper

Перейдите в окно, где запущен ZooKeeper, и также нажмите Ctrl+C. Вы увидите строки, подтверждающие завершение:

Shutting down…
Closed socket...

Очистка временных данных (по желанию)

Kafka и ZooKeeper хранят временные данные в папках:

  • C:\kafka\kafka-logs — логи Kafka;
  • C:\kafka\zookeeper-data — данные ZooKeeper (если вы указывали эту папку при запуске).

Их можно удалить перед следующим чистым запуском Kafka, если вы экспериментировали с настройками и нужно сбросить состояние. В PowerShell:

Remove-Item -Recurse -Force C:\kafka\kafka-logs
Remove-Item -Recurse -Force C:\kafka\zookeeper-data

Будьте осторожны: это удалит все сообщения, топики и внутреннее состояние кластера. Используйте эти команды, только если уверены в своих действиях.

Заключение

Установка Kafka

Мы рассмотрели, как установить и запустить ZooKeeper и Kafka на Windows 10. Несмотря на то что Kafka изначально разрабатывалась с прицелом на Linux, её вполне можно использовать и в среде Windows — особенно для целей разработки, обучения или тестирования.

В ходе статьи мы:

  • установили Java и проверили её работоспособность;
  • скачали и распаковали Kafka;
  • запустили ZooKeeper и Kafka как отдельные процессы;
  • создали и протестировали простой топик, отправив и получив сообщения;
  • корректно завершили работу сервисов.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях