文鳥大好きエンジニアのガラクタ置き場

文鳥さんに日々癒されているエンジニアが業務で直面したものについてまとめていく…予定。

Apache Kafka 入門

今回は Apache Kafka の環境を構築して、いろいろ遊んでみたいと思います。

kafka.apache.org

Apache Kafka とは?

Apache Kafka は2011年にLinkedInにより公開された OSS です。 大規模なストリーム処理を可能にする分散型メッセージングシステムであり、以下のような特徴を持っています。

  • Fast : 機能よりもスループットを重視
  • Scalable : 高スケーラビリティ
  • Durable : メッセージをディスクにファイルとして保存し、クラスタ内でレプリカを作成することでデータの損失抑制
  • Distributed by Design : 耐障害性のあるクラスタ設計

また Apache Storm との連携が容易であるという特徴もあります。

環境を構築してみる

今回は Mac OS X 上に環境を構築していこうと思います。

事前準備

Kafka を実行するには Java の実行環境と ZooKeeper が必要となるので準備しておきます。 以前作成した ZooKeeper のクラスタを使用しても良いのですが、今回はラクに環境構築を行うため Homebrew で ZooKeeper インストールします。

ponteru.hatenablog.com

(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 のダウンロード & 起動

以下のリンクからバイナリをダウンロードします。

kafka.apache.org

今回は 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 のスクリプトあるじゃん。。)