はじめに
「手を動かして学ぶ!KafkaとPythonによるAWSストリーミングデータ分析入門【30日チャレンジ】」4日目: Kafkaコンソールツールで基本操作を試す!です。昨日はDockerを使ってKafka環境をローカルに構築しました。
今日は、この環境を使ってKafkaのコンソールツールに触れ、トピックの作成やデータの送受信といった基本的な操作を実際に体験してみましょう。
1. ターミナルからKafkaコンテナに接続する
まず、Kafkaのコマンドを実行するために、ターミナルからDockerコンテナの内部に入ります。
以下のコマンドを実行してください。
docker exec -it kafka /bin/bash
-
docker exec -it
:実行中のコンテナ内でコマンドを実行するための命令です。 -
kafka
:docker-compose.yml
で指定したサービス名(コンテナ名)です。 -
/bin/bash
:コンテナ内でbashシェルを起動します。
このコマンドが成功すると、ターミナルの表示がコンテナ内部のものに変わります。
root@<container_id>:/opt/bitnami/kafka#
これで、Kafkaのコマンドを実行する準備が整いました。
2. トピックの作成
Kafkaのデータをやり取りするには、まずトピックを作成する必要があります。今回はtest-topic
という名前のトピックを作成してみましょう。
以下のコマンドを実行してください。
kafka-topics.sh --create --topic test-topic --bootstrap-server 127.0.0.1:9092
-
kafka-topics.sh
:トピック関連の操作を行うためのツールです。 -
--create
:トピックを作成するためのオプションです。 -
--topic test-topic
:作成するトピック名を指定します。 -
--bootstrap-server
:接続するKafkaブローカーのアドレスを指定します。docker-compose.yml
で設定した127.0.0.1:9092
を使用します。
トピックが正常に作成されると、「Created topic test-topic.」のようなメッセージが表示されます。
作成したトピックの一覧を確認
以下のコマンドで、作成済みのトピック一覧を確認できます。
kafka-topics.sh --list --bootstrap-server 127.0.0.1:9092
test-topic
が表示されていれば成功です。
3. コンソールプロデューサーでデータを送信する
次に、トピックにデータを送信するプロデューサーを動かしてみましょう。
以下のコマンドを実行してください。
kafka-console-producer.sh --topic test-topic --bootstrap-server 127.0.0.1:9092
-
kafka-console-producer.sh
:コンソールからデータを送信するためのツールです。
コマンドを実行すると、入力待ちの状態になります。ここでテキストを入力してEnterキーを押すと、そのテキストデータがKafkaのtest-topic
に送信されます。
>hello kafka
>this is a test message
>end of message
データの送信を終えるには、Ctrl + C
を押してください。
4. コンソールコンシューマーでデータを受信する
最後に、トピックからデータを読み取るコンシューマーを動かしてみましょう。
別のターミナルウィンドウを開き、再度Kafkaコンテナに接続してください。
docker exec -it kafka /bin/bash
次に、以下のコマンドを実行します。
kafka-console-consumer.sh --topic test-topic --bootstrap-server 127.0.0.1:9092 --from-beginning
-
kafka-console-consumer.sh
:コンソールにデータを表示するためのツールです。 -
--from-beginning
:過去に送信されたデータも含めて、トピックの先頭からデータを読み取るためのオプションです。これを付けないと、コマンド実行後に送信されたデータしか表示されません。
コマンドを実行すると、先ほどプロデューサーから送信したデータが順番に表示されるはずです。
hello kafka
this is a test message
end of message
データが表示されたら、コンシューマーは新しいデータが送信されるのを待ち続けます。先ほどのプロデューサーウィンドウに戻り、新しいメッセージを送信してみてください。コンシューマーのウィンドウにリアルタイムでデータが表示されるのが確認できるでしょう。
まとめと次回予告
今日は、Kafkaのコンソールツールを使って、トピックの作成、データの送信(プロデューサー)、受信(コンシューマー)という基本的なデータフローを体験しました。
これで、Kafkaがどのようにデータをやり取りしているかのイメージが掴めたはずです。
明日は、いよいよPythonを使って、プログラムからKafkaを操作する方法を学びます。
5日目: PythonからKafkaに接続するライブラリconfluent-kafka-python
をセットアップ
お楽しみに!