# Installation

### Verify Java Version&#x20;

You must have java version 8 on your machine. You can verify this using.

```
$ java -version
```

If java is successfully installed on your machine, you could see the version of the installed Java.

If Java is not available, please download the latest version of JDK for your operating system.

```
update-alternatives --install /usr/bin/java java /opt/jdk/jdk1.8.0_122/bin/java 100
```

### ZooKeeper Installation

#### Download ZooKeeper

Zookeeper is included with Kafka download

#### Extract tar file

Extract tar file using the following command

```
$ cd /opt/appbin
$ tar -zxf zookeeper-3.4.6.tar.gz
$ cd zookeeper-3.4.6
$ mkdir data
```

#### Update Configuration File

Open Configuration File named conf/zoo.cfg using the command vi “conf/zoo.cfg” and all the following parameters to set as starting point.

```
$ vi conf/zoo.cfg
tickTime=2000
dataDir=/path/to/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
```

Once the configuration file has been saved successfully and return to terminal again, you can start the zookeeper server.

#### Start ZooKeeper Server

```
$ bin/zkServer.sh start
```

After executing this command, you will see output similar to the one shown below−

```
$ JMX enabled by default
$ Using config: /Users/../zookeeper-3.4.6/bin/../conf/zoo.cfg
$ Starting zookeeper ... STARTED
```

#### Start Zookeeper CLI

```
$ bin/zkCli.sh
```

After typing the above command, you will be connected to the zookeeper server and will get the below response.

```
Connecting to localhost:2181
................
................
................
Welcome to ZooKeeper!
................
................
WATCHER::
WatchedEvent state:SyncConnected type: None path:null
[zk: localhost:2181(CONNECTED) 0]
```

#### Stop Zookeeper Server

After connecting the server and performing all the operations, you can stop the zookeeper server with the following command −

```
$ bin/zkServer.sh stop
```

### Apache Kafka Installation

Let us continue with the following steps to install Kafka on your machine.

#### Download Kafka

To install Kafka, download a [compatible binary ](https://app.gitbook.com/@invariant/s/documents/~/drafts/-M-sB5niACjAw3eaWzlo/platform/apache-kafka/compatible-kafka-versions)version. &#x20;

In this document, we are working with the 1.1.1 version – **kafka\_2.11\_1.1.1.tgz**&#x20;

#### Extract the tar file

Extract the tar file using the following command −

```
$ cd /opt/appbin
$ tar -zxf kafka_2.11_1.1.1.tar.gz
$ cd kafka_2.11_1.1.1
```

Now you have downloaded the latest version of Kafka on your machine.

#### Start Kafka Server

Start the zookeeper server as shown earlier. Next start the Kafka server using&#x20;

```
$ bin/kafka-server-start.sh config/server.properties
```

Once the server starts, you will see output similar to shown below&#x20;

```
$ bin/kafka-server-start.sh config/server.properties
[2019-12-12 10:15:30,550] INFO KafkaConfig values:
request.timeout.ms = 30000
log.roll.hours = 168
inter.broker.protocol.version = 1.1.1.X
log.preallocate = false
…………………………………………….
…………………………………………….
```

#### Stop Kafka  Server

After performing all the operations, you can stop the server using the following command −

```
$ bin/kafka-server-stop.sh config/server.properties
```

This completes Kafka Server installation from the tar.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.invariant.io/platform/apache-kafka/installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
