How to install Apache Kafka on Linux without ZooKeeper (KRaft mode)

Kafka KRaft installation on Linux without ZooKeeper. Set up Java, format storage with kafka-storage, and verify a single-node KRaft cluster step by step.

Install and run Kafka in KRaft mode on Linux

KRaft mode runs Kafka without ZooKeeper, simplifying deployment and reducing resource requirements. This guide walks you through setting up a single-node KRaft cluster.

What you'll learn:

  • How to install Java 11 (required dependency)
  • How to generate a cluster ID and format storage
  • How to start Kafka in KRaft mode
  • How to configure your PATH for CLI access

KRaft vs ZooKeeper

KRaft mode became production-ready in Kafka 3.3. For maximum compatibility with older tutorials and tools, see the Linux ZooKeeper installation guide.

Installation overview

Linux Kafka KRaft install flow: install Java 11, download Kafka, generate cluster ID, format storage, start Kafka

Step 1: Install Java JDK 11

Kafka requires Java 11 or later.

For Ubuntu/Debian:

wget -O- https://apt.corretto.aws/corretto.key | sudo apt-key add -
sudo add-apt-repository 'deb https://apt.corretto.aws stable main'
sudo apt-get update
sudo apt-get install -y java-11-amazon-corretto-jdk

For other distributions:

Visit the Amazon Corretto 11 Linux install page for RPM, Alpine, and other packages.

Verify the installation:

java -version

Expected output:

openjdk version "11.0.10" 2021-01-19 LTS
OpenJDK Runtime Environment Corretto-11.0.10.9.1 (build 11.0.10+9-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.10.9.1 (build 11.0.10+9-LTS, mixed mode)

Step 2: Download and extract Kafka

wget https://archive.apache.org/dist/kafka/3.0.0/kafka_2.13-3.0.0.tgz
tar -xzf kafka_2.13-3.0.0.tgz
mv kafka_2.13-3.0.0 ~

Or download manually from kafka.apache.org/downloads.

Step 3: Generate cluster ID

KRaft clusters require a unique identifier:

~/kafka_2.13-3.0.0/bin/kafka-storage.sh random-uuid

This returns a UUID like 76BLQI7sT_ql1mBfKsOk9Q. Save this value.

Step 4: Format storage

Format the log directory using your cluster ID (replace with your generated UUID):

~/kafka_2.13-3.0.0/bin/kafka-storage.sh format \
  -t <uuid> \
  -c ~/kafka_2.13-3.0.0/config/kraft/server.properties

This formats the directory specified in log.dirs (default: /tmp/kraft-combined-logs).

Step 5: Start Kafka

~/kafka_2.13-3.0.0/bin/kafka-server-start.sh ~/kafka_2.13-3.0.0/config/kraft/server.properties

Keep this terminal window open. Kafka is now running at localhost:9092 in KRaft mode.

Step 6: Configure PATH

Add Kafka binaries to your PATH for convenient access.

Edit your shell configuration file (~/.bashrc or ~/.zshrc):

export PATH="$PATH:$HOME/kafka_2.13-3.0.0/bin"

Reload your shell:

source ~/.bashrc

Verify the setup:

kafka-topics.sh --version

See it in practice with Conduktor

Conduktor Console can connect to your KRaft cluster at localhost:9092 for visual topic management.

Next steps