5

私は、データストリーム上でマシンラーニングアルゴリズムを実行するためのPOCをやっています。
Spark Streaming - >複数のテーブルのデータを集計 - > Stream of Data上でMLLibを実行する - >出力を生成するというデータを取得するのが最初のアイデアでした。カフカストリーミング+スパークストリーミング+マシンラーニング

しかし、私はコンフルエントのカフカストリーミングを見ています。今私は混乱している!

質問:
1. Spark StreamingとKafka Streamingの違いは何ですか?
2.私はKafka Streaming + Spark Streaming + Machine Learningとどのように結婚することができますか?
3.私の考えは、バッチ訓練ではなく、テストデータを連続的に訓練することです。

お勧めします。

答えて

2

Apache Kafka Steamsはライブラリであり、埋め込み可能なストリーム処理エンジンを提供します。ストリームアプリケーションの処理にはJavaアプリケーションで使いやすく、フレームワークではありません。

私はいくつかのユースケースを約、さらにはcomparison with Apache flinkというカフカの著者から見つけました。

12

まず、「コンフルエントのカフカストリーミング」という用語は技術的に正しくありません。 (とは、コンフルエントによる)Apache Software Foundationの

  • によって "所有"

    1. それは、Apacheカフカの一部だカフカのストリームAPI(別名カフカがをStreamsの)
    2. と呼ばれていますので、 コンフルエントオープンソースコンフルエントエンタープライズ - 2つのオファーからコンフルエント両方がApache Kafka(したがって、Kafkaストリーム)

    しかし、Confluentは、Kafkaストリームを含むApache Kafkaに多くのコードを提供しています。違いについて

    (私はいくつかの主な違いを強調し、さらに詳細については、インターネットやドキュメントを参照してください:http://docs.confluent.io/current/streams/index.htmlhttp://spark.apache.org/streaming/

    スパークストリーミング:

    • マイクロバッチ処理(無本当の記録的無サブ秒の待ち時間
    • )ストリーム処理レコードごと
    • 限られたウィンドウ操作
    • なしApacheのスパークの
    • 一部イベント時間処理
    • 処理フレームワーク(動作し、展開することは難しい) - データ処理フレームワーク
    • 正確ワンス処理

    カフカストリーム

    • レコード別ストリーム処理
    • ms待ち時間
    • ri CHウィンドウ操作
    • ストリーム/テーブルの二重性
    • イベント時間、摂取時間、処理時間のセマンティクス
    • Javaライブラリ(実行して、展開が容易 - それは、他のと同じくらいのJavaアプリケーションです)の
    • 一部Apache Kafka - ストリーム処理プラットフォーム(つまり、一度にストレージと処理を提供します)
    • 少なくとも1回の処理(正確に1回の処理はWIPです。それはあなたが使用したいものの選択の問題だ - CF KIP-98KIP-129
    • 弾性、すなわち、動的にスケーラブル

    は、このように両方を「結婚」するいかなる理由がありません。

    私の個人的なテイクは、そのスパークはストリーム処理には適していません。 Kafka StreamsやApache Flink、Apache Storm、Apache Apexなどのフレームワークのようなライブラリを使用したい場合は、ユースケース(と個人的な好み)によって異なりますので、SO 。

    カフカストリームの主な差別化要因は、ライブラリであり処理クラスタを必要としないことです。 Apache KafkaはApache Kafkaの一部であるため、Apache Kafkaを既にインストールしている場合は、余分な処理クラスタを実行する必要がないため、全体的な配置が簡単になります。

  • 1

    私は最近、このトピックについての会議で発表しました。

    Apache Kafka StreamsまたはSpark Streamingは、通常、ストリーム処理(動作中のデータを処理)を介してリアルタイムで新しいイベントに機械学習モデルを適用するために使用されます。 Matthiasの答えはすでにその違いを論じている。

    最初に Apache Spark MLlib(またはH2O.aiまたはXYZ)のようなものを使用して、ヒストリカルデータセットを使用して最初に分析モデルを構築します。

    カフカストリームは、モデルのオンライントレーニングにも使用できます。しかし、私はオンライントレーニングにはさまざまな注意点があると思います。

    このすべてについては、スライドデッキ「​​」で詳しく説明しています。