嵐とHadoopの間のトレードオフ(MapReduce)
-
16-10-2019 - |
質問
データ処理のためにHadoopクラスターでStormとMapReduceを選択する際に関係するトレードオフについて誰かが親切に教えてもらえますか?もちろん、明白なものは別として、Hadoop(Hadoopクラスター内のMapReduceを介して処理)はバッチ処理システムであり、Stormはリアルタイム処理システムです。
私はHadoop Ecoシステムで少し働いてきましたが、Stormで働いていません。多くのプレゼンテーションや記事を調べた後、私はまだ満足のいく包括的な答えを見つけることができませんでした。
注:ここでのトレードオフという用語は、同様のものと比較することを意図していません。これは、バッチ処理システムに存在しない結果をリアルタイムにすることの結果を表すことを目的としています。
解決
MapReduce: :フォールトトレラント分散計算フレームワーク。 MapReduceを使用すると、ハードウェアによる障害を防ぐために多くの作業を行うことで、膨大な量のデータを操作できます。 MapReduceは、遅いため、その場で結果を計算するための選択肢がありません。 (典型的なMapReduceのジョブは、マイクロ秒ではなく数分または数時間を帯びます)
MapReduceジョブは、ファイル(または一部のデータストア)を入力として取得し、結果のファイルを書き込みます。これらの結果をアプリケーションで利用できる場合は、このデータをアクセス可能な場所に配置することはお客様の責任です。これは遅い可能性が高く、表示できる値と、現在の状態でシステムを表す値の間に遅れがあります。
リアルタイムシステムの構築でMapReduceを使用することを検討する際に重要な区別は、モデルをトレーニングし、モデルを適用することです。モデルパラメーターが迅速に変更されないと思われる場合は、MapReduceに適合し、モデルを適用するときにこれらの事前フィットパラメーターにアクセスするメカニズムを作成できます。
嵐: :リアルタイムのストリーミング計算システム。ストームはオンラインフレームワークであり、この意味で、実行中のアプリケーションと対話するサービスです。 MapReduceとは対照的に、アプリケーションで処理されているため、小さなデータ(ファイル全体ではなく)を受信します。データを実行する操作のDAGを定義します。ストームの一般的で単純なユースケースは、カウンターを追跡し、その情報を使用してリアルタイムのダッシュボードを入力することです。
ストームは、データを持続することで(必ずしも)何も関係ありません。ここでは、ストリーミングは、あなたが気にかけている情報を維持し、残りを捨てる別の方法です。現実には、おそらくあなたはアプリケーションに既にデータを記録している永続的な層を持っているので、これは懸念の良好で正当化された分離です。
もっと知りたいなら...パラメーターに適合するリアルタイムシステムについて詳しく知りたい場合は、モデルを別の方法で適用します HBaseにリアルタイムの推奨エンジンを構築するための講演のスライドを以下に示します。
興味深い方法でリアルタイムのカウントと持続性と結婚する優れた論文は Google Newsパーソナライズ:スケーラブルなオンラインコラボレーションフィルタリング
ミスターとストームのもう一つの興味深い結婚はそうです Summingbird. 。 Summingbirdを使用すると、StormまたはMRを介して適用できるデータ分析操作を定義できます。
他のヒント
これは、フライパンと銀製品の引き出しの間のトレードオフについて尋ねるようなものです。実際に比較する2つのことではありません。大規模なプロジェクトの一部として一緒に使用する場合があります。
Hadoop自体は一つのことではなく、HDF、Hive、HBase、MapReduceなどのサービスの連邦の名前です。ストームは、HDFやHBaseなどのこれらのサービスの一部で使用するものです。これは、ストリーム処理フレームワークです。 Spark Streamingなど、拡張Hadoopエコシステムには他のものがあります。
ストリーム処理フレームワークをいつ選択しますか?近い時間に新しいデータに反応する必要がある場合。この種のツールが必要な場合は、この種のツールも展開します。