2016-10-11 11 views
8

1つのトピックからレコードを読み取り、処理して、別のトピックにレコードを出力する基本的なKafkaストリーミングコードがあります。カフカストリーミング同時実行性?

カフカストリーミングは並行処理をどのように処理しますか?すべてが単一のスレッドで実行されていますか?私はこれがドキュメントに記載されているとは思わない。

シングルスレッドの場合、大量のデータを処理するマルチスレッド処理のオプションが必要です。

マルチスレッドの場合、SQLデータベース接続が異なる処理スレッドで共有されるように、これがどのように動作し、リソースを処理するかを理解する必要があります。

Kafkaの組み込みストリーミングAPIは、他のオプション(Spark、Akka、Samza、Stormなど)と比べて大量のシナリオではお勧めできませんか?

答えて

13

カフカストリーミングは並行処理をどのように処理しますか?すべてが単一のスレッドで実行されていますか?私はこれがドキュメントに記載されているとは思わない。

これは、http://docs.confluent.io/current/streams/architecture.html#parallelism-modelで詳細に文書化されています。私はこれをそのままコピー・ペーストしたくはありませんが、IMHOを理解しておきたいのは、パーティションです(cf. Kafkaのトピック・パーティション参照、Kafka Streamsは「ストリーム・パーティション」として一般化されています)。パーティションは現在、Kafka Streams API(クライアント側)を使用するストリーム処理アプリケーションとKafkaの両方の並列性を決定するため、処理中のすべてのデータストリームがKafkaを経由するわけではありません。

シングルスレッドの場合は、大量のデータを処理するマルチスレッド処理のオプションが必要です。

処理パーティションはいつもあなたが同時実行の問題に実行されていない確実にシングル「スレッド」のみで行われます。しかし...

マルチスレッドの場合、SQLデータベース接続が異なる処理スレッドで共有されるように、これがどのように動作し、リソースを処理するかを理解する必要があります。

... Kafkaはトピックに多数のパーティションを持たせることができるため、並列処理が可能です。たとえば、トピックに100個のパーティションがある場合、最大100個のストリームタスク(または、アプリケーションのインスタンスを実行している各マシンが最大100台まで)がそのトピックを並行して処理できます。この場合も、すべてのストリームタスクは1つのパーティションに排他的にアクセスし、処理することになります。

カフカの組み込みストリーミングAPIは、他のオプション(Spark、Akka、Samza、Stormなど)と比べて大量のシナリオでは推奨されていませんか?

カフカのストリーム処理エンジンは、実際に大量のシナリオで実際に使用されることをお勧めします。比較ベンチマーキングの作業はまだ行われていますが、多くの場合、Kafka Streamsベースのアプリケーションはより高速になります。アジア最大のソーシャルプラットフォームの1つであるLINE Corp(220M +ユーザー)の記事については、LINE engineer's blog: Applying Kafka Streams for internal message delivery pipelineを参照してください。ここでは、毎秒数百万件のイベントを処理するためにKafkaとKafka Streams APIをどのように運用しているかを記述しています。

+1

LINEエンジニアのブログへのリンクが途中で壊れています。あなたはここにそれを見つけることができます:https://engineering.linecorp.com/en/blog/detail/80 – Esk

+0

ありがとう、更新された! –

+0

@ MichaelG.Nollストリームアプリケーションの単一インスタンスの複数のスレッド間でリソースを共有することはどうでしょうか。私のValueMapperがスレッドセーフでない場合は、複数のスレッドでアプリケーションインスタンスを実行することはできますか? – mrnakumar

4

kstreamsの設定num.stream.threadsでは、スレッド数を1から無効にすることができます。ただし、ストリーミングアプリの複数のインスタンスを実行して、すべて同じコンシューマグループ。そうすれば、最適なパーティショニングを得るために必要な数だけインスタンスをスピンアップできます。

関連する問題