Install Apache Kafka on Ubuntu 20.04

Updated on December 15, 2021
Install Apache Kafka on Ubuntu 20.04 header image

Introduction

Apache Kafka is an open-source, distributed message broker based on Scala and Java. It's used as a publish-subscribe messaging system; when a producer publishes a message, it's broadcast, and subscribers can get notified and process the information. It can handle large volumes of real-time data and event streaming pipelines with higher throughput than popular message brokers like ActiveMQ and RabbitMQ. In addition, it's highly scalable and fault-tolerant.

Apache Kafka uses Apache Zookeeper to keep track of its cluster node's status, topics, partitions, and so on. Apache ZooKeeper is an open-source project built for centralized services. It provides configuration information, naming, synchronization and group services for large clusters in a distributed systems.

This article explains how to install Apache Kafka on Ubuntu 20.04 server.

Prerequisites

1. Install Java

Update system package list.

$ sudo apt update

Install Java.

$ sudo apt install openjdk-11-jre-headless -y

Verify the installation.

$ java --version

2. Install Apache Kafka

Download Apache Kafka source files. To find the latest version of this software, visit the official download website.

$ wget https://dlcdn.apache.org/kafka/3.0.0/kafka_2.12-3.0.0.tgz

Create an installation directory /usr/local/kafka-server.

$ sudo mkdir /usr/local/kafka-server

Extract the downloaded files.

$ sudo tar -xzf kafka_2.12-3.0.0.tgz

Move the extracted files to the installation directory.

$ sudo mv kafka_2.12-3.0.0/* /usr/local/kafka-server

For Apache Kafka and Apache Zookeeper to run as daemons, create systemd files for both of them.

Creating systemd file for Apache Zookeeper.

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

Add the following lines of code to the file, save and close the file.

[Unit]

Description=Apache Zookeeper Server

Requires=network.target remote-fs.target

After=network.target remote-fs.target

[Service]

Type=simple

ExecStart=/usr/local/kafka-server/bin/zookeeper-server-start.sh /usr/local/kafka-server/config/zookeeper.properties

ExecStop=/usr/local/kafka-server/bin/zookeeper-server-stop.sh

Restart=on-abnormal

[Install]

WantedBy=multi-user.target

Creating systemd file for Apache Kafka.

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

Add the following lines of code to the file, save and close the file.

[Unit]

Description=Apache Kafka Server

Documentation=http://kafka.apache.org/documentation.html

Requires=zookeeper.service

After=zookeeper.service

[Service]

Type=simple

Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"

ExecStart=/usr/local/kafka-server/bin/kafka-server-start.sh /usr/local/kafka-server/config/server.properties

ExecStop=/usr/local/kafka-server/bin/kafka-server-stop.sh

Restart=on-abnormal

[Install]

WantedBy=multi-user.target

Reload the systemd daemons to apply the changes.

$ sudo systemctl daemon-reload

Start and enable the Apache Zookeeper service for startup on system boot.

$ sudo systemctl enable --now zookeeper.service

Start and enable the Apache Kafka service for startup on system boot.

$ sudo systemctl enable --now kafka.service

Verify the status of both Apache Zookeeper and Apache Kafka services.

$ sudo systemctl status kafka zookeeper

3. Install Cluster Manager for Apache Kafka (CMAK).

CMAK is a graphical management tool for Apache Kafka clusters. It provides the user with various tools to avoid using the CLI interface.

Clone the CMAK repository from GitHub.

$ git clone https://github.com/yahoo/CMAK.git

Edit the CMAK configuration file.

$ sudo nano CMAK/conf/application.conf

Change the value of cmak.zkhosts as follows.

cmak.zkhosts="localhost:2181"

Change to the CMAK directory.

$ cd CMAK

Create a zip file used for deploying the application.

$ ./sbt clean dist

Change into CMAK/target/universal directory.

$ cd target/universal

Install unzip package.

$ sudo apt install unzip -y

Extract the created zip file.

$ sudo unzip cmak-3.0.0.5.zip

Change to the extracted directory.

$ cd cmak-3.0.0.5

Execute the CMAK binary to start the service.

$ sudo bin/cmak

4. Access CMAK Web Interface

Open your web browser and access the CMAK web interface using the URL http://ServerIP:9000. For example:

http://192.0.2.10:9000

Conclusion

You have installed Apache Kafka and Apache Zookeeper on your server. You can now access the CMAK dashboard and add a Kafka cluster.

More Information

For more information on Apache Kafka, please see the official documentation.