Lambdaアーキテクチャ-マージレイヤー/クエリレイヤーの実装方法


7

ラムダアーキテクチャについて読んでいます。

それは理にかなっている。キューベースのデータ取り込みがあります。非常に新しいデータ用のメモリ内ストアがあり、古いデータ用のHDFSがあります。

これでデータセット全体ができました。私たちのシステムで。とても良い。

ただし、アーキテクチャ図は、マージレイヤーがバッチレイヤーとスピードレイヤーの両方を一度にクエリできることを示しています。

どうやってするか?

バッチレイヤーは、おそらくマップ削減ジョブまたはHIVEクエリです。スピードレイヤークエリは、おそらくスパーク上で実行されるscalaプログラムです。

これらをどのようにマージしますか?

何かアドバイスはありますか?


バッチプロセスを実行せずに、バッチの最後の既知の出力をクエリしている可能性があります。
Sean Owen

OK。では、バッチの既知の最新出力を、スパーク離散RDD内に格納されているストリーミングデータとどのようにマージしますか?
あまり知られていない

回答:


3

私が思うに、ラムダアーキテクチャを実装する際の主な問題は何ですか。これを解決する方法に関するいくつかの提案があります。

SparkとSpark Streamingの組み合わせは、元のラムダアーキテクチャ(通常はHadoopとStormに関係する)に優先します。 ここで読むの使用方法の一例SparkContextと別々にStreamingContext生成するために異なる RDD S、リアルタイムの結果を得るためにバッチ処理結果用と別のものを。

それをシステムに複製した後も、両方の種類のを照会する方法を考える必要がありますRDD。取るに足らないケースはunion、それらの両方だけです:

scala> rdd1.union(rdd2).collect

または、リンクされた例DStreamと同様に、新しいを作成しstateStreamて、リアルタイムの結果用にいくつかのキーを保持し、バッチの結果用に他のキーを保持することもできます。


つまり、ラムダアーキテクチャは少し風通しの良い妖精のようなものです。スライドで話しやすく、見た目もきれいですが、実際には実装はそれほど簡単ではありません。
あまり知られていない

または、より良いアナロジーは、「猫の鐘を鳴らす」ことを決定するマウスです。素晴らしい建築...しかし誰がやるのか?
あまり知られていない

3

ラムダアーキテクチャの目的について私が理解していることから、あなたのポイント:

バッチレイヤーは、おそらくマップ削減ジョブまたはHIVEクエリです。

意図したものではありません。バッチレイヤーは直接クエリされることを意図したものではなく、低レイテンシクエリのサービングレイヤー(おそらくシンプルなKey-Valueストア)にフィードします。

ラムダアーキテクチャ図

詳細については、http://lambda-architecture.net/をご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.