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

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

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

Мы рассмотрели, как установить и запустить ZooKeeper и Kafka на Windows 10. Несмотря на то что Kafka изначально разрабатывалась с прицелом на Linux, её вполне можно использовать и в среде Windows — особенно для целей разработки, обучения или тестирования.
В ходе статьи мы:
- установили Java и проверили её работоспособность;
- скачали и распаковали Kafka;
- запустили ZooKeeper и Kafka как отдельные процессы;
- создали и протестировали простой топик, отправив и получив сообщения;
- корректно завершили работу сервисов.
Читайте в блоге:
- Какие серверные SSD-накопители с интерфейсом NVMe лучше
- Как включить и настроить удалённый доступ к серверу
- Как выбрать виртуальный сервер для сложных задач: гайд по GPU-решениям