今後の勉強にあたり、Apache Kafkaを使ってみようかなと思いまして。
まずは、Apache Kafkaをインストールしてみたいと思います。
また、参考にしたサイトはこちら。
Apache Kafka, 他とは異なるメッセージングシステム
シシド・カフカさんが気になって調べていたら Apache Kafka 入門していたメモ - ようへいの日々精進XP
Apache Kafka ―入門からTrifectaを用いた可視化まで―
Apache Kafkaの説明自体は、このあたりを参照と…。
インストール
環境はUbuntu Linux、JavaはOracle JDK 8がインストール済みの状態を前提とし、基本的にはQuickstartに沿って
進めていきます。
まずは、Apache Kafkaのバイナリをダウンロードします。
現時点の最新版は0.10.2.0で、どのScalaのバージョンを使ったApache Kafkaを選択するかですが、ここは
推奨されている2.12のものを使うことにしました。
ダウンロードして、展開。
$ wget http://ftp.jaist.ac.jp/pub/apache/kafka/0.10.2.0/kafka_2.12-0.10.2.0.tgz $ tar -zxvf kafka_2.12-0.10.2.0.tgz $ cd kafka_2.12-0.10.2.0
ZooKeeperを起動します。
$ bin/zookeeper-server-start.sh config/zookeeper.properties
daemonとして起動したい場合は、「-daemon」オプションを付与すればOKです。
$ bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
続いて、Apache Kafkaの起動。
$ bin/kafka-server-start.sh config/server.properties
こちらも、「-daemon」オプション付きでdaemonとして起動することができます。
$ bin/kafka-server-start.sh -daemon config/server.properties
ZooKeeprも、Apache Kafkaも、ログは「logs」ディレクトリに出力されるようです。
$ ls -l logs total 80 -rw-r--r-- 1 xxxxx xxxxx 10165 Feb 25 09:22 controller.log -rw-r--r-- 1 xxxxx xxxxx 0 Feb 25 09:20 kafka-authorizer.log -rw-r--r-- 1 xxxxx xxxxx 0 Feb 25 09:20 kafka-request.log -rw-r--r-- 1 xxxxx xxxxx 4394 Feb 25 09:22 kafkaServer-gc.log -rw-r--r-- 1 xxxxx xxxxx 15546 Feb 25 09:22 kafkaServer.out -rw-r--r-- 1 xxxxx xxxxx 725 Feb 25 09:22 log-cleaner.log -rw-r--r-- 1 xxxxx xxxxx 21357 Feb 25 09:22 server.log -rw-r--r-- 1 xxxxx xxxxx 684 Feb 25 09:22 state-change.log -rw-r--r-- 1 xxxxx xxxxx 0 Feb 25 09:21 zookeeper-gc.log -rw-r--r-- 1 xxxxx xxxxx 12098 Feb 25 09:22 zookeeper.out
これで、とりあえずApache Kafkaを使う準備が整いました。
Topicを作ってみる
そのまま手順に習い、次にTopicを作ってみます。今回はTopicの名前は、「quickstart-topic」としました。
$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic quickstart-topic
「localhost:2181」というのは、ZooKeeperへのアクセス先ですね。
今のTopicの一覧は、「kafka-topics.sh」で確認することが可能なようです。
$ bin/kafka-topics.sh --list --zookeeper localhost:2181 quickstart-topic
Producer/Consumerを試す
Topicを作ったので、こちらを使うProducerとConsumerを作成してみます。Quickstartにもあるように、Apache Kafkaに
コンソール用のProducer/Consumerが付属しているようなので、こちらを使用。
Producerの作成。
$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic quickstart-topic
適当にメッセージを放り込みます。
Hello World!! Hello Apache Kafka!!
Consumer側も起動します。すると、送信したメッセージを受け取ることができます。
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic quickstart-topic --from-beginning Hello World!! Hello Apache Kafka!!
OKそうですね。
Trifectaを使ったWeb UIを見る
参考サイトを見ていると、TrifectaというWeb UIがあるようなので、こちらも導入してみましょう。
Apache Kafka ―入門からTrifectaを用いた可視化まで―
Webサイトを見るとビルドしないといけなさそうな雰囲気ですが、GitHub上の「releases」から
最新のバイナリがダウンロードできそうなので、こちらを使ってみます。
今回は、v0.22 RC8を使用します。ダウンロードして展開。
※使っているApache Kafkaのバージョンが合わない気がしますが、とりあえずパス
$ wget https://github.com/ldaniels528/trifecta/releases/download/v0.22.0rc8-0.10.1.0/trifecta-ui-0.22.0rc8b-0.10.1.0.zip
$ unzip trifecta-ui-0.22.0rc8b-0.10.1.0.zip
$ cd trifecta-ui-0.22.0rc8b-0.10.1.0
「trifecta-ui」コマンドで、Web UIが起動します。
$ bin/trifecta-ui
「http://[Trifectaが動作しているホスト]:9000/#/inspect?mode=brokers」で、UIを見ることができます。
Topicに入っているメッセージを見ることもできるようです。
まずはこんなところではないでしょうか。これから、少しずつ使っていってみましょう。