druid/docs/content/tutorials/tutorial-kafka.md

86 lines
3.3 KiB
Markdown
Raw Normal View History

2016-01-06 00:27:52 -05:00
---
layout: doc_page
---
# Tutorial: Load streaming data from Kafka
2016-01-06 00:27:52 -05:00
## Getting started
This tutorial demonstrates how to load data from a Kafka stream, using the Druid Kafka indexing service.
2016-01-06 00:27:52 -05:00
For this tutorial, we'll assume you've already downloaded Druid as described in
the [single-machine quickstart](index.html) and have it running on your local machine. You
2016-01-06 00:27:52 -05:00
don't need to have loaded any data yet.
## Download and start Kafka
2016-01-06 00:27:52 -05:00
2016-02-04 14:53:09 -05:00
[Apache Kafka](http://kafka.apache.org/) is a high throughput message bus that works well with
Druid. For this tutorial, we will use Kafka 0.10.2.0. To download Kafka, issue the following
2016-01-06 00:27:52 -05:00
commands in your terminal:
```bash
curl -O https://archive.apache.org/dist/kafka/0.10.2.0/kafka_2.11-0.10.2.0.tgz
tar -xzf kafka_2.11-0.10.2.0.tgz
cd kafka_2.11-0.10.2.0
2016-01-06 00:27:52 -05:00
```
Start a Kafka broker by running the following command in a new terminal:
```bash
./bin/kafka-server-start.sh config/server.properties
```
Run this command to create a Kafka topic called *wikipedia*, to which we'll send data:
2016-01-06 00:27:52 -05:00
```bash
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic wikipedia
2016-01-06 00:27:52 -05:00
```
## Enable Druid Kafka ingestion
2016-01-06 00:27:52 -05:00
We will use Druid's Kafka indexing service to ingest messages from our newly created *wikipedia* topic. To start the
service, we will need to submit a supervisor spec to the Druid overlord by running the following from the Imply directory:
2016-01-06 00:27:52 -05:00
```bash
curl -XPOST -H'Content-Type: application/json' -d @quickstart/tutorial/wikipedia-kafka-supervisor.json http://localhost:8090/druid/indexer/v1/supervisor
2016-01-06 00:27:52 -05:00
```
If the supervisor was successfully created, you will get a response containing the ID of the supervisor; in our case we should see `{"id":"wikipedia-kafka"}`.
2016-01-06 00:27:52 -05:00
For more details about what's going on here, check out the
[Druid Kafka indexing service documentation](http://druid.io/docs/{{druidVersion}}/development/extensions-core/kafka-ingestion.html).
2016-01-06 00:27:52 -05:00
## Load data
2016-01-06 00:27:52 -05:00
Let's launch a console producer for our topic and send some data!
2016-01-06 00:27:52 -05:00
In your Druid directory, run the following command:
2016-01-06 00:27:52 -05:00
```
cd quickstart
gunzip -k wikipedia-2015-09-12-sampled.json.gz
2016-01-06 00:27:52 -05:00
```
In your Kafka directory, run the following command, where {PATH_TO_DRUID} is replaced by the path to the Druid directory:
2016-01-06 00:27:52 -05:00
```bash
export KAFKA_OPTS="-Dfile.encoding=UTF-8"
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic wikipedia < {PATH_TO_DRUID}/quickstart/wikipedia-2015-09-12-sampled.json
2016-01-06 00:27:52 -05:00
```
The previous command posted sample events to the *wikipedia* Kafka topic which were then ingested into Druid by the Kafka indexing service. You're now ready to run some queries!
2016-01-06 00:27:52 -05:00
## Querying your data
2016-01-06 00:27:52 -05:00
After data is sent to the Kafka stream, it is immediately available for querying.
2016-01-06 00:27:52 -05:00
Please follow the [query tutorial](../tutorial/tutorial-query.html) to run some example queries on the newly loaded data.
2016-01-06 00:27:52 -05:00
## Cleanup
2016-01-06 00:27:52 -05:00
If you wish to go through any of the other ingestion tutorials, you will need to shut down the cluster and reset the cluster state by removing the contents of the `var` directory under the druid package, as the other tutorials will write to the same "wikipedia" datasource.
2016-01-06 00:27:52 -05:00
## Further reading
For more information on loading data from Kafka streams, please see the [Druid Kafka indexing service documentation](http://druid.io/docs/{{druidVersion}}/development/extensions-core/kafka-ingestion.html).