0

私は勉強しようとしていますthis Flink CEP例です。私は、この例では、&データを消費する&を生成している単一のアプリケーション(ストリーミングアプリケーションの一種)を作成したことを確認します。彼らは(Kafkaのように)中間にストリーミングレイヤーを配置していません。今のところ、この用途には単一のアプリケーションで十分です。今、私がKafkaを使用すれば、2つのアプリケーションが必要になることを知っています。カフカtopic..Iからデータを消費するためのカフカのトピックに&他のデータを摂取するための一つは、私は答えたばかりではないのです::いくつかの質問を持っている彼らは、この中で(カフカのような)任意のストリーミング層を使用していないのはなぜハドープでのストリーミングの使用

  1. example ??

  2. &ストリーミングが必要な場合は??

  3. FLINK CEPの例を参照すると、私は&がどのように ストリーミング層(カフカ/キネシスのように)遊びに来る場所を知りたいです?

  4. カフカ/キネシスのようなストリーミングレイヤーが入ってくる場合のメリットとデメリットは何ですか?

+0

Kafkaはメッセージキューですが、Flinkのようなストリーミング技術のためのメッセージのソース/シンクかもしれませんが、Flinkはストリーム処理を行っています。 –

+0

私はストリーミングをいつ行うべきかを知りたいですか?いつストリーミングは本当に必要ではない?? – Akki

答えて

1

あなたの質問に1つ1つ答えてください。

は、なぜ彼らは、この例では(カフカのような)任意のストリーミング層を使用していませんか?

私はあなたがフリンクのストリーミングについて誤解していると思います。まず第一に、Flinkはストリーム処理エンジンです。基本的にFlinkが処理しているものはすべてストリームです。

多くの場合、Flinkはストリームモードまたはバッチモードで動作することができますが、Flinkバッチは有限の長さのストリームの特別なケースです。ストリームは通常無限大です。だから、すべてがFlinkの出来事の流れです。ですから、質問はFlinkがデータを取得する場所です。

Flinkは多くのソースからデータを読み取ることができ、KafkaはFlinkで使用できるソースの1つです。 Flinkリポジトリのthisthisフォルダを見てください。それらには、Kafka、Kinesis、RabbitMQなどのFlinkにさまざまなソースが含まれています。 Flinkの観点からは、データが外部システムから来ているか、ファイルから読み込まれているか、または生成されているかどうかは関係ありません。

Flinkユーザーは、Flinkランタイムで使用されるデータソースを実装できます。これを行うには、RichSourceFunctionクラスを拡張し、runメソッドを実装する必要があります。例を単純化し、その単純なデータソースを使用することにしましたどのようなデータソースのチュートリアルの作成者を使用するために重要ではありませんので

public class DummySource extends RichParallelSourceFunction<Integer> { 
    public void run(SourceContext<Integer> sourceContext) throws Exception { 
    // You can specify custom termination conditions 
    // the source should not be inifite 
    int i = 0; 
    while (true) { 
     // provide an event for Flink processing 
     sourceContext.collect(i); 
     i++; 
    } 
    } 
} 

:たとえば、このデータソースは、0から始まる番号の無限のストリームを生成します実際にあなたは例が意図的にCEPライブラリの要点を示すために単純化されカフカやキネシスなどの外部システムからのイベントデータを読み取るだろうが

MonitoringEvent monitoringEvent; 

int rackId = random.nextInt(shard) + offset; 
if (random.nextDouble() >= temperatureRatio) { 
    double power = random.nextGaussian() * powerStd + powerMean; 
    monitoringEvent = new PowerEvent(rackId, power); 
} else { 
    double temperature = random.nextGaussian() * temperatureStd + temperatureMean; 
    monitoringEvent = new TemperatureEvent(rackId, temperature); 
} 

sourceContext.collect(monitoringEvent); 

:乱数ジェネレータを使用してデータを生成します。ストリーミングが必要な

とき&? 「ストリーミング」によって

もしあなたがいないバッチを意味し、それはイベントが常に受信されているときに使用すると、あなたは近いツーリアルタイム処理時間を必要とすべきであると言うことは安全です。

カフカを使用する必要がある場合は、イベントのストリームの処理に使用したり、メッセージブローカーとして使用したり、ログ集計などに使用したりできます。 HereはApache Kafkaを使用できるユースケースのリストです。

FLINK CEPの例を参照すると、私はどのように&ストリーミング層は(カフカ/キネシスのように)遊びに来る場所を知りたいですか?

カフカ/キネシスのようなストリーミングレイヤーが入ってくると、どのようなメリットとデメリットがありますか?

は、実際のアプリケーションでは、カフカ/キネシスデータ・ソースまたは外部システムからデータを読み取り、異なるデータソースを使用します。

Kafkaは、RabbitMQのような既存のメッセージブローカーの代替品で、優れたパフォーマンス特性を備えていますが、Flinkで他のデータソースを使用することも、自分で作成することもできます。

関連する問題