By   December 30, 2014

Apache has provided an amazing documentation for Kafka. It also includes step-by-step guide to run download and run kafka. Unfortunately, the documentation misses any info for running it on windows platform. I really had to struggle running it on my windows box, so i thought i should add it here for anyone else going through the same issues.

Step I [Download Kafka Binaries]

First of all, we can download kafka from the following:

apache_kafka_download

The download is a tar gzip compressed file with tgz extension. So first we need to un-compress it before using any files. There are a number of tools available for this. I have 7-zip installed on my machine, which also supports extracting contents from this type of compressed file. Here I have downloaded 0.8.11 with the scala version 2.10.

7zip_tgz

Just extract the contents of the archive into a folder.

Step II – Install support for running shell (*.sh) scripts

Now the second step of the kafka documentation suggests running Zookeeper directly. For a windows machine there is no built-in support for this, so you need to add tools for running the shell script. If you already have Git client installed, there is already a support, otherwise, install Cygwin making sure that you are selecting utils for installation.

cygwin_download

Step III – Updating the compatible batch files

But if you just run it now, it just throws the following error message. Here I am using Cygwin terminal.

Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain

quorum_main

I have seen a lot of people have this issue. Apparently, it is because of the batch files provided with the download. It is in Windows sub-directory of kafka folder.

winbat_files

I am using 64-bit Windows 8.1 machine. The solution that worked for me is to replace the win batch files with the ones provided here.

kafka_win_batch_github

Step – IV Handling spaces in JAVA_HOME Environment Variable

I have JRE installed on this windows machine. The environment variable, JAVA_HOME, is set to the installation directory which has spaces in its path.

java_env_variable

Running with this path set would introduce another problem.

space_env_program

If you clearly look at the error message, it is apparent that, somehow, kafka-run-class.sh script is being executed, which is throwing this error on line 153. Let’s do the universal solution for handling spaces in file paths, enclose it in quotes.

double_quote_java

Step V – Missing Server JVM components

Now If you just have JRE installed, as I had on this machine, you should see the error message for missing server JVM.

jvm_server

In order to just get over this problem, you can just create a new folder, and name it server. Now copy the contents of client folder to this new folder.

server_jvm_folder

Step VI – Unrecognized VM Option UseCompressedOops

Now as we move forward and run it, we are faced with another error. Only this time, it doesn’t tell where is the actual problem. This is the error message.

Unrecognized VM option ‘UseCompressedOops’

UseCompressOops

Just removing this JVM option, would let you get rid of this error message.

Step VII – QuorumPeerMain – Once Again

After going through all the above steps, reality hits you and you end up with the same error message that you started with. And that makes it really funny. Has all this effort been fruitless. Actually, No!!!

Since we are running it in windows, we are having class path problem. Since we already have cygwin installed, we can use cygpath. Just update line 153 in kafka-run-class again and use cygpath with class path.

cygpath_classpath

Finally!!!

Finally, after going through all this hassle, you can have zookeeper running on your machine. It looks so pretty 🙂

zookeeper_running

Now you can continue with the next instructions for running kafka server, creating topics, sending message from producer and picking them up from consumer.

Zindabad!!!