Apache Kafkaをインストールして、コマンドラインツールを試す

Apache Kafkaをインストールして、produce, consumeしてみたメモです。



Apache Kafkaをインストールして、コマンドラインツールからproduce, consumeを試して動作確認してみました。
kafkaは色々な使い方が出来、設定もたくさんありますが、とりあえずデフォルトの設定で試してみます。

下記バージョンで試してみます。

  • kafka 2.0.0
  • zookeeper 3.4.13
  • Ubuntu 16
  • Java 1.8.0_181

O'Reilly本を基本に下記サイトを参考にしました。
https://kafka.apache.org/
https://kafka.apache.org/quickstart

zookeeper install

Kafkaではzookeeperでメタデータを管理してるので、先にzookeeperをインストールします。

https://zookeeper.apache.org/releases.html#download

https://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html

本家から最新をダウンロードして、解凍し、/usr/local/zookeeper に配置しました。

$ cd src/
$ wget http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
$ ll
-rw-rw-r--  1 pppurple pppurple 37191810  716 12:40 zookeeper-3.4.13.tar.gz
$ tar -zxf zookeeper-3.4.13.tar.gz
$ sudo mv zookeeper-3.4.13 /usr/local/zookeeper
$ sudo vi /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
$ sudo /usr/local/zookeeper/bin/zkServer.sh start

kafka install

Kafkaをインストールします。

https://www.apache.org/dyn/closer.cgi?path=/kafka/2.0.0/kafka_2.11-2.0.0.tgz

本家から最新をダウンロードして、解凍し、/usr/local/kafka に配置しました。

$ wget http://ftp.jaist.ac.jp/pub/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
$ ll
-rw-rw-r--  1 pppurple pppurple 55751827  729 05:01 kafka_2.11-2.0.0.tgz
$ tar -zxf kafka_2.11-2.0.0.tgz
$ sudo mv kafka_2.11-2.0.0 /usr/local/kafka
$ sudo mkdir /tmp/kafka-logs
$ sudo /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

動作確認

kafkaのアーカイブコマンドラインツールが入っているので、それを使ってproducerとconsumerを操作してみようと思います。

はじめにkafka-topics.shを利用してしてtopicを作成します。
testという名前で作成します。zookeeperのホスト、ポートを指定し、partitionは1にします。

$ /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Created topic "test".

topicが作成されたことを確認。

$ /usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
test
$ /usr/local/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
Topic:test      PartitionCount:1        ReplicationFactor:1     Configs:
        Topic: test     Partition: 0    Leader: 0       Replicas: 0     Isr: 0

kafka-console-producer.shを使用して、producerを立ち上げてメッセージを送信してみます。
--broker-listでbrokerのホスト、ポートを指定し、testトピックを指定します。

$ /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
>my test message.
>my test message!!!!
>my new test message!

同時にconsumerを立ち上げておいて、メッセージを取得出来ることを確認してみます。
kafka-console-consumer.shを使用して、consumerを立ち上げてメッセージを取得します。
--bootstrap-serverでbrokerのホスト、ポートを指定し、testトピックを指定します。
--from-beginningを指定して、一番最初のoffsetからメーッセージをpullします。

$ /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
my test message.
my test message!!!!
my new test message!

producerで送信したメッセージを取得出来ました。


次はjava clientで試そうと思います。


終わり。