2017-04-05 3 views
1

私はカフカで治療を配布するソリューションを探しています。 私は数百万の独立したエントリーで何らかの計算をしなければなりません。 3つの異なるVMに3つのカフカブローカーをインストールし、3つのパーティションのトピックに3つの異なるスレッドデータを生成して開始します。アイデアは、その後、同じコンシューマ・グループ内の3人のコンシューマを持つパーティションを消費し、他のプロセスの別のトピックに結果を格納することでした。 悲しいことに、1つのパーティションだけにすべてを格納することになりました。カフカ:プロセスとストレージを配布する

完全な並列方法で異なるトピックにデータを生成することは可能ですか? 1人のプロデューサーがX分ごとに各パーティションにほぼ同じ量のデータを送ることができればさらに良いでしょう。

私はkafka_2.11-0.10.2.0ブローカでjava kafka-clients 0.10.2.0を使用しています。

+0

あなたの設定は正しいようですが、メッセージが1つのパーティションだけを通過することをどのように知っていますか? 'bin/kafka-topics.sh --describe --zookeeper ZOOKEEPER:2181 --topic TOPIC' – ImbaBalboa

+0

/tmp/kafkaのサイズが1つのパーティションにしかないことが分かりました。 -logs /は1台のコンピュータでしか上手くいかず、他のコンピュータではまったく変更がありませんでした。ここでコマンドの結果は:トピック:Trajectoires \t PartitionCount:3 \t ReplicationFactor:1 \t Configsに: \tトピック:Trajectoires \tパーティション:0 \tリーダー:2 \t複製:2 \t ISR:2 \tトピック:Trajectoires \tパーティション:1 \tリーダー:3つの\tレプリカ:3 \t ISR:3 \tトピック:Trajectoires \tパーティション:2 \tリーダー:2つの\tレプリカ:2 \t ISR:2 – GrinnS

+0

まずあなたがリーダーであるので、あなたが唯一の2つのブローカーが使用されていることを見ることができます2または3 1つのパーティションに1つのブローカーが必要です。 – ImbaBalboa

答えて

4

データはキーによって仕切られて、ありがとうございます。したがって、すべてのレコードが同じキーを持つ場合、それらはすべて同じパーティションに移動します。

書き込み元のパーティションをプロデューサに明示的に指定するか、ランダム配布を行うnull -keysを使用することができます。