Apache Kafka 入門
今回は Apache Kafka の環境を構築して、いろいろ遊んでみたいと思います。
Apache Kafka とは?
Apache Kafka は2011年にLinkedInにより公開された OSS です。 大規模なストリーム処理を可能にする分散型メッセージングシステムであり、以下のような特徴を持っています。
- Fast : 機能よりもスループットを重視
- Scalable : 高スケーラビリティ
- Durable : メッセージをディスクにファイルとして保存し、クラスタ内でレプリカを作成することでデータの損失抑制
- Distributed by Design : 耐障害性のあるクラスタ設計
また Apache Storm との連携が容易であるという特徴もあります。
環境を構築してみる
今回は Mac OS X 上に環境を構築していこうと思います。
事前準備
Kafka を実行するには Java の実行環境と ZooKeeper が必要となるので準備しておきます。 以前作成した ZooKeeper のクラスタを使用しても良いのですが、今回はラクに環境構築を行うため Homebrew で ZooKeeper インストールします。
(Homebrew の導入については他の方の記事を参考にしてください。。)
$ brew install zookeeper
一応 Java についても確認しておきましょう。
$ java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
ZooKeeper のインストールと Java の確認が終わったら ZooKeeper を起動しておきましょう。
$ zkServer start ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo.cfg Starting zookeeper ... STARTED
これで事前準備終了です。
Kafka のダウンロード & 起動
以下のリンクからバイナリをダウンロードします。
今回は 0.10.2.1 を使用していきます。
$ wget http://ftp.jaist.ac.jp/pub/apache/kafka/0.10.2.1/kafka_2.10-0.10.2.1.tgz $ tar xzf kafka_2.10-0.10.2.1.tgz $ cd kafka_2.10-0.10.2.1
ダウンロードと解凍が完了したら Kafka を起動しましょう。
$ bin/kafka-server-start.sh config/server.properties
これで Kafka を使う準備が整ったので早速遊んでいきます。
Topic を作成してみる
今回は以下の値を使用して Topic を作成してみます。
オプション | 設定する値 |
---|---|
–replication-factor (レプリケーション数) | 1 |
–partitions (パーティション数) | 1 |
–topic (トピック名) | test |
$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
実際に Topic が作成されているかの確認は以下のコマンドで行うことができます。
$ bin/kafka-topics.sh --list --zookeeper localhost:2181 __consumer_offsets test
メッセージを Produce してみる
以下のようにすることで指定した Topic にメッセージを Produce (送信) することができます。 (hogehoge / Hello world が今回 Produce したメッセージです。)
$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test hogehoge Hello world
メッセージを Consume してみる
Produce したメッセージは以下のようにすることで Consume (取得) することができます。
$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning hogehoge Hello world
Kafka の終了
Kafka を終了させたい場合は以下のようにすればおkです。
$ bin/kafka-server-stop.sh
まとめ
今回は Kafka の構築と基本的な操作についてまとめてみました。 そのうち Kafka の設定とかについてまとめられたらなあと思います!
(よく考えたらダウンロードした Kafka のパッケージ内に ZooKeeper のスクリプトあるじゃん。。)