Apache Kafkaをセットアップ(続き)

Hadoop関連(全部俺) Advent Calendar 2014:22日目の記事です
昨日 Kafka のセットアップに失敗してしまったので、切り分けのために5ノードのLXCの環境を作って再度試してみました。

Kafkaのインストール

昨日のQuickstart VM環境と異なるのは、ノード数が5、英語環境というところです。
Screenshot from 2014-12-22 17&%35&%01

サービスの追加

昨日と同じようにKafkaサービスを追加します。
Screenshot from 2014-12-22 17&%35&%33

依存関係

Screenshot from 2014-12-22 17&%35&%45

ロールの割り当て

5ノードあるので、マスター以外の4ノードにロールを割り当てました。
Screenshot from 2014-12-22 17&%35&%57Screenshot from 2014-12-22 17&%36&%21

変更の確認

Screenshot from 2014-12-22 17&%36&%48

進行状況

Screenshot from 2014-12-22 17&%38&%43なんと、、、問題なく成功してしまいました。
Screenshot from 2014-12-22 17&%38&%53再度Cloudera Quickstart VMで試してみなければいけないのですが、せっかくインストールできたので、動作確認してみます。
Screenshot from 2014-12-22 17&%49&%33

Kafkaの動作確認

それでは動作確認です。KafkaのドキュメントにあるQuick Startに従って(若干CDHではコマンドが違いますが)確認しましょう。
Kafkaはイベントの生成者と消費者が必要なので、2枚のターミナルを開きます。
が、ディレクトリが作成できない(書き込み権限がない)ので失敗してしまいました。
Cloudera Managerがセットアップするディレクトリパスがおかしいか、パーミッションの設定が足りないんでしょうかね。技術評価版なので、今回はあまり考えずにディレクトリを作成し、読み書き権限を付与しました。
[shell]
kawasaki@hadoop11:~$ kafka-topics --create --zookeeper hadoop11.localdomain --replication-factor --partitions 1 --topic test
mkdir: cannot create directory `/opt/cloudera/parcels/CLABS_KAFKA-0.8.1.1-1.kafka1.0.0.p0.14/bin/../lib/kafka/bin/../logs': Permission denied
[/shell]
[shell]
kawasaki@hadoop11:~$ sudo mkdir -p /opt/cloudera/parcels/CLABS_KAFKA-0.8.1.1-1.kafka1.0.0.p0.14/bin/../lib/kafka/bin/../logs
kawasaki@hadoop11:~$ sudo chmod 777 /opt/cloudera/parcels/CLABS_KAFKA-0.8.1.1-1.kafka1.0.0.p0.14/bin/../lib/kafka/bin/../logs
[/shell]
 

トピックの作成

test2という名前のトピックを作成します。
[shell]
kawasaki@hadoop11:~$ kafka-topics --create --zookeeper hadoop11.localdomain:2181/kafka --replication-factor 1 --partitions 1 --topic test2
Created topic "test2".
[/shell]

作成したトピックを確認

事前に作った testと今回作ったtest2 トピックが作成されていますね。
[shell]
kawasaki@hadoop11:~$ kafka-topics --zookeeper hadoop11.localdomain:2181/kafka --list
test
test2
kawasaki@hadoop11:~$
[/shell]

プロデューサーを起動

端末からKafkaクラスタの先ほど作成したトピックに対して、標準入力からメッセージを送ってみます。
[shell]
kawasaki@hadoop11:~$ kafka-console-producer --broker-list hadoop11.localdomain:9092 --topic test2
[/shell]
入力待ちになるので、適当なメッセージを入力します。
[shell]
This is a test
test
test
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[/shell]

コンシューマを起動

別の端末から下記コマンドを入力して、メッセージを標準出力に出力します。先ほどプロデューサから送ったメッセージが届いていますね。
[shell]
kawasaki@hadoop11:~$ kafka-console-consumer --zookeeper hadoop11.localdomain:2181/kafka --topic test2 --from-beginning
This is a test
test
test
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[/shell]
Kafkaは一定期間メッセージを保持しているので、どんな順序でもメッセージを受信(消費)できます。興味があればもう一度同じコマンドを入力し、同じメッセージが表示されることを確認してください。
[shell]
kawasaki@hadoop11:~$ kafka-console-consumer --zookeeper hadoop11.localdomain:2181/kafka --topic test2 --from-beginning
This is a test
test
test
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[/shell]
とりあえず動いたので満足、、、はしていないのですが、今日はここまでに。

コメント

  1. […] 昨年Cloudera Labで実験目的でダウンロードできるようになっていたのでKafkaのインストールを試したことがありました(過去ログ1 2 3 )が、晴れて卒業して正式サポートになりました。 […]