StormとHadoop間のトレードオフ(MapReduce)


12

データ処理のためにHadoopクラスタでStormとMapReduceを選択する際のトレードオフについて、誰かが親切に教えてもらえますか?もちろん、明白なものは別として、Hadoop(HadoopクラスターのMapReduceを介した処理)はバッチ処理システムであり、Stormはリアルタイム処理システムです。

私はHadoop Eco Systemを少し使用しましたが、Stormは使用していません。たくさんのプレゼンテーションや記事を調べた後、満足できる包括的な答えを見つけることができませんでした。

注:ここでのトレードオフという用語は、同様のものと比較することを意図したものではありません。バッチ処理システムにない結果をリアルタイムで取得することの結果を表すことを目的としています。

回答:


13

MapReduce:フォールトトレラントな分散計算フレームワーク。MapReduceを使用すると、ハードウェアによる障害を防ぐために多くの作業を行うことで、膨大な量のデータを操作できます。MapReduceは処理速度が遅いため、その場で結果を計算するのには適していません。(典型的なMapReduceジョブは、マイクロ秒ではなく、数分または数時間かかります)

MapReduceジョブは、ファイル(またはデータストア)を入力として受け取り、結果のファイルを書き込みます。これらの結果をアプリケーションで使用できるようにする場合、このデータをアクセス可能な場所に配置するのはユーザーの責任です。これはおそらく低速であり、表示できる値と、現在の状態のシステムを表す値との間に遅れが生じます。

リアルタイムシステムの構築にMapReduceを使用することを検討する際に重要な違いは、モデルのトレーニングとモデルの適用です。モデルパラメーターがすぐに変更されないと思われる場合は、それらをMapReduceに適合させ、モデルを適用するときにこれらの事前適合パラメーターにアクセスするメカニズムを使用できます。

Storm:リアルタイムのストリーミング計算システム。Stormはオンラインフレームワークであり、この意味で、実行中のアプリケーションと対話するサービスを意味します。MapReduceとは対照的に、アプリケーションで処理される際に(ファイル全体ではなく)小さなデータを受け取ります。データに対して実行する操作のDAGを定義します。Stormの一般的で単純な使用例は、カウンターを追跡し、その情報を使用してリアルタイムダッシュボードに入力することです。

Stormには、データの永続化とは何の関係もありません(必ずしも)。ここで、ストリーミングは、気になる情報を保持し、残りを捨てることを意味する別の方法です。実際には、おそらくデータを既に記録している永続化レイヤーがアプリケーションに存在するため、懸念の適切かつ正当な分離になります。

詳細を知りたい場合... パラメーターをMRに適合させ、モデルを別の方法適用するリアルタイムシステムについて詳しく知りたい場合は、リアルタイムの推奨エンジンの構築に関する講演のスライドをご覧ください。 HBase。

リアルタイムのカウントと永続性を興味深い方法で融合した優れた論文は、Google News Personalization:Scalable Online Collaborative Filteringです。

MRとStormのもう1つの興味深い結婚はSummingBirdです。Summingbirdでは、StormまたはMRを介して適用できるデータ分析操作を定義できます。


9

これは、フライパンと銀製品の引き出しとのトレードオフについて尋ねるようなものです。彼らはあなたが比較するものではありません、本当に。大規模なプロジェクトの一部としてそれらを一緒に使用できます。

Hadoop自体は1つではありませんが、HDFS、Hive、HBase、MapReduceなどのサービスのフェデレーションの名前です。Stormは、HDFSやHBaseなど、これらのサービスの一部で使用するものです。これは、ストリーム処理フレームワークです。拡張されたHadoopエコシステムには、Spark Streamingのような他のものがあります。

いつストリーム処理フレームワークを選択しますか?ほぼリアルタイムで新しいデータに対応する必要がある場合。この種のツールが必要な場合は、この種のツールもデプロイします。


Hadoop EchoシステムのMapReduceを介した処理は、一般的に使用される用語であるため、単にHadoopと呼ばれます(技術的には間違っていますが、それに応じて質問を変更しました)。
mbbce 14年

私は間違っているかもしれませんが、それにはリアルタイムに近い処理を行うこと以上のものがあると思います。それらの間にトレードオフがなければ、誰もがほぼリアルタイムで何かをしたいと思うでしょう。ハイブリッドアプローチにより、両方の世界の利点を(ある程度)得ることができます。それがSummingbirdが作成された理由です。
mbbce 14年

1
大きな違いは、ストリーム処理システムはデータに1回触れるだけで、それ自体には長期的な状態がないことです。一部の問題はこの方法では解決できません。これで問題のある問題の場合、最初にデータを(読み取り可能な)ストレージに永続化する必要のないシステムを使用する方が高速です。MapReduceは本質的にStormよりも遅くありません。両方ともコンテナです。それらは異なる問題に対する異なるパラダイムです。
ショーンオーウェン14年

長期の永続的な状態を持たないということは、そのようなリアルタイムに近いシステムが長期間にわたって入力の更新を蓄積できないことを意味しますか?これについてさらに議論するリソースを参照してもらえますか?
mbbce 14年

これは、ストリーミングシステムの一種の定義です。長期的な状態に自由にアクセスできるシステムを想像すると、それは本当にストリーミングではありません。
ショーンオーウェン14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.