web-dev-qa-db-ja.com

Kafka=ストリーミングの同時実行?

基本的なKafkaあるトピックからレコードを読み取り、処理を行い、別のトピックにレコードを出力するストリーミングコードがあります。

Kafka=ストリーミングは並行性を処理しますか?.

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

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

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

19
clay

どのようにKafka=ストリーミングは並行性を処理しますか?すべてが単一のスレッドで実行されますか?これはドキュメントに記載されていません。

これは http://docs.confluent.io/current/streams/architecture.html#parallelism-model で詳細に文書化されています。ここに逐語的にコピーアンドペーストしたくありませんが、理解すべき重要な要素はpartitions(IM。 Kafka Streamsは、処理中のすべてのデータストリームがKafkaを通過するわけではないため、ストリームは「ストリームパーティション」に一般化されます) Kafka(ブローカー/サーバー側)およびKafka Streams API(クライアント側)を使用するストリーム処理アプリケーションの。

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

パーティションの処理パーティションは常に単一の「スレッド」のみによって実行されるため、同時実行の問題が発生することはありません。だが...

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

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

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

Kafkaのストリーム処理エンジンは間違いなく推奨されており、実際に大規模なシナリオで実際に使用されています。比較ベンチマークの作業はまだ行われていますが、多くの場合、Kafka Streamsベースのアプリケーションはより高速であることが判明しています。 LINEエンジニアのブログ:Applying Kafka内部メッセージ配信パイプラインのストリーム アジア最大のソーシャルプラットフォームの1つであるLINE Corp(2億2,000万人以上のユーザー)による記事の場合、KafkaとKafka毎秒数百万のイベントを処理する本番環境のStreams API。

27
Michael G. Noll

Kstreams config num.stream.threadsを使用すると、1からのスレッド数をオーバーライドできます。ただし、ストリーミングアプリケーションの複数のインスタンスを実行し、それらすべてが同じコンシューマーを実行することが望ましい場合がありますグループ。そうすれば、最適なパーティション分割を得るために必要な数のインスタンスをスピンアップできます。

6
Nicholas