Hadoop関連(全部俺) Advent Calendar 2014:22日目の記事です
昨日 Kafka のセットアップに失敗してしまったので、切り分けのために5ノードのLXCの環境を作って再度試してみました。
Kafkaのインストール
昨日のQuickstart VM環境と異なるのは、ノード数が5、英語環境というところです。

サービスの追加
依存関係
ロールの割り当て
5ノードあるので、マスター以外の4ノードにロールを割り当てました。


変更の確認
進行状況
なんと、、、問題なく成功してしまいました。
再度Cloudera Quickstart VMで試してみなければいけないのですが、せっかくインストールできたので、動作確認してみます。

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]
とりあえず動いたので満足、、、はしていないのですが、今日はここまでに。




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