0

私は Hadoop、MapReduce、ビッグ データに不慣れで、私が取り組んでいるプロジェクトにとって非常に興味深い特定のユース ケースの実行可能性を評価しようとしています。ただし、達成したいことが A) 可能か、B) MapReduce モデルで推奨されるかはわかりません。

基本的に、大量のウィジェット (既知のデータ構造) と価格設定モデル (JAR ファイルで成文化) があり、ウィジェットと価格設定モデルのすべての組み合わせを実行して、全体の価格設定の結果を決定できるようにしたいと考えています。モデルの順列。価格モデル自体が各ウィジェットを調べ、モデル内の決定木に基づいて価格を決定します。

これは、コモディティ インフラストラクチャの観点からは並列処理に意味がありますが、技術的な観点からは、MR ジョブ内で外部モデルを実行できるかどうか、実用的な観点からは、ユース ケースを強制しようとしているかどうかはわかりません。技術に。

したがって、問題は可能になります。この方法で実装することは理にかなっていますか? そうでない場合、このシナリオにより適した他のオプション/パターンは何ですか?

EDIT 時間の経過とともにボリュームとバリエーションが増えます。ここでの議論のために、現在、数テラバイトのウィジェットと数十の価格モデルがあると仮定します。その後、数テラバイトや数百の価格モデルに成長し、ウィジェットが変更または追加されたり、価格モデルの新しいカテゴリが導入されたりすると、順列の実行が頻繁に発生することが予想されます。

4

1 に答える 1

0

確かに、スケーラブルで並列化可能なソリューションが必要であり、hadoop はそれを実現できます。Hadoop の世界に適合するように、ソリューションを少し調整する必要があります。

まず、実際の実装や表現について何も知らなくても任意のモデルを任意のウィジェットに適用できるように、モデルとウィジェットに共通のインターフェースを実装させる必要があります (ここでは非常に抽象的に話します)。

次に、モデルとウィジェットの両方を ID で参照できる必要があります。これにより、モデルの ID とウィジェットの ID を保持するオブジェクト (書き込み可能オブジェクト) を構築できるようになり、ウィジェットとモデルのクロス積で 1 つの「セル」を表すことができます。これらのインスタンスを複数のサーバーに分散し、その際にモデルのアプリケーションをウィジェットに複数のサーバーに分散します。これらのオブジェクト (クラス ModelApply と呼びます) は、特定のモデルからウィジェットへのアプリケーションの結果を保持し、hadoop を使用して通常の方法で処理し、最適なアプリケーションに再投稿できます。

3 番目に、これはトリッキーな部分です。モデルとウィジェットの実際の外積を計算する必要があります。モデルの数 (したがってモデル ID の数) は、せいぜい数百になると言います。これは、ID のリストをマッパーのメモリにロードし、そのリストをウィジェット ID にマップできることを意味します。マッパーの map() メソッドを呼び出すたびに、ウィジェット ID が渡され、モデルごとに ModelApply の 1 つのインスタンスが書き出されます。

とりあえず置いておきます。

于 2012-10-02T17:23:58.700 に答える